CentOS下搭建LNMP+WordPress+http2.0教程
此文是本人CentOS下搭建WordPress的一些笔记,环境搭建时间:201804;将看过的几篇文章总结下来,形成一条龙长文、不用大家再找来找去。
本文大概分为此几部分:
一、基础命令更新;
二、服务器加速(非必选)(10分钟);
三、LNMP安装(30分钟);
四、WordPress搭建(30分钟);
五、开启https\https2.0(15分钟);
六、http跳转https(10分钟);
七、“噢,没有这个文件”;
什么是lnmp?就是Linux、Nginx、MySql、PHP,装好这些就能为你的应用(WordPress)提供部署环境。这些在lnmp.org上面都能找到官方教程。当然还有lamp、lnmpa等,a代表Apache。如果我无写明具体路径的,说明命令是哪里都能执行。现在开始一条龙教程。
一、基础命令更新:
yum -y install wget lrzsz screen gcc glibc-devel iptables iptables-services
screen:这个命令新手可能比较陌生,解释一下。screen可以在终端断开连接的情况下,不终止服务器的服务运行。lnmp需要安装十几至几十分钟,过程中很容易断网的。
lrzsz:针对secureCRT客户端,实现轻便的文件上下传功能。
二、服务器加速(非必选):
其实就是serverSpeeder安装教程。如果已经安装过,就可以跳过。没装过的也可以先把WordPress装好,对网速觉得不满意再回来搞这部分。
1、先更换内核:
centos6: kernel-2.6.32-504.3.3.el6
rpm -ivh http://xz.wn789.com/CentOSkernel/kernel-firmware-2.6.32-504.3.3.el6.noarch.rpmrpm -ivh http://xz.wn789.com/CentOSkernel/kernel-2.6.32-504.3.3.el6.x86_64.rpm --force
centos7: kernel-3.10.0-229.1.2.el7.x86_64
rpm -ivh http://soft.91yun.org/ISO/Linux/CentOS/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force
rpm -ivh https://buildlogs.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-3.10.0-327.el7.x86_64.rpm --force
2、安装完成后,需要重启才能生效:
shutdown -r now
3、安装服务:
cd /home/down (下载目录,根据你习惯而定)
wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh && bash
chmod +x serverspeeder-all.sh
./serverspeeder-all.sh
三、LNMP安装:
完整教程请查看:https://lnmp.org/install.html
不过既然写文章了,当然要总结一下:
1、启动screen(必须):
screen -S lnmp (大写S)
如果网络掉线,可以重新连接,再执行 screen -r lnmp 就会看到你的lnmp安装进程
2、进入个人下载目录:
cd /home/down (下载目录,根据你习惯而定)
3、下载LNMP并启动安装脚本:
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
如果你的服务器内存有1G以上,你可以选择MYSQL5.6或以上、PHP7或以上。 反之,如果你必须安装MYSQL5.6或以上、PHP7或以上,你的服务器必须有1G以上内存。
如无特别要求,一直按Enter键,直到开始安装即可。默认安装对机器要求只需128M~512M。
4、安装完成:
如果看到这个界面,表示安装成功,按ctrl+c退出此界面。
四、WordPress搭建
这个环节比较多命令,修改文件比较多,首次操作需要半小时左右。先简单说下,这里要做的事是创建Nginx--WordPress--MySQL的整条链接。
1、创建mysql连接:
登录mysql:
mysql -u root -p
>输入密码
输入的时候密码不会显示,这个密码就是你安装lnmp时候设置的密码。如果你是一路enter(回车)下来,默认就是root/root。
创建数据库:
CREATE DATABASE wordpress_db;
创建MySQL用户:
CREATE USER wordpress_user@localhost;
设置密码:
SET PASSWORD FOR wordpress_user@localhost=PASSWORD("password");
配置权限:
GRANT ALL PRIVILEGES ON wordpress_db.* TO wordpress_user@localhost IDENTIFIED BY 'password';
刷新权限
FLUSH PRIVILEGES;
记下你创建的WordPress数据库名,数据库用户,用户密码,后面用于写入到WordPress的conf文件中。WordPress就能通过配置文件连接上mysql数据库。(我知道你们十有八九都是写wordpress\wordpress\wordpress,或者直接复制我的命令改也不改,不是不行,只是你们要确定mysql远程连接是关闭,具体方法这里不展开,不然小心数据库被黑)
2.下载WordPress
官方地址是:https://cn.wordpress.org
进入个人下载目录:
cd /home/down
下载WordPress压缩包:
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
解压:
tar -zxvf wordpress-4.9.4-zh_CN.tar.gz
此时解压出来的文件夹只是我们用来备份用的。原则上不改动里面的内容。
然后将WordPress复制到运行目录,这里才是以后修改文件的地方。当然你也可以复制到别的路径中:
cp -r ./wordpress/* /var/www/
默认配置文件只给了模板,我们要把模板复制出来:
cp /var/www/wp-config-sample.php /var/www/wp-config.php
修改目录权限
chown -R www:www /var/www
设置wp-config.php文件(重要)
vi /var/www/wp-config.php
按照如下修改:
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress_db');
/** MySQL数据库用户名 */
define('DB_USER', 'wordpress_user');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'password');
/** MySQL主机 */
define('DB_HOST', 'localhost');
约在20行左右,将刚才记下的WordPress数据库名,数据库用户,用户密码往这里填。然后记下这个/var/www,下一步需要用到。
(vi怎么用没必要解释了吧。。。)
3.配置Nginx
lnmp搭建的Nginx主目录位于/usr/local/nginx中,配置文件在其下conf/文件夹中
vi /usr/local/nginx/conf/nginx.conf
按照如下修改:
server
{
#需要监听的端口
listen 80 default_server;
#这里输入服务器的域名或者ip
#server_name 192.168.1.100;
server_name domain.com;
index index.html index.htm index.php;
#这里输入WordPress主目录
root /var/www;
……
}
约60行左右,配置好监听端口(80)、服务器地址(ip或域名)、WordPress主目录(/var/www)。
重启Nginx:
service nginx restart
几秒后就可以通过 ip/wp-admin 或者 domain.com/wp-admin 访问你的WordPress初始化页面。
至此,WordPress搭建完成,但手工部署的WordPress有几个大坑。大家可以先玩两天,然后再回来修改几个坑。
------从这部分开始属于应该属于进阶技能,太基础的命令不会说。直奔重点和踩过的坑了-----
五、使用Let's Encrypt开启https\https2.0
Let's Encrypt 是一个免费的SSL机构,acme.sh 是一款用于签发 Let's Encrypt 证书的脚本。
项目地址:https://github.com/nanqinlang-script/acme
具体教程:https://sometimesnaive.org/article/61
获取脚本:
wget https://raw.githubusercontent.com/nanqinlang-script/acme/master/acme_2.0.sh
运行:
bash acme_2.0.sh
使用说明
①输入你的域名(如yourdomain.com)
②选择要生成证书的类型。输入数字 0(生成 RSA 类型) 或 1(生成 ECC 类型)。若未选择则默认生成 RSA 类型
③用 DNS 方式验证域名所有权:添加脚本中显示的 绿色字体的 TXT 记录,添加完成后稍等下(等个五分钟应该够了),回车继续
④SSL 证书文件生成至 /home/your-domain_rsa 或 /home/your-domain_ecc 路径下
执行后会生成如下文件:
ca.cer:中间证书
yourdomain.key:证书密钥
yourdomain.cer:站点证书
fullchain.cer:站点证书+中间证书
坑1:运行脚本后会生成一串txt,暂停在此。然后去你的域名管理商那里,按照脚本提示添加记录。最好严格按照这个步骤做,我第一次没弄好,后面出了一些莫名其妙的问题,重新做多几次会提示你申请次数过多(貌似限制5、6次/3小时)。
坑2:cer、key文件我是确定拉了下来,但 /home/your-domain_rsa 这个文件夹生成失败,解决方法:删除 acme_2.0.sh 最后两行 rm -rf 命令,然后自己建立 /home/your-domain_rsa,自己把cer、key文件拷进去(前提是你很确定生成的cer、key文件没问题)。
坑3:用这个脚本生成的证书是cer文件,用其他方法可能生成crt文件。如果你在其他教程看到crt,其实用法还是一样,两个文件相当于一个xls、一个xlsx。
nginx.conf配置:(加上后面几行ssl开头的语句,加在access_log前后、server节点之内)
server
{
listen 443 ssl http2;
server_name yourdomain.com;
…
ssl on;
ssl_certificate /home/yourdomain.com_rsa/yourdomain.com.cer;
ssl_certificate_key /home/yourdomain.com_rsa/yourdomain.com.key;
access_log /home/wwwlogs/access.log;
}
六、http跳转https
这个不难,一开始没做过会以为是在域名服务商设置跳转的,其实还是用Nginx做内部重定向而已。
server
{
listen 80 default_server;
server_name yourdomain.com;
rewrite ^(.*)$ https://yourdomain.com permanent;
}
server
{
listen 443 ssl http2;
server_name yourdomain.com;
…
}
七、“噢,没有这个文件”
用这一套流程下来的WordPress默认禁止文件夹扫描权限。主要体现在两个方面:
1、WordPress后台--外观--编辑,提示“噢,没有这个文件”
2、没有下载过的历史主题
修复方法:
转自:http://www.heminjie.com/wordpress/2149.html
1、用ssh登陆服务器,找到php.ini(lnmp默认的php配置文件在/usr/local/php/etc/目录下)
2、用vi命令编辑php.ini
vi /usr/local/php/etc/php.ini
3、查找scandir,大概在385行左右,找到后删除scandir,(注意后面的逗号也要一起删除哦~)最后wq!保存。
4、重启php或者整个lnmp服务使配置生效,再刷新下wp后台主题编辑页面,已经OK了~
php重启命令:service php-fpm restart
lnmp重启命令:lnmp restart
暂时写完,后续有新发现再补充……