Bootstrap

搭建LNMP环境下的wordpress

一、环境准备

lnmp环境说明:

L:Linux(CentOS7)https://mirrors.aliyun.com/centos/7/isos/x86_64/
N:Nginx(1.18.0) https://nginx.org/en/download.html
M:MySQL(8.0.19) https://dev.mysql.com/downloads/mysql/
P:PHP(7.4.10) http://php.net/downloads.php
Wordpress(5.4.2):https://cn.wordpress.org/download/
部署规划(我使用的腾讯云的服务器,也可以自己使用VM):
1.117.140.232:Nginx php-fpm 运行web服务
1.117.140.232:运行MySQL数据库,Redis服务

wordpress下载地址:https://cn.wordpress.org/download/

二、安装Nginx

2.0 安装准备

查看防火墙状态
systemctl status firewalld
这个状态就是关闭,running的状态就是开启,未关闭的话就输入:systemctl stop firewalld,来关闭,如果想禁止启动防火墙服务,输入:systemctl disable firewalld
关闭SElinux 状态
运行getenforce命令查看SELinux的当前状态。
如果SELinux状态参数是Disabled,则SELinux为关闭状态。
如果SELinux状态参数是Enforcing,则SELinux为开启状态。(如果未关闭可以使用vi /etc/selinux/config,将这里改为disable就可以)

2.1 编译安装 nginx

yum -y install nginx
nginx -v 可以查看版本

第二种方法:

nginx安装目录是:/usr/local/,进入/usr/local/目录

cd /usr/local

 安装nginx依赖包:

yum -y install zlib zlib-developenssl openssl-devel pcre pcre-devel

下载nginx源码包:

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

解压:

tar -zxvf nginx-1.10.1.tar.gz

进入解压后的源码目录:

cd nginx-1.10.1

检查编译环境:

./configure

编译:

make install

现在nginx就已经安装完成了,安装目录为/usr/local(和源码目录是同一个)

进入目录:cd /usr/local/nginx/sbin 启动nginx

cd /usr/local/nginx/sbin
ls  查看nginx是否存在
./nginx  运行nginx
netstat -ntpl  #查看nginx是否启动

 现在浏览器访问你服务器的公网ip就可以看到页面了(访问ip就可以)

访问ip对应的文件是放在/usr/local/nginx/html文件夹下的,现在直接访问ip其实就是访问html文件夹下的index.html文件

三、安装Mysql

rpm -qa | grep -i mysql #看看是否安装过了
yum -y remove mysql-libs.x86_64  #有则删除
find / -name mysql  #把所有出现的目录统统删除
rm -rf /etc/my.cnf #删除配置文件 
rm -rf /root/.mysql_sercret #删除mysql的默认密码
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 
#配置Mysql 8.0安装源  
sudo yum --enablerepo=mysql80-community install mysql-community-server #安装Mysql 8.0
sudo yum --enablerepo=mysql80-community install mysql-community-server --nogpgcheck 
#如果报错GDK,在yum install 版本后面加上 --nogpgcheck,即可绕过GPG验证成功安装
sudo service mysqld start #启动mysql服务
service mysqld status #查看mysql服务运行状态 
grep "A temporary password" /var/log/mysqld.log #查看root临时密码(我自己的d%miquP7yPZu)
mysql -uroot -p  #输入jZ4l7yizop#-初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己输入新密码'; #更改临时密码
会提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(密码不符合当前策略)
方案1: 设置符合策略的密码(大小写字母+数据+符号)
方案2:密码策略改简单一点
方案2设置方式:
先更改密码,否则无法下一步操作
输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'jZ4l7yizop#-';

validate_password.length 是密码的最小长度,默认是8,我们把它改成4
输入:set global validate_password.length=4;(mysql 8.0)
set global validate_password_length=4;(版本不一样命令有变化)

validate_password.policy 验证密码的复杂程度,我们把它改成0
输入:set global validate_password.policy=0;
set global validate_password_policy=0;

validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它关掉
输入:set global validate_password.check_user_name=off;
set global validate_password_check_user_name=off;

再执行修改密码的命令
输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
密码设置成功,设为了root。
如果客户端连接mysql报错:查看防火墙状态,关闭状态,腾讯云需要开放3306端口
[root@VM-4-5-centos ~]# mysql -V
mysql  Ver 8.0.32 for Linux on x86_64 (MySQL Community Server - GPL)


另一个安装方式:
1.更新yum源
rpm -Uvh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
如果您使用的操作系统内核版本为el8,可能会提示报错信息No match for argument。您需要先运行命令yum module disable mysql禁用默认的MySQL模块,再安装MySQL。
查看内核:uname -a
2.安装mysql
yum -y install mysql-community-server --nogpgcheck
3.启动mysql
systemctl start mysqld
Netstat -ntpl 查看是否启动成功
4.设置为开机自启动
systemctl enable mysqld
systemctl daemon-reload
修改密码方式也在上面

四、安装Php

1.更新yum源
运行以下命令添加EPEL源
yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2.运行以下命令添加Webtatic源。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

3.安装php
yum -y install php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64  php70w-pdo.x86_64   php70w-mysqlnd  php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb

查看安装成功否:php -v

4.1 配置php 文件

1.备份nginx配置文件
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
2.修改Nginx配置文件,添加Nginx对PHP的支持
运行以下命令打开Nginx配置文件
vim /etc/nginx/nginx.conf
输入i进入编辑模式:
然后在server大括号内,修改或添加下列配置信息,添加或修改location /配置信息
        location / {
            index index.php index.html index.htm;
        }
添加或修改location ~ .php$配置信息
        #添加下列信息,配置Nginx通过fastcgi方式处理您的PHP请求。
        location ~ .php$ {
            root /usr/share/nginx/html;    #将/usr/share/nginx/html替换为您的网站根目录,本文使用/usr/share/nginx/html作为网站根目录。
            fastcgi_pass 127.0.0.1:9000;   #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;   #Nginx调用fastcgi接口处理PHP请求。
        }

如下:
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
            index index.php index.html index.htm;
        }
        location ~ .php$ {
            root /usr/share/nginx/html;    
       #将/usr/share/nginx/html替换为您的网站根目录,本文使用/usr/share/nginx/html作为网站根目录。
            fastcgi_pass 127.0.0.1:9000;  
       #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;  
       #Nginx调用fastcgi接口处理PHP请求。
        }

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

结束:
------------------

4.2 启动并验证 php-fpm 服务

运行以下命令启动Nginx服务。
systemctl start nginx 
设置开机自启动:systemctl enable nginx


[root@nginx ~]#ss -ntlp
State      Recv-Q Send-Q              Local Address:Port                             Peer Address:Port
LISTEN     0      128                     127.0.0.1:9000                                        *:*users:(("php-fpm",pid=112880,fd=9),("php-fpm",pid=112879,fd=9),("php-fpm",pid=112878,fd=7))
LISTEN     0      128                             *:80                                          *:*users:(("nginx",pid=2134,fd=6),("nginx",pid=1305,fd=6))
LISTEN     0      128                             *:22                                          *:*users:(("sshd",pid=1293,fd=3))
LISTEN     0      100                     127.0.0.1:25                                          *:*users:(("master",pid=1391,fd=13))
LISTEN     0      128                          [::]:22                                       [::]:*users:(("sshd",pid=1293,fd=4))
LISTEN     0      100                         [::1]:25                                       [::]:*users:(("master",pid=1391,fd=14))
[root@nginx ~]#pstree -p |grep php
           |-php-fpm(112878)-+-php-fpm(112879)
           |                 `-php-fpm(112880)
 
[root@nginx ~]#ps -ef |grep php
root     112878      1  0 22:32 ?        00:00:00 php-fpm: master process (/apps/php74/etc/php-fpm.conf)
www      112879 112878  0 22:32 ?        00:00:00 php-fpm: pool www
www      112880 112878  0 22:32 ?        00:00:00 php-fpm: pool www
root     112896   3200  0 22:37 pts/0    00:00:00 grep --color=auto php

接下来测试一下在本地浏览器上能不能访问成功php文件,配置PHP运行以下命令新建phpinfo.php文件。vim <网站根目录>/phpinfo.php,<网站根目录>是您在nginx.conf配置文件中location ~ .php$大括号内,配置的root参数值,如下图所示。

本文配置的网站根目录为/usr/share/nginx/html,因此需要运行以下命令新建phpinfo.php文件:

vim /usr/share/nginx/html/phpinfo.php

输入下列内容,函数phpinfo()​会展示PHP的所有配置信息

<?php echo phpinfo(); ?>


运行以下命令启动PHP-FPM
systemctl start php-fpm

设置开机自启动:systemctl enable php-fpm


测试访问LNMP配置信息页面
在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。
在浏览器的地址栏输入http://<ECS实例公网IP地址>/phpinfo.php进行访问。
访问结果如下图所示,表示LNMP环境部署成功。
http://1.117.140.232/phpinfo.php

后续步骤
测试访问LNMP配置信息页面后,建议您运行以下命令将phpinfo.php文件删除,消除数据泄露风险。
rm -rf <网站根目录>/phpinfo.php

rm -rf /usr/share/nginx/html/phpinfo.php

mysql -uroot -p 登录数据库
create database wordpress; 创建数据库
show variables like "%password%";  查看密码规则
create user 'user'@'localhost' identified by 'PASSword123.';  创建用户
grant all privileges on wordpress.* to 'user'@'localhost';  给与权限
flush privileges;    配置生效
exit;
[root@VM-4-5-centos ~]# mkdir -p /usr/share/wordpress
[root@VM-4-5-centos ~]# cd /usr/share/wordpress/

通过yum命令下载的WordPress保存在/usr/share/wordpress目录下。
我是直接上传解压的,都可以
yum -y install wordpress
将下载的WordPress移动至网站根目录
mv /usr/share/wordpress /usr/share/nginx/html/wordpress

进入移动后的WordPress路径下,软连接配置文件wp-config.php
cd /usr/share/nginx/html/wordpress
ln -snf /etc/wordpress/wp-config.php wp-config.php

vim wp-config-sample.php

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */
define('DB_USER', 'user');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'PASSword123.');

/** MySQL主机 */
define('DB_HOST', 'localhost');

保存退出
vim /etc/nginx/nginx.conf
在server大括号内,将root后的内容替换为WordPress根目录。本示例中根目录为/usr/share/nginx/html/wordpress。



systemctl restart nginx
http://1.117.140.232/wp-admin/  访问即可

五、访问WordPress 

5.1 访问ip+wordpress

有可能出现的错误:

1.为MySQL设置新密码

输入:mysql -uroot -p  如果报错

则:编辑vi /etc/my.cnf ,在[mysqld] 部分最后添加一行

skip-grant-tables,然后保存重启mysql,命令:service mysqld restart,

在进行登录:输入以下命令,回车后输入密码再回车登录Mysql

mysql -uroot -p mysql 密码还是输入最开始查到的密码;

重新设置密码,其中 your_pwd 部分改为你自己想要设置的密码

update user set password=password("your_pwd") where user='root';

但是会报错The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

于是登录数据库:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

Query OK, 0 rows affected (0.01 sec)

这里可能又会出现问题,Your password does not satisfy the current policy requirements

validate_password.length 是密码的最小长度,默认是8,我们把它改成4

输入:set global validate_password.length=4;

validate_password.policy 验证密码的复杂程度,我们把它改成0

输入:set global validate_password.policy=0;

validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它关掉

输入:set global validate_password.check_user_name=off;

再执行修改密码的命令

输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

密码设置成功,设为了root。

然后有的会报错

MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘

于是:

use mysql;

select user,host from user where user='root';

发现 host 列的值是 ‘%’,因此将修改密码语句改为:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx';

flush privileges;

这样就可以了。

grant all privileges on *.*  to 'root'@'%' identified by'123456';

然后编辑vi /etc/my.cnf   把最后添加的删除。

参考:

https://cloud.tencent.com/developer/article/1801077

https://blog.csdn.net/qq_41137110/article/details/103521151

https://blog.csdn.net/kang50055/article/details/124386563

;