运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)

CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3

  • LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
  • Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。
  • Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
  • MySQL是一个小型关系型数据库管理系统。
  • PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。
运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)_第1张图片


一、Nginx

1、nginx安装环境
  • 安装 GCC
    源码安装nginx需要依赖gcc环境,需要安装gcc
[root@localhost ~]# yum install -y gcc gcc-c++
  • 安装 PCRE
    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库
[root@localhost ~]# yum install -y pcre pcre-devel
  • 安装 zlib
    zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库
[root@localhost ~]# yum install -y zlib zlib-devel
  • 安装 openssl
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用;
    nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
[root@localhost ~]# yum install -y openssl openssl-devel

2、获取nginx源码安装包、并解压

Nginx官网

[root@localhost nginx]# wget https://files.cnblogs.com/files/ftl1012/nginx-1.8.0.tar.gz
[root@localhost nginx]# ls
 nginx-1.8.0.tar.gz
[root@localhost nginx]# tar -zxvf nginx-1.8.0.tar.gz
3、编译、安装
  • 预编译
[root@localhost nginx-1.8.0]# ./configure \
--prefix=/usr/local/nginx \					///--prefix= 指向安装目录
--pid-path=/var/run/nginx/nginx.pid \		///--pid-path= 指向pid文件(nginx.pid)
--lock-path=/var/lock/nginx.lock \			///--lock-path= 指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--error-log-path=/var/log/nginx/error.log \   ///--error-log-path= 指向错误日志目录
--http-log-path=/var/log/nginx/access.log \   ///--http-log-path= 指向http服务日志
--with-http_gzip_static_module \			  ///禁用nginx_http_gzip_module支持
--http-client-body-temp-path=/var/temp/nginx/client \   ///设定http客户端请求临时文件路径
--http-proxy-temp-path=/var/temp/nginx/proxy \			///设定http代理临时文件路径
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \		///设定http fastcgi临时文件路径
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \			///设定http uwsgi临时文件路径
--http-scgi-temp-path=/var/temp/nginx/scgi				///设定http scgi临时文件路径

nginx 编译参数详解大全

  • 使用echo $?查看是否成功执行预编译(0表示成功)
[root@localhost nginx-1.8.0]# echo $?
0
  • 编译、安装
[root@localhost nginx-1.8.0]# make && make install 
  • 使用echo $? 查看是否成功执行编译安装(0表示成功)
[root@localhost nginx-1.8.0]# echo $?
0

4、启动Nginx服务
  • 启动nginx(不加任何参数)
[root@localhost ~]# /usr/local/nginx/sbin/nginx
  • 关闭nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop
  • 重启nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
  • 查看服务进程
[root@localhost ~]# ps -ef | grep nginx
root      18538      1  0 16:37 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    18539  18538  0 16:37 ?        00:00:00 nginx: worker process
root      18549   8217  0 16:38 pts/0    00:00:00 grep --color=auto nginx
  • 查看端口
[root@localhost ~]# netstat -ntl | grep 80      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 

运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)_第2张图片


二、MySQL

1、获取mysql源码包

mysql5.6 百度网盘 - 密码:39ru

2、解压源码包
[root@localhost src]# tar -xzvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
3、将源码包内容移动至/usr/local/mysql目录下
[root@localhost src]# mv mysql-5.6.43-linux-glibc2.12-x86_64/* /usr/local/mysql
4、设置权限
[root@localhost mysql]# groupadd mysql            		 	//增加 mysql 属组 
[root@localhost mysql]# useradd -g mysql mysql     			//增加 mysql 用户 并归于mysql 属组 
[root@localhost mysql]# chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
[root@localhost mysql]# chmod +x -Rf /usr/local/mysql    	//赐予可执行权限 
5、拷贝配置文件
[root@localhost ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
6、初始化mysql
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql

PS:需要进入到[root@localhost mysql]#目录下执行该命令,否则会报错
PS:FATAL ERROR: please install the following Perl modules before executing(错误
解决方法 :安装autoconf库 - 命令:yum install -y autoconf

7、配置mysql启动
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
[root@localhost ~]# chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
[root@localhost ~]# systemctl start mysql   //启动mysql
8、环境变量配置
[root@localhost ~]# vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
export PATH=/usr/local/mysql/bin:$PATH 
9、重新加载环境变量
[root@localhost ~]# source /etc/profile 	 //使PATH生效
10、设置数据库密码
[root@localhost ~]# mysqladmin -u root password 'yourpassword'
11、登录数据库进行配置
mysql -u root -p  //使用root用户登录mysql
use mysql  //切换至mysql数据库。
select user,host,password from user; //查看系统权限
drop user ''@'localhost'; //删除不安全的账户
drop user root@'::1';
drop user root@127.0.0.1;
select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
flush privileges;  //刷新权限
扩展:mysql配置
1、修改字符集为UTF8
vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8

2、增加错误日志
vim /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log

3、设置为不区分大小写,linux下默认会区分大小写。
vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1

三、PHP

1、配置PHP支持环境
[root@localhost ~]# yum -y install libxml2
[root@localhost ~]# yum -y install libxml2-devel

配置前如果没有libxml2libxml2-devel会报错

补充配置

因为不同的操作系统环境,系统安装开发环境包的完整程度也不相同,所以建议安装操作系统的时候做必要选择,也可以统一执行一遍所有的命令,将没有安装的组件安装好,如果已经安装了可能会进行升级

yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
2、获取PHP源码包

PHP官网
运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)_第3张图片

[root@localhost src]# wget https://www.php.net/distributions/php-7.3.15.tar.gz
3、解压源码包
[root@localhost src]# tar -xzvf php-7.3.15.tar.gz
4、编译、安装
[root@localhost ~]# cd /usr/local/src/php-7.3.15
[root@localhost php-7.3.15]# ./configure --prefix=/usr/local/php \
--with-gd \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-mcrypt \
--enable-mbstring \
--enable-zip \
--enable-fpm

[root@localhost php-7.3.15]# make 

编译时间可能会有点长,编译完成之后,执行安装:

[root@localhost php-7.3.15]# make install
5、配置PHP启动
[root@localhost php-7.3.15]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.3.15]# cp sapi/fpm/php-fpm /usr/local/bin
[root@localhost php]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf  ##其实就是cp配置文件
6、设置php.ini文件
[root@localhost ~]# vim /usr/local/php/lib/php.ini

在这里插入图片描述
打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。

拓展

另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:–with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意

  • 此时首先应该创建web用户
[root@localhost ~]# groupadd www-data
[root@localhost ~]# useradd -g www-data www-data
[root@localhost ~]# usermod -s /sbin/nologin www-data
  • 修改www.conf.defalut配置用户的文件
[root@localhost ~]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@localhost ~]# vim /usr/local/php/etc/php-fpm.d/www.conf
  • 默认user和group的设置为nobody,将其改为www-data
user = www-data
group = www-data
  • 修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务
[root@localhost ~]# /usr/local/bin/php-fpm
  • 启动完毕之后,php-fpm 服务默认使用9000端口,使用 netstat -tln | grep 9000可以查看端口使用情况
[root@localhost ~]# netstat -ntl | grep 9000                 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

9000端口正常使用,说明php-fpm服务启动成功


四、配置 Nginx - PHP

1、修改nginx.conf配置文件

修改location块,追加index.php让nginx服务器默认支持index.php为首页
在这里插入图片描述
配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容
这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
在这里插入图片描述
修改user用户,默认是#user nobody, 这里要去掉注释改为user www-data,表示nginx服务器的权限为www-data
在这里插入图片描述

2、检测nginx配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
3、编辑php测试界面
[root@localhost ~]# vim /usr/local/nginx/html/test.php

<?php
        phpinfo();
?>
4、重载nginx服务
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
5、访问php测试界面
192.168.182.11/test.php

在这里插入图片描述


拓展:PHP编译配置

--prefix=/usr/local/php7 	# 配置安装目录
--with-config-file-path=/usr/local/php7 	# 配置文件 php.ini 的路径
--enable-sockets 	# 开启 socket 
--enable-fpm 	# 启用 fpm 扩展
--enable-cli 	# 启用 命令行模式 (从 php 4.3.0 之后这个模块默认开启所以可以不用再加此命令)
--enable-mbstring 	# 启用 mbstring 库
--enable-pcntl 	# 启用 pcntl (CLI / CGI)
--enable-soap 	# 启用 soap 
--enable-opcache 	# 开启 opcache 缓存
--disable-fileinfo 	# 禁用 fileinfo (由于 5.3+ 之后已经不再持续维护了,但默认是开启的,所以还是禁止了吧)(1G以下内存服务器直接关了吧)
--disable-rpath  	#禁用在搜索路径中传递其他运行库。
--with-mysqli 	# 启用 mysqli 扩展
--with-pdo-mysql 	# 启用 pdo 扩展
--with-iconv-dir 	# 启用 XMLRPC-EPI 字符编码转换 扩展
--with-openssl 	# 启用 openssl 扩展 (需要 openssl openssl-devel)
--with-fpm-user=www 	#设定 fpm 所属的用户 
--with-fpm-group=www 	#设定 fpm 所属的组别
--with-curl 	# 启用 curl 扩展
--with-mhash 	# 开启 mhash 基于离散数学原理的不可逆向的php加密方式扩展库
# GD
--with-gd 	# 启用 GD 图片操作 扩展
--with-jpeg-dir 	# 开启对 jpeg 图片的支持 (需要 libjpeg)
--with-png-dir 	# 开启对 png 图片支持 (需要 libpng)
--with-freetype-dir 	# 开启 freetype 
# 压缩
--enable-zip 	# 启用 zip
--with-zlib 	# 启用对 zlib 支持 
# xml
--enable-simplexml 	# 启用对 simplexml 支持
--with-libxml-dir 	# 启用对 libxml2 支持

你可能感兴趣的:(Nginx,PHP)