CentOS下搭建LNMP+WordPress+http2.0教程

此文是本人CentOS下搭建WordPress的一些笔记,环境搭建时间:;将看过的几篇文章总结下来,形成一条龙长文、不用大家再找来找去。

本文大概分为此几部分:

一、基础命令更新;

二、服务器加速(非必选)(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.rpm

rpm -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、安装完成:

CentOS下搭建LNMP+WordPress+http2.0教程

如果看到这个界面,表示安装成功,按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');

CentOS下搭建LNMP+WordPress+http2.0教程

约在20行左右,将刚才记下的WordPress数据库名,数据库用户,用户密码往这里填。然后记下这个/var/www,下一步需要用到。

(vi怎么用没必要解释了吧。。。)

3.配置Nginx

lnmp搭建的Nginx主目录位于/usr/local/nginx中,配置文件在其下conf/文件夹中

vi /usr/local/nginx/conf/nginx.conf

按照如下修改:

server
{
#需要监听的端口
listen default_server;

#这里输入服务器的域名或者ip
#server_name 192.168.1.100;
server_name domain.com;

index index.html index.htm index.php;

#这里输入WordPress主目录
root /var/www;

……

}

CentOS下搭建LNMP+WordPress+http2.0教程

约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

CentOS下搭建LNMP+WordPress+http2.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

暂时写完,后续有新发现再补充……

上一篇:JavaScript从初见到热恋之深度讨论JavaScript中的面向对象。


下一篇:c++ http服务器客户端程序-传输json解析json数据(2)