LNMP-部署-配置(Linux+Nginx+PHP+Mysql)

LNMP

2019/11/13 Chenxin
参考:
https://www.php.net/manual/zh/install.fpm.php
https://blog.csdn.net/nouswait/article/details/83105378

下载与安装依赖项

1.环境需求与软件链接地址
linux: Aliyun Linux release 2.1903 (Hunting Beagle)
nginx: nginx-1.16.1.tar.gz http://nginx.org/
php: php-7.3.11.tar.gz https://www.php.net/distributions/php-7.3.11.tar.gz
mysql: mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
libxml2: libxml2-2.9.9.tar.gz ftp://xmlsoft.org/libxml2/
openssl: openssl-1.1.0l.tar.gz https://www.openssl.org/source/openssl-1.1.0l.tar.gz
zlib: zlib-1.2.11.tar.gz http://zlib.net/
pcre: pcre-8.43.tar.gz ftp://ftp.pcre.org/pub/pcre/
下载至/opt/.暂时不安装

2.依赖项安装
这里用yum安装一下在编译过程中所需要的编译工具和小程序,如:gcc、gd库、cmake等等

yum install -y gcc gcc-c++ make sudo autoconf libtool-ltdl-devel gd-devel \
        freetype-devel libxml2-devel libjpeg-devel libpng-devel \
        openssl-devel curl-devel patch libmcrypt-devel \
        libmhash-devel ncurses-devel bzip2 \
        libcap-devel ntp sysklogd diffutils sendmail iptables unzip cmake

3.创建www用户
groupadd www
useradd -r www -g www

nginx安装

安装nginx前,我们需要安装3个依赖包:
pcre:在使用 nginx 的 rewrite 模块的时候,需要有pcre库的支持.
openssl:在使用ssl功能时,需要有 openssl库的支持.
zlib:在使用gzip模块时,需要有zlib库的支持.
而这三个模块都是我们常用的.

1.安装 pcre

cd pcre-8.43/
./configure 
make
make install

2.安装 openssl

cd /opt/openssl-1.1.0l/
./config 
make
make install

3.安装 zlib

cd /opt/zlib-1.2.11/
CFLAGS="-O3 -fPIC" ./configure
make
make install

4.安装 nginx
建议最简化安装.

cd /opt/nginx-1.16.1
./configure --user=www --group=www --prefix=/usr/local/nginx --with-pcre=/opt/pcre-8.43 --with-zlib=/opt/zlib-1.2.11 --with-openssl=/opt/openssl-1.1.0l
make
make install

mysql安装

略.参考mysql文档.

php安装

安装php之前,也要安装一个依赖包 libxml2.

1.安装 libxml2

cd /opt/libxml2-2.9.9/
./configure --with-python=no
make
make install

2.安装 php

cd /opt/php-7.3.11

使用之前编译安装的mysql,进行configure,会报错.
./configure ... --with-pdo-mysql=/usr/local/mysql/ ...
报错: configure: error: PDO_MYSQL configure failed, MySQL 4.1 needed. 

改用php官方的mysqlnd. --with-pdo-mysql=mysqlnd,php 5.3+版本都可以.
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-libxml-dir --with-zlib --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-sockets --with-curl --enable-maintainer-zts

make ,报错
若有提示OPENSSL的报错,说明之前安装的OPENSSL跟系统自带的有冲突,需要移除掉系统自带的.
collect2: error: ld returned 1 exit status make: *** [sapi/cli/php] Error 1 (前面都是OPENSSL)
执行 yum remove openssl-devel

make,若有提示找不到 libssl.so.1.1 和 libcrypto.so.1.1,原因是库没有在/usr/lib64/里.
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

每次make前,需要先 make clean清除相关信息,再重新 make.成功后,再
make test # 测试完之后,提示是否上传报告,输入 n
make install # 安装

配置文件

1.php配置

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #默认只包含php-fpm.d/*.conf,没有其他额外配置
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf #启动时进程数,最大进程数...
cp /opt/php-7.3.11/php.ini-production /usr/local/php/lib/php.ini

启动php-fpm
/usr/local/php/sbin/php-fpm

2.nginx配置
修改nginx配置文件,这里采用的是从默认配置文件改过来的.

user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  102400;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    #access_log off; # 关闭access日志
    #error_log  off; # 关闭error日志

    server {
        listen       80;
        server_name  localhost;

        error_log  logs/error.log; # error日志路径

        location / {
            #root   html; # 静态文件默认根目录存放位置.这里是/usr/local/nginx/html
            root   /data/www;
            index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
            #root           html;
            root           /data/www; #php文件存放路径
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; # 脚本文件存放位置,可以与root指定的目录不一致.根据"php"正则匹配到此
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name; # 关闭fastcgi.conf的情况下,构建$document_root参数(这个参数的值就代表站点目录root那一行的值)
            include         fastcgi_params;

            #include        fastcgi.conf; #获取SCRIPT_FILENAME.如果前面没有配置SCRIPT_FILENAME,则这里需要打开,以便nginx读取对应的参数信息
        }

    }
}

启停nginx
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s [stop, quit, reopen, reload]

测试

php文件测试

[root@iZj6c7on1pthsqckvle1hjZ www]# ls /data/www/
index.php  test.php
[root@iZj6c7on1pthsqckvle1hjZ www]# cat /data/www/index.php 
<?php
    phpinfo();
?>

浏览器访问 http://47.52.130.56/test.php 测试phpinfo页面.

配置文件解析(可以略过)

php配置相关文件

/usr/local/php/etc/php-fpm.conf
/usr/local/php/etc/php-fpm.d/www.conf
/usr/local/php/lib/php.ini

posted @ 2020-04-21 14:21  ChanixChen  阅读(694)  评论(0)    收藏  举报