写在前面:

上个月双11期间,华为云服务器搞活动,一年才81块钱,就租了台服务器玩

又注册了个域名,第一年才11块钱,挺便宜哈🍉

接下来整了域名备案,不得不说华为客服挺好的(跟你沟通一些备案相关的事宜)

寻思着用服务其整点啥呢,这两天就搭建了个wordpress博客,

期间遇见了好多问题,也找了不少资料,在此记录一下希望可以帮助到需要的朋友,小编服务器的linux发行版本是Centos6.10,Centos7及其他版本可能会有些不同

小编的LNMP及WordPress版本如下:

L(Centos6.5)+N(Nginx1.10.1)+M(Mysql5.7.28)+P(Php7.0.33)+WordPress(wordpress-5.2.4)

需要准备的资源:

Linux(Centos6.*版本,其它版本不敢保证)自备

nginx、mysql、php不需要准备(yum仓库安装)

wordpress(wordpress-5.2.4-zh_CN.tar.gz)、wordpress插件(wp-mail-smtp.zip)-小编提供如下

资源链接:https://download.csdn/download/qq_41137110/12032258

小编摸索着搭建了两天,遇到了不少坑,搭建成功以后,又把服务器重置了重新搭建一遍,记录一下(我太难了🍺)

言归正传,接下来开始搭建lnmp+wordpress

查看linux发行版本

cat /etc/issue

可以看到小编的linux系统是Centos 6.10

Centos7及其它版本系统安装可能会有不同

一、安装Nginx

小编nginx安装目录是:/usr/local/

首先进入/usr/local目录,安装nginx依赖包--》wget命令下载nginx源码包--》然后解压--》编译安装

进入/usr/local目录:

cd /usr/local

安装nginx依赖包:

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

下载nginx源码包:

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

解压:

tar -zxvf nginx-1.10.1.tar.gz

进入解压后的源码目录:

cd nginx-1.10.1

检查编译环境:

./configure

编译:

make

运行:

make install

 

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

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

现在浏览器访问你服务器的公网ip就可以看到页面了(小编有域名,就直接访问域名了)

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

好了,现在nginx就安装成功了,关于nginx的其它配置我们先不聊,先完成wordpress博客的搭建

二、安装Mysql

命令(提示输入y/n时,输入y):

yum list installed | grep mysql

yum -y remove mysql-libs.x86_64

wget dev.mysql/get/mysql-community-release-el6-5.noarch.rpm

yum localinstall mysql-community-release-el6-5.noarch.rpm

yum repolist all | grep mysql

yum-config-manager --disable mysql55-community

yum-config-manager --disable mysql56-community

yum-config-manager --enable mysql57-community-dmr

yum repolist enabled | grep mysql

yum install mysql-community-server

现在mysql已经安装成功了

查看mysql版本:

mysql -V

启动mysql

service mysqld start

查看初始的数据库root用户密码:

cat /var/log/mysqld.log

 

登录数据库

 

1、 修改用户密码
 

mysql> alter user 'root'@'localhost' identified by 'youpassword';  

或者       

mysql> set password=password("youpassword");

注:

修改的密码比较简单时,可能会报错,不要着急往下看有解决办法


2、刷新权限
 

mysql> flush privileges;

注:

flush privileges 命令的作用是将当前 user 和 privilige 表中的用户信息/权限设置从 mysql 库 (MySQL数据库的内置库) 中提取到内存里。MySQL用户数据和权限出现修改后,希望在"不重启MySQL服务"的情况下直接生效,就需要执行这个命令。
 

接下来是一些简单的mysql语句

 

创建一个mysql普通用户wordpress(也可以暂时不创建普通用户),但是报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

这是因为MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。
使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。影响的语句和函数有:create user,grant,set password,password(),old password。

查看一下msyql密码相关的几个全局参数

mysql> SHOW VARIABLES LIKE 'validate_password%';

参数解释:

validate_password_dictionary_file
--插件用于验证密码强度的字典文件路径。
validate_password_length
--密码最小长度,参数默认为8,它有最小值的限制
validate_password_mixed_case_count
--密码至少要包含的小写字母个数和大写字母个数。
validate_password_number_count
--密码至少要包含的数字个数。
validate_password_policy
--密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
--默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
validate_password_special_char_count
--密码至少要包含的特殊字符数。

修改mysql参数配置


mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)

mysql>  set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

接下来就可以创建wordpress用户了

用wordpress登录mysql

 

至此,mysql5.7.28就安装完毕了

 

三、安装Php

处理有php 及 php扩展:

yum remove php* php-common

安装php7的yum源(先更新yum源然后再安装yum源)

rpm -Uvh http://rpms.famillecollet/enterprise/remi-release-6.rpm

修改yum源

(vim编辑器应该会用吧,若不会请自行百度)

vi /etc/yum.repos.d/remi.repo

[remi]段中的enabled=0改为enabled=1

vim /etc/yum.repos.d/remi-php70.repo

与remi.repo类似,将[remi-php70]段中的enabled=0改为enabled=1。

扫行命令查看版本如果显示的是7.x的话 那就没问题,当然也可以直接使用yum install php70进行安装

 yum list php

yum 安装php7

执行命令以下命令安装php及一些相关的扩展:

yum install php php-fpm php-cli php-pdo php-mysql php-gd php-bcmath php-xml php-mbstring php-mcrypt php-redis

安装好之后php -vphp -m 查看版本及安装的扩展

启动php

service php-fpm start

 

接下来测试一下在本地浏览器上能不能访问成功php文件,在nginx运行目录创建一个test.php

进入/usr/local/nginx/html 创建一个文件

文件内容如下

保存退出,然后在浏览器中访问www.playmyself.top/test.php,并没有执行php代码,说明php环境没搭建好啊

咋回事呢🍒,其实是因为只是安装了php,和nginx但是并没有把它们两个关联起来,肯定不好使啊

还需要配置nginx》conf使得nginx可以支持php

nginx配置文件路径:/usr/local/nginx/conf/nginx.conf,vi编辑这个文件进行修改

关于nginx.conf这个配置文件的一些说明可以参考下面链接文章(非常详细,感兴趣的可以看一下):

https://segmentfault/a/1190000014610688

下图是原来的

改成下面这个样子:

就是去掉一些注释然后把

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 

改为:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

 

保存后,重启nginx服务

cd /usr/local/nginx/sbin

./nginx -s stop

./nginx

浏览器再次访问:www.playmyself.top/test.php,就运行成功了

 

至此php也安装完成了,离成功又进了一步🍖🍖🍖🍖

 

四、安装WordPress

把wordpress压缩包wordpress-5.2.4-zh_CN上传到服务器上,目录为nginx网站根目录(/usr/local/nginx/html/)(这个会吧,小编用的是SecureCRT+SecureFX)

进入wordpress存放的目录,解压
 

cd /usr/local/nginx/html

tar -zxvf wordpress-5.2.4-zh_CN.tar.gz

然后当前目录就会解压出一个wordpress文件夹

这个wordpress文件夹里面就是我们的wordpress博客源码

里面有这么多文件,在浏览器访问这个readme.html文件,会看到安装提示

进入下面这个页面

普通用户wordpress我们已经创建好了,接下来我们只需要创建一个wordpress数据库

创建wordpress数据库

使用root超级管理员登录mysql创建wordpress数据库,然后授予wordpress用户拥有wordpress数据库的所有权限

对了别忘了刷新权限,

mysql>flush privileges;

创建数据库完成

接下来回到浏览器点击“现在就开始”,进入如下页面

点击“提交”后进入到下个页面

 

 

点击“现在安装”,进入下一个页面

 

然后就安装完成,可以登录了呦,开心不

点击登录,开始玩耍吧

点击登录后就能进入到你的站点了哦

 

 

 

至此,wordpress站点就搭建成功了

但是现在这个站点只能你自己使用(发布博客啥的),别人只能访问你的站点,不能注册登录,接下来我们实现可以让任何人注册登录

 

在站点后台管理页面仪表盘出点击“设置”--》勾上任何人都可以注册

然后往下滑选择“保存更改”

然后访问站点首页就可以注册了

然后就在注册页面填写信息,点击注册

然后跳到登录页面,提示注册完成,请检查电子邮件

 

那就打开邮箱查看电子邮件吧,但是。。。但是并没有收到邮件,没办法,点击下面的“忘记密码”试一下-》输入刚才注册的邮箱

获取新密码

提示我们——》》未能发送电子邮件:您的主机可能禁用了mail()函数。

不要慌,这就需要一个wordpress发送邮件插件了:wp-mail-smtp

WP Mail SMTP插件功能描述:

重新配置wp_mail()函数,用smtp功能替换主机默认的mail()功能。

插件详细功能:

1,自定义发送邮件的名称邮箱地址;

2,可以选择发送邮件的方式,有两种方式:smtp和PHP's mail();

3,自定义smtp的主机;

4,自定义smtp的端口;

5,选择邮件发送的方式,支持ssl;

6,自定义是否要验证smtp;

7,如果选择了验证smtp,需要输入账户和密码,以确保验证成功保证可以正常发送邮件。

 

我们登陆进后台页面,搜索并安装wp-mail-smtp插件

 

点击“现在安装”——》提示需要输入FTP

 

出现这个错误提示,需要你输入FTP信息的原因是因为你服务器文件和文件夹权限没有设置正确导致的。
 

需要修改wp-config.php配置文件

在wp-config.php文件的末尾加上下面三行

define("FS_METHOD","direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

命令:

cd /usr/local/nginx/html/wordpress

vi wp-config.php

 

 

然后再次搜索并安装wp-mail-smtp插件,这次不需要登录FTP了,但还是安装失败,错误:Too Many Requests

这到底是是咋回事呢???

在HTTP协议中,响应状态码 429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”。

有用户在WordPress论坛提出了这个问题询问官方是否屏蔽了中国地区的访问,官方的回复是没有屏蔽,只不过是触发了Nginx的限制模块。

民间的传言是说可能近期有部分中国地区的流量在攻击WordPress的服务器,因而触发了CDN系统的保护措施,然后提示429 Too Many Requests限制了请求次数。

咱也不管咋回事了,咱们下载离线包手动更新,小编上面提供了资源压缩包(wordpress和插件都有)

注意啊:这里一定要保证wordpress文件夹权限是777,否则会上传插件失败(没有权限)

更改wordpress文件的权限为777

cd /usr/local/nginx/html

chmod -R 777 wordpress

上传插件进行安装

安装完成后启用插件

启用后进行设置

插件界面使用说明:

 

 

其实这里也没什么特别要说明的,根据自己需求设置即可,很多人可能会想以自己域名为后缀的邮箱也是可以的,比如免费的企业邮箱有:网易免费企业邮箱;搜狐免费企业邮箱;QQ免费企业邮箱。

我们使用腾讯QQ邮箱的SMTP服务器,腾讯官方给出的提示:

所以SMTP HOST这里填写:smtp.qq;  SMTP Port填写:465;

提示:不论是采用mail.163邮箱还是mail.qq邮箱,只要是开启了POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务必须要用认证,否则邮件发送会失败;认证方式是登录自己的QQ邮箱,找到邮箱设置--账户:

右侧滚动条往下拉,找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

请先开启SMTP服务,然后再生成授权码,授权码就是 Password(即填写在WP Mail SMTP密码位置处)

 

保存设置之后,可以使用测试邮件功能来测试功能是否可用:


 

特别说明:

WP Mail SMTP插件除了使用QQ的,比如163的邮箱smtp,搜狐的,新浪的,我们都可以根据自己的喜好来设置使用。

 

接下来 我们就试一下注册一个新用户

wordpress用户登录mysql wordpress数据库删掉test用户

然后重新注册

注册成功

注册成功了,点击链接设置密码

 

问题又来了,点击链接后,提示您的密码重设链接无效,请在下方请求新连接

 

通过修改wordpress目录下wp-includes文件夹中的pluggable.php文件 可以解决wordpress注册邮件链接无效问题

cd /usr/local/nginx/html/wordpress/wp-includes

vi pluggable.php


找到如下语句(大约在1990行,可以在vi命令模式下输入1990gg 跳转到1990行,也可以命令模式用"/"查找关键字):

$message .= '<'network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login')">\r\n\" ;

修改为:

$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";

用户即可收到正常链接的邮件:

就可以设置密码

然后就可以登录了

登陆成功

 

忘记密码功能,发送的邮件也是一样的错误

通过修改WordPress根目录下wp-login.php文件

cd /usr/local/nginx/html/wordpress

vi wp-login.php

找到如下代码(大约在第396行):

$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";

修改为:

$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') ;

其实也就是把’<‘ .和. “>\r\n”去掉,但是这种方法在升级Wordpress后会失效,因为升级后wp-login.php会被替换,需要重新修改wp-login.php

修改后即用户可正常设置密码:

ok,忘记密码,邮件链接也好使了

 

 

ok,到现在为止,wordpress的搭建已经基本完成了,所有人都可以注册登录发表博客了

 

后记

 

这几天搭建了wordpress站点,遇到了不少问题,也学到了很多,写这篇博客的目的是记录一下搭建的过程,也是一次很好的总结,同时也希望能帮助到需要的人,如有不当之处欢迎留言讨论,让我们共同进步

最后,马上也要过年了,小编在这想说一句:过年好

 

 

wordpress压缩包及wp-mail-smtp插件资源链接:

https://download.csdn/download/qq_41137110/12032258

 

 

更多推荐

LNMP架构及Wordpress搭建(超详细版)