LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案。
Source Package
Environment
Centos7 + nginx1.4 + mysql8 + php7.2
Preparation
准备工作需要安装编译器gcc、gcc-c++,还有下载解压wget、tar等及其它软件依赖,可使用yum安装。(如未配置yum源,请查看配置安装yum源软件仓库文章)
1 | yum -y install gcc gcc-c++ wget tar |
mysql5.5后的版本需要使用cmake安装,这里安装一下cmake
1 | cd /usr/local/src/cmake-3.13.0 |
Download and Unpack
接下来需要下载并解压搭建LNMP所需要的源码包,这里统一下载到/usr/local/src目录下,可使用wget进行下载,tar进行解压。
1 | wget下载源码包 |
Install NGINX
上面已经完成所有源码包的下载及解压的工作,这里直接进行编译配置工作。
1 | #编译配置,详细参数见官网 |
Install PHP
配置安装PHP
1 | #编译配置,详细参数见官网 |
创建配置文件,并将其复制到正确的位置,当前位置:/usr/local/src/php7.2.12
1 | $ cp php.ini-development /usr/local/php/etc/php.ini |
需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:
1 | $ vim /usr/local/php/etc/php.ini |
定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
1 | cgi.fix_pathinfo=0 |
在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。
1 | $ vim /usr/local/etc/php-fpm.conf |
找到以下内容并修改:
1 | ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user |
然后启动 php-fpm 服务:
1 | $ /usr/local/bin/php-fpm |
配置 Nginx 使其支持 PHP 应用:修改nginx配置文件
1 | $ vim /usr/local/nginx/nginx.conf |
修改默认的 location 块,使其支持 .php 文件:
1 | location / { |
下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:
1 | location ~* \.php$ { |
重启 Nginx。
1 | $ sudo /usr/local/nginx/nginx -s stop |
Install MYSQL
配置mysql参数项及安装,这里下载的是包含boost的源码包,如不包含需要单独下载
1 | #删除原有mysql或者mariadb,查看系统原有程序 |
使用mysqld手动初始化数据目录,当前位置/usr/local/mysql
1 | bin/mysqld --initialize --user=mysql |
使用 –initialize了“ 默认安全 ”安装(即包括生成随机初始的root密码)。在这种情况下,密码被标记为已过期,您需要选择一个新密码。使用该 –initialize-insecure选项,不会 root生成密码; 假设您在将服务器投入生产使用之前及时为帐户分配密码。
这可能需要指定其他选项,如 –basedir或 –datadir如果 mysqld的不能识别的安装目录或数据目录中的正确位置。例如(在一行中输入命令)
1 | $ bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
如果您希望服务器能够部署并自动支持安全连接,请使用 mysql_ssl_rsa_setup实用程序创建默认的SSL和RSA文件:
1 | $ bin/mysql_ssl_rsa_setup |
启动服务器:
如果您的安装包含mysqld_safe,请启动MySQL服务器
1 | $ bin/mysqld_safe --user=mysql & |
修改账号密码
1 | mysql> alter user 'root'@'localhost' identified by "123456"; |
至此LNMP已经搭建完毕
centos7配置服务开机自启动
nginx
在系统服务目录里创建nginx.service文件
1 | $ vim /lib/systemd/system/nginx.service |
修改内容如下:
1 | [Unit] |
设置开机启动
1 | $ systemctl enable nginx.service |
mysql
在系统服务目录里创建nginx.service文件
1 | $ vim /lib/systemd/system/mysqld.service |
修改内容如下:
1 | [Unit] |
解释:
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
其他命令:
1 | #启动nginx服务 |