开篇之前,郑重提醒一下自己,下次如果再要重装,重新加ssl,记得一定要先关掉cf的proxy
博客加ssl后,我备份,重装了两次,把这过程中的一些细节补充下来,免得以后忘记
1,首先就是那个小锁头,wordpress我重装后,用updraftplus还原后(其实还原过程中并不顺利,后边细说),把ssl加上,在博客首页并没有出现小锁头,而是一个圆框里边有一个i,意思就是连接并非完全安全,根据经验,这是因为博客内容没有全部使用https的原因,但是奇怪的是,我在重装前,博客是已经出现了小锁头的,怎么重装后就不行了呢?内容我完全没变啊,难道又得来一次phpadmin,修改数据库?天啊,好烦。于是继续搜索资料,基本确定了就是博客内容里边含http的原因,但是有一篇文章提供了一个更好的方法,就是利用chrome浏览器,具体做法就是在出现圆框中有一个i图标的网页中,按右键,点选检查,然后右边出来一个内容框,往右翻到security,点选它,你会看到下面两列内容,有个三角符号的表示有未安全内容,根据提示,你刷新一下左边你的博客内容,你会看到具体的信息,然后点选那个"View requests in Network Panel",
就来到了这:
可以更直观的发现到底是哪些个链接用了http,把链接改回https(前提是你已经在数据库里把所有http换成了https),收工。如果还是不行,就按照上面的步骤再来一次。
2,上面说到了备份还原,我用的是updraftplus,没重装系统前,只备份过,还没试过还原,没想到还原也会出幺蛾子,具体原因不明,只说说怎么解决。
问题现象就是还原到最后,出错,提示失败,具体提示就是那个什么languages跟languages-old这两个oid、gid权限什么的问题,我反复捣鼓多次,网上也找不到详细资料,索性一发狠,先把这两个文件夹都删了,然后wordpress控制台会变成英文,再来还原,ok了
3,再说说这updraft,这个插件安装完成后,有一个很好的地方就是可以把备份传送到其他网盘,比如gd,但是我在实际使用过程中发现,绑gd的时候,最后一步总是出错,查资料发现有一个老外的解决方法很有意思,就是先把这个插件停用,再启用,就可以成功绑定gd了。
4,说说这个证书,上一篇文章我是用了官方指导的方法,自己去letsencrypt申请的,其实还有一个第三方脚本可以实现,并能自动帮你更新证书(lets的证书有效期只有3个月),其官网是: https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
wiki里边说的也是蛮详细的了,但是自己实际操作下来,还是坑不少,我分别总结一下
a,首先这个别名,在我的vps上就没成功,
curl https://get.acme.sh | sh
然后我运行acme.sh
,提示没有这样的命令,已经重启了也没用,后来只能带绝对路径/root/.acme.sh/acme.sh这样去运行它。
11月7日更新:在Atlantic的服务器上,倒是可以直接运行acme.sh
b,安装证书的时候,wiki上给出的命令对小白非常不友好,我这里写下我自己摸索成功的命令行:
/root/.acme.sh/acme.sh --installcert -d iwilz.com --key-file /etc/apache2/ssl/iwilz.com.key --fullchain-file /etc/apache2/ssl/fullchain.cer --cert-file /etc/apache2/ssl/iwilz.com.cer --reloadcmd "service apache2 force-reload"
c,上面的命令行有一个大坑,我也是反复测试才发现的,就是 /etc/apache2 这个目录是系统已经有了的,但是下面的ssl子目录是得自己创建并赋予755,不然,你在这里能耗一辈子
d,那个 service apache2 force-reload 我是在别的博客找来的,经测试可以运行,
e,生成证书命令很简单,我用的是apache,
acme.sh --issue -d iwilz.com --apache
f,acme.sh自动更新证书是靠在crontab加了个定时任务来实现的,其任务内容为:
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (- installed on Wed Oct 30 07:10:40 2019)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
40 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
g,说到这个定时,想起以前刷甲骨文的时候,记录一下:
#!/bin/bash
export PATH=/root/bin:$PATH
[[ -e "/root/lib/oracle-cli/lib/python3.6/site-packages/oci_cli/bin/oci_autocomplete.sh" ]] && source "/root/lib/oracle-cli/lib/python3.6/site-packages/oci_cli/bin/oci_autocomplete.sh"
oci compute instance launch --availability-domain 已经替换 --image-id 已经替换 --subnet-id 已经替换 --shape 已经替换 --assign-public-ip true --metadata '{"ssh_authorized_keys": "已经替换"}' --compartment-id 已经替换
上面是刷机脚本,下面是定时脚本(每分钟执行一次,输出结果到/home/oci这个文件)
* * * * * /root/oci.sh > /home/oci 2>&1
如果要每30秒执行一次,就加下面这一行
* * * * * sleep 30; /root/oci.sh > /home/oci 2>&1
然后tail -f /home/oci 就可以看到输出
5,还得补充下,Apache下,怎么修改那个/etc/apache2/sites-enabled/wordpress.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/wordpress
# ServerName example.com
# ServerAlias www.example.com
<Directory /var/www/wordpress/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@example.com
ServerName iwilz.com
DocumentRoot /var/www/wordpress
SSLEngine on
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLCertificateFile /etc/apache2/ssl/iwilz.com.cer
SSLCertificateKeyFile /etc/apache2/ssl/iwilz.com.key
SSLCertificateChainFile /etc/apache2/ssl/fullchain.cer
</VirtualHost>
另外记得 service apache2 restart 前,先a2enmod ssl
文章评论