Centos手动部署LNMP环境,并部署Wordpress

选择手动安装、脚本安装还是面板安装

如果您只是想搭建一个自己的私人博客或出于测试等其他非生产目的部署一个LNMP环境,建议您使用一键部署脚本或者Linux面板比如宝塔面板等。这种部署方式快捷高效,后两个当中更推荐面板部署,方便环境的管理和配置
楼主之前也是依赖于面板,最近准备面试运维相关的职位,想把之前学过的知识重新复习一下并重新实践一下相关项目,故选择了手动部署环境,期间也遇到了许多困难,不过参照网上资料及应用所学的知识一一解决了。
感谢参考的关于PHP7和Nginx编译安装的博文:
Centos7编译安装php7.10
Centos7编译安装Nginx
接下来进入正题

环境声明

公有云平台:阿里云ECS实例
系统版本:Centos7.3

准备工作

  1. 下载PHP最新版本和Nginx最新版本,本次使用的分别是PHP7.43和Nginx1.17.9,Mariadb的安装使用yum,不必提前下载
  2. 如果您希望使用rz的方式推送以上安装包到服务器,请提前安装lrzsz
  3. 由于编译安装耗时较长,为防止网络等原因导致的进程中断,建议在screen会话中进行编译安装,请确保您已安装screen
  4. 为了方便主机后续的管理,建议您建立一个目录例如pkg来存放以上文件

部署LNMP

安装Mariadb

Mariadb--安装
yum -y install Mariadb-server
Mariadb--配置--修改安全策略
systemctl start mariadb 
mysql_secure_installation
#根据提示和需要依此修改root用户密码、是否移除test账户、是否禁用远程访问等等,您可以选择翻译或者参考[MySQl安全配置向导](https://blog.csdn.net/qq_32786873/article/details/78846008)
Mariadb--配置--数据库操作(如果您不需要部署Wordpress,请忽略这一步)
#以root身份连接数据库
mysql -u root -p[your passwd ofmysql root]
#接下来的每一步操作,请记得添加;作为语句结束符
#创建数据库供Wordpress使用,名称自选
create database wordpress

#处于安全目的,创建用户供Wordpress访问使用并授予仅对wordpres数据库的全部权限,用户名自选
#创建用户
#参数1、2、3请根据自己的需要填入用户名、访问控制、密码,出于安全目的,建议参数2填写为localhost,仅主机访问
CREATE USER '[1]'@'[2]' IDENTIFIED BY '[3]';

#授予对wordpress数据库的全部访问权限
#参数1、2分别填入数据库名、数据库下的表(此处填写完*)
GRANT ALL ON [1].[2] to username@'localhost';

#刷新权限表
FLUSH privileges;

编译安装PHP

安装PHP的三种种方法:

1.yum -y install #这种方法安装的版本安装的PHP版本为5.4,可能无法为某些服务提供功能
2. 类似于第一种,但是要先配置yum源,版本也会稍稍滞后于最新版本,这里暂不涉及
3. 源码编译安装,本文采用此种安装方法

安装PHP--编译与安装	
#进入到下载或上传至服务器的安装包所在的目录,请根据自己的环境自行修改参数
cd /root/pkg

#解压后进入目录
tar -xvf php-7.4.3.tar.xz
cd php-7.3.3

#根据需要选择合适的参数准备编译
#参见参数
************************************************************************************
--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 支持
************************************************************************************

#创建并进入screen会话
screen -S [name]

#编译
#由于缺少编译环境,编译的过程中自然会报错,请根据每次报错的提示百度然后安装对应的库或者依赖
#请留意以下选项:1、安装目录 2、nginx所属用户和组,如果使用www作为参数,请在后续创建www用户
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7 --enable-sockets --enable-fpm --enable-cli --enable-mbstring --enable-pcntl --enable-soap --enable-opcache --disable-fileinfo --disable-rpath --with-mysqli --with-pdo-mysql --with-iconv-dir --with-openssl --with-fpm-user=www --with-fpm-group=www --with-curl --with-mhash --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-zip --with-zlib --enable-simplexml --with-libxml-dir 

#当看到PHP的欢迎语,说明编译完成,开始安装
make && make install
安装PHP--配置PHP相关文件
#将PHP安装路径中的相关配置文件更名
#您可以在不更名前尝试,会得到提示“/usr/local/php7/etc/php-fpm.conf”,完成第一个操作后会得到第二个类似提示,因此可一次性完成
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
#至此您可以使用以下语句来启动服务
/usr/local/php7/sbin/php-fpm
安装PHP--为PHP创建快捷的服务管理项
#方法一
cp [PHP解压缩目录]/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod +x /etc/init.d/php-fpm
#完成以上步骤后您可以使用Centos6的方式来管理服务
service php-fpm start  #启动
service php-fpm stop   #停止
service php-fpm restart #重启

#方法二为上述目录文件创建软链接,推荐方法1,因为方法一可以更好都管理服务,也更加直观
#方法三,未成功,原因待排查
cp /root/pkg/php-7.4.3/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
#成功后,可使用Centos7典型服务管理方式管理
systemctl start|stop|restart php-fpm
安装PHP--声明PHP环境变量
vim /etc/profile
#在末尾添加
export PATH=$PATH:/usr/local/php/bin

#重新载入
source /etc/profile

#现在可以查看php命令
php -v

PHP 7.4.3 (cli) (built: Mar 13 2020 18:16:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

编译安装Nginx

Nginx安装--编译、安装
操作请参考php的编译安装
Nginx安装--配置Nginx
#无需替换文件等操作,对Nginx的操作主要是注册系统服务
#自行编写脚本服务脚本nginx.service,请根据自己的配置注意替换相应的目录变量
vim  /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
安装Nginx--隐藏Nginx版本号,防止嗅探版本信息
vim /usr/local/nginx/conf/nginx.conf
#定位至http区块,在当中加入以下语句
 server_tokens off;
安装Nginx--在配置网站时使Nginx支持解析PHP
#定位至定义的server区块,在当中加入以下语句
#请将root后的目录替换为您定义的server中的目录
location ~ \.php$ {
            root    /www/wordpress;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
安装Nginx--测试Nginx是否支持解析PHP
#建议不用直接进行Wordpress的部署而先测试PHP是否正常工作
#在/[Nginx安装目录]/html/下创建index.php,内容如下,用于显示php版本信息
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

#回溯至上一步,在server区段中,修改
location / {
            root   html;
            index index.php  index.html index.htm;
        }
#在server区段中,添加
location ~ \.php$ {
            root    html;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

#回到阿里云控制台放行80端口
#如果Centos开启了防火墙,请放行80端口,您现在应该可以在浏览器中访问ip看到PHP信息页

Wordpress部署

Wordpress安装--网站目录权限设置
#上传并解压Wordpres安装包至在ngixn.conf中server字段定义的网站根目录
tar -xvf [xxx.tar.gz] -C [Dir of Site]
#查看解压后的文件夹,您会发现文件夹的用户属主和属组是一个不存在的用户,且只有属主具有读写执行权限
ll /www/
ll /www/wordpress/

#这种情况下打开网站,进入wordpress配置后,连接到之前配置的数据库后,会发现提示无法创建文本,自行复制创建,如果您按照这种方法,即使成功进入,也会在后续使用中遇到关于权限的各种问题
#回顾到前文,我们在编译安装PHP和Nginx时指定的用户为www,而网站运行过程中,依赖这两个进程,因此,将用户属主改编为www即可,如果您没有添加该用户,前面服务的启动也不会成功
chown -R www /www/wordpress/

至此,Wordpress已经正常安装并访问

总结

1、Mariadb使用yum安装快捷方便,经过安全策略引导配置后,出于安全目的,应该为每个数据库配置相应的授权用户
2、编译安装PHP中,快捷管理服务的方法有三种,第三种方式是注册服务项,失败原因带排查
3、编译安装PHP和Nginx的过程中,指定的用户名和属组应当留意,这在站点目录的权限设置中会涉及到。如果只是简单的将站点目录设置为全部用户可读可写可执行,虽然可以解决问题,但是留下了安全隐患
4、对于服务端口,共有在防火墙的基础上为服务器多了一道安全组保障,请注意放行相应端口。不要将防火墙简单关闭,应当采用放行端口的方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章