LNMP
下载与安装依赖项
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
phpinfo();
?>
配置文件解析(可以略过)
php配置相关文件
/usr/local/php/etc/php-fpm.conf
/usr/local/php/etc/php-fpm.d/www.conf
/usr/local/php/lib/php.ini