Wordpress

Wordpress

LNMP安装

https://lnmp.org/

LNMP一键安装包是什么?

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。

MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 登录
mysql -u root -p

# 如果报找不到命令 cd到对应目录去登录
cd /usr/local/mariadb10/bin/
./mysql -u root -p

# 切换到mysql数据库
use mysql

# 执行以下命令,创建 MariaDB 数据库。例如 “wordpress”。
CREATE DATABASE IF NOT EXISTS wordpress;

# 执行以下命令,创建一个新用户。例如 “user”,登录密码为 123456。
CREATE USER 'user'@'localhost' IDENTIFIED BY '123456';

# 执行以下命令,赋予用户对 “wordpress” 数据库的全部权限。
GRANT ALL PRIVILEGES ON wordpress.* TO 'user'@'localhost' IDENTIFIED BY '123456';

# 执行以下命令,设置 root 帐户密码
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD('输入您的密码');

# 执行以下命令,使所有配置生效。
FLUSH PRIVILEGES;

# 退出
\q

Wordpress

修改 WordPress 配置文件

  1. 依次执行以下命令,进入 WordPress 安装目录,将wp-config-sample.php文件复制到wp-config.php文件中,并将原先的示例配置文件保留作为备份。

    1
    cd /home/wwwroot/wordpress
    1
    cp wp-config-sample.php wp-config.php
  2. 执行以下命令,打开并编辑新创建的配置文件。

    1
    vim wp-config.php
  3. i 切换至编辑模式,找到文件中 MySQL 的部分,并将相关配置信息修改为 配置 WordPress 数据库 中的内容。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // ** MySQL settings - You can get this info from your web host ** //
    /** The name of the database for WordPress */
    define('DB_NAME', 'wordpress');

    /** MySQL database username */
    define('DB_USER', 'user');

    /** MySQL database password */
    define('DB_PASSWORD', '123456');

    /** MySQL hostname */
    define('DB_HOST', 'localhost');
  4. 修改完成后,按 Esc,输入 :wq,保存文件返回。

开启HTTPS支持

DNS

获取域名

这里有一个免费的域名, 先凑合用着吧

https://www.freenom.com/

freenom 注册方法

https://zhuanlan.zhihu.com/p/115535965

Freenom常见问题解决方法

http://www.360doc.com/content/21/0124/00/30583588_958609144.shtml

  • 注册的时候搜索要加上后缀不然会显示 不可用

  • checkout 到购物车改成 12月 free

  • 谷歌邮箱直接登录 登录后要更改自己的个人信息里面的地址(改成ip所在地) 不然无法成功注册

  • 菜单栏 servers -> my domains 就可以看到地址了

  • 最后再修改一下NS服务器

    • Manage Domain -> Management Tools -> nameserver -> Use custom nameservers (enter below)

    • 这里填写cloudflare 或者 dnspod 给出来的 Nameservers 就好了

    • 类似于

    • TypeValue
      NSkatja.ns.cloudflare.com
      NSkirk.ns.cloudflare.com

域名解析

域名的NS记录Name Server)是指处理域名解析的服务器,说白点就是你的域名由谁家来解析。一般购买了域名后,默认的NS记录就是指向域名提供商的(例如NameSilo的默认就由它自己解析)。你可以修改域名的NS记录,让它由不同的解析服务商来解析,例如可以指向Cloudflare或者DNSPod

之后DNS(Domain Name System),常用的DNS记录包括域名解析中A记录、CNAME、MX记录。域名A记录又称为IP指向,就是说你这个域名代表什么IP;域名CNAME是指别名指向,就是说指向另一个域名,例如可以设置test.vpsgo.com指向www.vpsgo.com;域名的MX记录就是邮件交换记录,是做邮件服务器需要设置的。本文主要介绍域名A记录解析。

cloudflare 解析

https://zhuanlan.zhihu.com/p/56423186

https://www.vpsgo.com/domain-ns-cloudflare-dnspod.html#NS

HTTPS SSL/TLS

参考文章

acme.sh

https://ruby-china.org/topics/31983

https://ruby-china.org/topics/28471

https://ruby-china.org/topics/25543

https://ruby-china.org/topics/31942

caddy

https://caddyserver.com/docs/quick-starts/https

步骤

1
2
3
4
5
6
7
8
# 安装 acme.sh
curl https://get.acme.sh | sh

# 然后重新载入一下 .bashrc
source ~/.bashrc

# 至此acme安装完成
acme.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 注册账号
sudo ~/.acme.sh/acme.sh --register-account -m jackliuworkemail@gmail.com --server zerossl

# 为lager.cf创建密钥
# -k 表示密钥长度,后面的值可以是 ec-256 、ec-384、2048、3072、4096、8192,带有 ec 表示生成的是 ECC 证书,没有则是 RSA 证书。在安全性上 256 位的 ECC 证书等同于 3072 位的 RSA 证书。
sudo ~/.acme.sh/acme.sh --issue -d lager.cf --standalone -k ec-256

# 由于 Let's Encrypt 的证书有效期只有 3 个月,因此需要 90 天至少要更新一次证书,acme.sh 脚本会每 60 天自动更新证书。也可以手动更新。
# 查看计划任务
crontab -l
# 手动更新 ECC 证书,执行:
sudo ~/.acme.sh/acme.sh --renew -d lager.cf --force --ecc

# 请注意:reloadcmd非常重要。证书可以自动续订,但是,如果没有正确的“reloadcmd”,证书可能无法刷新到您的服务器(如nginx或apache),那么您的网站将无法在60天内显示续订证书。
# 注意:无论什么情况,密钥(即上面的lager.cf.key)都不能泄漏,如果你不幸泄漏了密钥,可以使用 acme.sh 将原证书吊销,再生成新的证书,吊销方法请自行参考 acme.sh 的手册
acme.sh --installcert -d lager.cf \
--keypath /usr/local/nginx/ssl/lager.cf.key \
--fullchainpath /usr/local/nginx/ssl/lager.cf.cer \
--reloadcmd "sudo service nginx force-reload" --force --ecc

# 生成 dhparam.pem 文件
openssl dhparam -out /usr/local/nginx/ssl/lager.cf.pem 2048


# 配置nginx 启用 https
vim /usr/local/nginx/conf/nginx.conf

# 检查配置
sudo service nginx configtest
# 重启服务
sudo service nginx restart


#验证 SSL
#访问 ssllabs.com 输入你的域名,检查 SSL 的配置是否都正常:
https://ssllabs.com/ssltest/analyze.html?d=ruby-china.org

一些注意事项

  • ssl_dhparam 未配置,将导致 ssllabs.com 的评分降到 B,并给 This server supports weak Diffie-Hellman (DH) key exchange parameters. Grade capped to B. 的警告。
  • ssl_prefer_server_ciphers on 也是一个必要的配置,否则会 A+ 变成 A-;
  • 如果你需要兼容老系统或老浏览器的话,你需要配置 ssl_ciphers,详见 Mozilla Server_Side_TLS 的介绍,Nginx 里面 ssl_ciphers 默认值是 HIGH:!aNULL:!MD5; ref

acme.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看证书列表
acme.sh --list

# 删除证书
acme.sh remove Main_Domain (证书的主域名,上述证书列表中可看见)

# 升级 acme.sh 到最新版 :
acme.sh --upgrade

# 如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade

#你也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0

# 如果出错, 请添加 debug log:
acme.sh --issue ..... --debug
# 或者:
acme.sh --issue ..... --debug 2

ngix

nginx config 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
listen 80; #如果硬性要求全部走https协议,这一行去除
listen 443 ssl http2; #如果硬性要求全部走https协议,这里去除ssl
server_name chandao.test.com;

ssl_certificate /usr/local/nginx/ssl_cert/test.com/chandao.test.com.cer;
ssl_certificate_key /usr/local/nginx/ssl_cert/test.com/chandao.test.com.key;
ssl_dhparam /usr/local/nginx/ssl/lager.cf.pem;

#ssl性能调优
#nginx 1.13.0支持了TLSv1.3,TLSv1.3相比之前的TLSv1.2、TLSv1.1等性能大幅提升
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
# ssl_prefer_server_ciphers on|off 作用:是否由服务器决定采用哪种加密算法
# 如果ssl协议支持tlsv1 tls1.1这种老协议,设置为 on ,并配合ssl_ciphers使用
# 如果ssl协议只支持tlsv1.2 tlsv1.3新协议,设置为 off (nginx默认为off),因为新协议不再采纳此参数
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
#使用ssl_session_cache优化https下Nginx的性能
ssl_session_cache builtin:1000 shared:SSL:10m;
#OCSP Stapling 开启。OCSP是用于在线查询证书吊销情况的服务,使用OCSP Stapling能将证书有效状态的信息缓存到服务器,提高 TLS 握手速度
ssl_stapling on;
#OCSP Stapling 验证开启
ssl_stapling_verify on;
}

nginx config 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http {
# 新增
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 兼容其他老浏览器的 ssl_ciphers 设置请访问 https://wiki.mozilla.org/Security/Server_Side_TLS

server {
listen 80 default_server;
# 新增
listen 443 ssl;
ssl_certificate /home/ubuntu/www/ssl/www.your-app.com.key.pem;
ssl_certificate_key /home/ubuntu/www/ssl/www.your-app.com.key;
# ssl_dhparam
ssl_dhparam /home/ubuntu/www/ssl/dhparam.pem;

# 其他省略
}
}

80 重定向到 443

这些办法试了好多次都不太行

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80 default_server;
server_name www.lager.cf;
return 301 https://$server_name$request_uri;
}


server {
listen 80;
server_name www.awesomes.cn,awesomes.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}

v2ray + tls + websocket 流量伪装

https://www.bwgss.org/616.html

附录

  1. 证书(Certificate) – *.cer *.crt

  2. 私钥(Private Key) – *.key

  3. 证书签名请求(Certificate signing request) – *.csr

  4. 编码方式: 1. pem - base64编码 2. der - 二进制编码(少见), cer,key,csr 均可用这两种编码方式

  5. 证书吊销列表(Certificate Revocation List) – *.crl

  6. jks(javakeystone)— 是JAVA的keytools证书工具支持的证书私钥格式,javakeystone 里面存放着key和信任的CA,key和CA可以有多个。

Wordpress


Wordpress
https://www.oikiou.top/2022/aa858de8/
作者
Oikiou
发布于
2022年2月21日
许可协议