欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-17 18:40:47
...

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 环境部署(源码编译安装)


一、Nginx

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

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

Nginx官网

[aaa@qq.com nginx]# wget https://files.cnblogs.com/files/ftl1012/nginx-1.8.0.tar.gz
[aaa@qq.com nginx]# ls
 nginx-1.8.0.tar.gz
[aaa@qq.com nginx]# tar -zxvf nginx-1.8.0.tar.gz
3、编译、安装
  • 预编译
[aaa@qq.com 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表示成功)
[aaa@qq.com nginx-1.8.0]# echo $?
0
  • 编译、安装
[aaa@qq.com nginx-1.8.0]# make && make install 
  • 使用echo $? 查看是否成功执行编译安装(0表示成功)
[aaa@qq.com nginx-1.8.0]# echo $?
0

4、启动Nginx服务
  • 启动nginx(不加任何参数)
[aaa@qq.com ~]# /usr/local/nginx/sbin/nginx
  • 关闭nginx
[aaa@qq.com ~]# /usr/local/nginx/sbin/nginx -s stop
  • 重启nginx
[aaa@qq.com ~]# /usr/local/nginx/sbin/nginx -s reload
  • 查看服务进程
[aaa@qq.com ~]# 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
  • 查看端口
[aaa@qq.com ~]# 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 环境部署(源码编译安装)


二、MySQL

1、获取mysql源码包

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

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

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

7、配置mysql启动
[aaa@qq.com ~]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
[aaa@qq.com ~]# chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
[aaa@qq.com ~]# systemctl start mysql   //启动mysql
8、环境变量配置
[aaa@qq.com ~]# vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
export PATH=/usr/local/mysql/bin:$PATH 
9、重新加载环境变量
[aaa@qq.com ~]# source /etc/profile 	 //使PATH生效
10、设置数据库密码
[aaa@qq.com ~]# 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 aaa@qq.com'::1';
drop user aaa@qq.com127.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支持环境
[aaa@qq.com ~]# yum -y install libxml2
[aaa@qq.com ~]# 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 环境部署(源码编译安装)

[aaa@qq.com src]# wget https://www.php.net/distributions/php-7.3.15.tar.gz
3、解压源码包
[aaa@qq.com src]# tar -xzvf php-7.3.15.tar.gz
4、编译、安装
[aaa@qq.com ~]# cd /usr/local/src/php-7.3.15
[aaa@qq.com 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

[aaa@qq.com php-7.3.15]# make 

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

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

运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)
打开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用户
[aaa@qq.com ~]# groupadd www-data
[aaa@qq.com ~]# useradd -g www-data www-data
[aaa@qq.com ~]# usermod -s /sbin/nologin www-data
  • 修改www.conf.defalut配置用户的文件
[aaa@qq.com ~]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[aaa@qq.com ~]# vim /usr/local/php/etc/php-fpm.d/www.conf
  • 默认user和group的设置为nobody,将其改为www-data
user = www-data
group = www-data
  • 修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务
[aaa@qq.com ~]# /usr/local/bin/php-fpm
  • 启动完毕之后,php-fpm 服务默认使用9000端口,使用 netstat -tln | grep 9000可以查看端口使用情况
[aaa@qq.com ~]# 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为首页
运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)
配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容
这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)
修改user用户,默认是#user nobody, 这里要去掉注释改为user www-data,表示nginx服务器的权限为www-data
运维之道 | CentOS7.6 + Nginx1.8 + MySQL5.6 + PHP7.3 环境部署(源码编译安装)

2、检测nginx配置文件
[aaa@qq.com ~]# /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测试界面
[aaa@qq.com ~]# vim /usr/local/nginx/html/test.php

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

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


拓展: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