写在前面:
上个月双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.net/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.org/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.com/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.com/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 -v
,php -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.com/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.com; SMTP Port填写:465;
提示:不论是采用mail.163.com邮箱还是mail.qq.com邮箱,只要是开启了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.net/download/qq_41137110/12032258