zoukankan      html  css  js  c++  java
  • LNMP环境搭建与配置

    lnmp就是 Linux+nginx + mysql + PHP,把Apache替换为Nginx;

    这里我用到的Linux环境为为centos,接下来就分步骤来一步步安装及测试。

    一、安装php

    参考链接:https://zhuanlan.zhihu.com/p/34422328
    在安装PHP之前需要安装一些依赖包,执行下面的命令就可以了,如果安装过请忽略
    yum install vim gcc gcc++ wget libxml2-devel wget -y

    1.下载php

    cd /usr/local/src/
    wget http://cn2.php.net/distributions/php-5.6.36.tar.gz

     解压源码包,创建账号

    tar zxf php-5.6.36.tar.gz
    useradd -s /sbin/nologin php-fpm

     其中php-5.6.36就是我们需要用到的压缩包,让我们进入目录进行安装

    cd php-5.6.34

    然后我们编译PHP文件生成makefile 文件,这里需要普及一个小的知识点,那就是fastcgi;

    php本来的请求是,当一个请求出现,PHP会启动一个进程来完成请求,然后关闭,但是这很耗费系统的资源,不符合我们的要求,我们需要php-fpm,然后可以监听php请求 ,如果有请求出现,那么开始提供进程来执行,如果业务多的话会创建一个新的,如果没有多余的请求的时候,php-fpm会释放掉多余的资源,而fastcgi就是php-fpm使用的前提,编译安装的时候必须加上这个参数。所以编译的时候需要加上--enable-fpm 选项

    ./configure --prefix=/usr/local/php --enable-fpm

    ./configure 就是就是编译makefile文件的工具 --prefix 就是指定安装PHP到哪个目录,执行完成之后下面的命令

    make && make install

    我们执行完成./configure 只是把我们的配置写入makefile文件,还没有安装,make 命令就是安装,到此我们就安装完成PHP;
    这时我们可以随意一个目录,建个文件index.php执行测试下
    touch index.php

    写入内容:
    <?php
    echo "hello world";

    然后保存退出,执行
    /usr/local/php/bin/php index.php

    这个时候输出hello world就代表文件执行成功,/usr/local/php/bin/php PHP文件执行的入口,如果我们要将PHP写如Linux环境变量,需要加入的目录为/usr/local/php/bin
    (补充)
    添加环境变量
    vim /etc/profile
    export PATH=$PATH:/usr/local/php/bin

    关闭shell窗口后都需要再执行一次source /etc/profile才能生效,这个问题需要在~/.bashrc文件最后添加source /etc/profile,这样问题便得到解决;

    二、安装mysql

    参考链接https://www.jianshu.com/p/276d59cbc529

    (安装过程务必保持文件路径的前后统一,否则可能会导致不可预期的结果)

    1、检查是否已经安装过mysql,执行命令

    rpm -qa | grep mysql

    如果有安装,则会显示该目录,删除即可:

    rpm -e –nodeps 该目录

    2、查询所有Mysql对应的文件夹

    whereis mysql

     存在就删除相关目录文件

    rm -rf /usr/lib64/mysql /usr/local/mysql /usr/share/mysql

    验证是否检查完毕

    whereis mysql
    find / -name mysql

    3.下载mysql安装包

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

    也可以直接到mysql官网: https://downloads.mysql.com/archives/community/ 选择对应版本进行下载

    在执行wget命令的目录下或你的上传目录下找到Mysql安装包:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

    4.执行解压命令

    tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
    ls

    解压完成后,可以看到当前目录下多了一个解压文件,移动该文件到/usr/local/下,并将文件夹名称修改为mysql

    mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
    cd /usr/local/
    mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql

    (
    如果/usr/local/下不存在mysql文件夹,直接执行如下命令,也可达到上述效果:
    mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
    )

    /usr/local/mysql目录下创建data目录

    mkdir /usr/local/mysql/data

    更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
    chown -R mysql:mysql /usr/local/mysql
    chmod -R 755 /usr/local/mysql

    5.编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
    cd /usr/local/mysql/bin
    ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

    这里可能会出现这种错误

      出现该问题首先检查该链接库文件有没有安装使用,命令进行核查

    rpm -qa|grep libaio
    运行命令后发现系统中无该链接库文件:
    yum install  libaio-devel.x86_64
    安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误:

    执行如下命令后:

    yum -y install numactl

    执行无误之后,再重新执行第5步初始化命令,无误之后再进行下一步操作;

    运行初始化命令成功后,输出日志如下:

     记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码;

    6、编辑配置文件my.cnf,添加配置如下:

    
    
    vi /etc/my.cnf
    
    [mysqld]
    datadir=/usr/local/mysql/data
    port=3306
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    symbolic-links=0
    max_connections=600
    innodb_file_per_table=1
    lower_case_table_names=1
    character_set_server=utf8

    lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效:
    character_set_server
    :设置数据库默认字符集,如果不设置默认为latin1
    innodb_file_per_table
    :是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别;

    7、测试启动mysql服务器

    /usr/local/mysql/support-files/mysql.server start

    这里报错,说明没启动成功,报错原因有多种,要根据其原因去解决

    因为没有路径也没有权限,所以创建此路径并授权给mysql用户:

    mkdir /var/log/mariadb
    touch /var/log/mariadb/mariadb.log
    chown -R mysql:mysql /var/log/mariadb/

    再执行启动命令:

    说明启动成功;

    查看是否存在mysqlmysqld的服务:

    ps -ef|grep mysql | grep -v grep
    ps -ef|grep mysqld | grep -v grep

    8、添加软连接,并重启mysql服务:

    ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
    service mysql restart

     登录mysql,修改密码(密码为步骤5生成的临时密码)

    
    
    
    
    mysql -u root -p
    set password for root@localhost =password('想改的密码');

     开放远程连接:

    use mysql;
    update user set user.Host='%' where user.User='root';
    flush privileges;

    9.设置开机自动启动

    将服务文件拷贝到init.d下,并重命名为mysql
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    赋予可执行权限
    chmod +x /etc/init.d/mysqld
    添加服务
    chkconfig --add mysqld
    显示服务列表
    chkconfig –list

     到这mysql安装完成;

     

    三、安装nginx

    1.安装nginx之前先安装一个扩展pcre,这个是正则匹配用到的扩展,官方网址:
    http://www.pcre.org/,选择自己下载的版本
    cd ~
    wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
    tar zxvf pcre-8.00.tar.gz
    cd pcre-8.00
    ./configure
    make & make install

    2. 下载nginx

    nginx的官方网址:http://nginx.org/,选择下载自己的版本,这里以最新版为例:

    cd ~
    wget http://nginx.org/download/nginx-1.19.10.tar.gz
    tar zxvf nginx-1.19.10.tar.gz
    cd nginx-1.19.10
    ./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00
    make & make install

    如果出现该错误,重新执行下编译安装

    ./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.00

    make & make install

    3.然后启动nginx

    /usr/local/nginx/sbin/nginx

    4. 查看是否已经启动

    ps aux | grep nginx

    5. 然后访问

    127.0.0.1 //如果打印输出Welcome to nginx! 说明安装成功

    (个人服务器就访问对应服务器IP)

    6. 增加nginxPHP的支持

    假设我设定PHP的目录为

    /home/www

    打开nginx的配置文件

    vim /usr/local/nginx/conf/nginx.conf 

    然后将这段代码改成下面这样(#号所注释)

    location ~ \.php$ {
                root           /home/www; //网站目录
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
    }

    然后wq保存退出

    然后重启phpnginx

    /usr/local/nginx/sbin/nginx

    (出现这错误,端口被绑定,杀死进程继续启动

    fuser -k 80/tcp

    )

    /usr/local/php/sbin/php-fpm

    (如果出现该错误,执行后再执行下重启php

    cd /usr/local/php/etc
    
    cp php-fpm.conf.default php-fpm.conf

    打开浏览器,输入

    127.0.0.1/index.php

    (个人服务器IP

    (

    如果出现

    首先可以查看nginx错误日志,这里说下配置错误日志:

    重启nginx,再访问,可以去查看该日志

    cat logs/error_nginx_php.log

    这里可以查看下nginx.confphp-fpm.conf 中的usergroup配置项和nginx.conf文件中的 user配置项是否一致

    这里有各种错误,具体查看错误日志提示去解决即可;文件权限不足等,依个排查

    如出现这个错误

    FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,..

    检查nginx.conf

    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    修改为
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

    然后重启即可

     

    如果输出hello world 代表着成功,lnmp环境已经搭建完毕,具体还是需要自己搭建一遍遇到问题依次排查解决,会比较清晰。

     

  • 相关阅读:
    mysql定时删除数据
    【video__播放】视频播放插件video7.4.1使用
    【ueditor__使用】百度ueditor富文本编辑器
    【 CSS__样式收集】常用样式案例收集整理
    【Layui__监听button】在form中监听按钮事件
    【Layui__分页和模板】分页和模板的整合使用
    【Layui__模板引擎】layui.laytpl
    DataTable转list
    反射方法创建委托
    EPPlusHelper
  • 原文地址:https://www.cnblogs.com/qingfj/p/14673932.html
Copyright © 2011-2022 走看看