跳到内容

文章类别:维护日志

申请Let’s Encrypt证书,全站HTTPS访问

折腾了好几天Let’s Encrypt始终没有成功,接前篇启用了CloudFlare的CDN之后,如果要启用SSL加密,好像要CloudFlare的证书才行,界面全英文没耐心看下去而且已经深夜了就没搞。昨日惊闻一大波VPS的IP已出狱,赶紧一测果然可以直通访问了,这样就可以不用CDN中转了,而且裸IP部署HTTPS也简单一些,赶紧搞一波。

部署HTTPS首先需要可信的证书颁发机构给你颁发一个证书,我们个人小站用免费的Let’s Encrypt就行了,不过有效期只有3个月。按照网上的前人经验在Let’s Encrypt网站转到Certbot网站,这个Certbot装到服务器上可以自动申请和更新证书,更新可以定期自动,解决有效期只有三个月的问题。

证书申请、更新部署网上已经很多了,此处不再细说。把证书部署上去,强制HTTPS访问,博客后台显示小绿锁了,结果在博客首页却显示“您于此网站之间建立的链接并非完全安全”。

造成这个现象的原因是站内还有很多资源没有使用HTTPS,例如CSS文件和图片,这里解决比较简单装一个插件就行了,插件名“Really Simple SSL”,启用插件就完事了,如果不想用插件,就手动改一下博客文件。

这里本来以为万事大吉,结果编辑这篇文章的时候上传图片又出问题了,mmp搞了半天刷新一下页面自己好了。

– EOF –

博客迁移并增加CDN

本文技术要点概览:宝塔面板,CloudFlare CDN,NS记录,PHP版本升级,虚拟目录。

前几篇文章刚把博客从阿里云签到祖传搬瓦工,那时候是因为要备案还老审核,烦得很,只好迁到仅有的128M内存、1M带宽搬瓦工祖传OVZ VPS上。后来因为人类固有的好奇心和求知欲,又购置了几个512M内存的搬瓦工VPS,一个KVM架构一个OVZ架构,舒爽地用了几天,然而party开party其中有一个OVZ VPS不幸凉了,8美刀换过一次IP过几天又凉了,只好扔在一边。偶然得知通过CDN加速可以把已经凉了的VPS利用起来建站,又想到博客放在128小鸡上确实憋屈,可以迁过来,把128小鸡专用于上网。

先在OVZ 512小鸡上装了宝塔面板,毕竟懒人,不一个一个搞了,宝塔面板功能很全,快速部署和管理VPS很方便。当然这个时候因为凉了,是不能直接连上的,从另一个KVM的512小鸡跳转连过来的。博客在128小鸡上平稳运行先不急着迁,先在OVZ 512小鸡上用宝塔面板装一个WordPress试一下CDN好不好使。

CDN有很多,不过有些需要备案,有些收费,其中CloudFlare免费功能已经够用了,就用这家。注册登进去就让添加被CDN的域名,全英文界面没细看我也是一脸懵。我的域名在Namesilo注册,NS服务器指定为DNSPod,然后在DNSPod中添加域名解析记录,一直没想通在CloudFlare里面加了域名他怎么就生效了。后来仔细一看还要把NS记录改成CloudFlare?那我这些域名全到国外解析不会很慢哦。后来仔细看了一下NS记录,原来可以把特定三级域名的NS指定到其他运营商,于是把三级域名blog的NS记录改为CloudFlare的NS,仅把blog用CloudFlare解析用于CDN。CloudFlare会把网页内容进行缓存,缓存到自己的服务器上,然后把域名也解析到自己的服务器上,加速访问,这样用户不用直接访问我的512小鸡,即使小鸡凉了也不要紧。

这样先搞了一个测试域名成功了,然后把文件服务数据库从128小鸡上导出来,scp到512小鸡上放好导入好,建好虚拟主机再把域名解析改过来,这时候本该万事大吉,结果却错了,博客主页都挂掉了,报错内容为:

Parse error: syntax error, unexpected 'new' (T_NEW) in
C:\xampp\htdocs\titaniumcobra\wp-content\plugins\exec-php\exec-php.php on line 22

然后打开这个文件,找到这行代码:

$GLOBALS['g_execphp_manager'] =& new ExecPhp_Manager();

这一看就是Exec-PHP这个插件的问题,博客中使用了这个插件在文章里面和侧边栏显示一些统计信息。赶紧进FTP那插件目录给重命名了,相当于移除插件,但是迁移过来并没有些改什么东西为什么就不能运行了呢。查了一下,这款插件上次更新已经是8年前了,目前插件页面已关闭下载安装,很多人在底下评论更新到PHP7以后插件出现问题。原来一些以前的在PHP4或PHP5上能用的语法在PHP7上已经废弃了,在128小鸡上,因为硬件配置比较低,安装的PHP和MySQL都是低版本,迁过来以后配置高了,直接装的高版本,没想到还出现兼容性问题。其实自己修改一下就行了,将上述代码改为如下,删除”&”符号即可恢复。

$GLOBALS['g_execphp_manager'] = new ExecPhp_Manager();

然后将插件目录名字改回来,提示其他地方还有错误,与上面类似都改完就能正常访问了,但是安全起见还是寻找其他仍在维护的PHP执行插件比较好。

EOF

再次以为万事大吉,首页打开都是好的,这篇文章都看得见,结果一进详情页出现404了,把固定链接改成朴素型的就能正常访问,看来是Nginx的Rewrite重定向有问题了,在宝塔面板里面好像叫伪静态来着。好在这些都是前人采购的坑,宝塔面板自带WordPress用的Rewrite规则文件,把内容复制到对应站点的Nginx设置里面就行了。

不禁感叹,现在做个站真的容易,基本上什么都已经弄好了,直接在图形界面操作就行了。

Real – EOF –

博客配置移动版界面

不记得什么时候给博客配了移动版界面,这里还是记一下吧,现在用的主题没有适配移动版,在手机上看显示的是PC版界面,很不友好,可读性差,在网上找了一圈使用WPtouch插件解决。

现在懒了,能用插件就用插件了,一方面是操作简单节省时间,一方面是在各种升级之后还能保留,如果自己改代码,不晓得什么时候就被覆盖没了。

插件可以免费使用,部分功能需要升级到付费PRO版,例如更改主题等,不过默认主题就挺好用的,修改一下颜色和图片就能用了。

效果如图。

顺便又修了,添加特色图片后,分类文章页面和搜索结果页面文章列表左侧大片空白只显示一个图片的问题,改了PHP把判断有没有特殊图片那段注释了(其实不是问题,只是我觉得不好看)。

博客从阿里云迁移到搬瓦工

不久之前博客的域名在美橙互联上,提示要上传身份证等个人信息不然不给解析,把域名迁移到了namesilo。

现在阿里云又打电话说我空间备案主体信息不符,之前备案的电话打不通了,要求备案变更主体信息。因为换号了之前的手机号不用了,而且不是重新备案,我想就把电话改一下就好了,上去备案系统结果网页还改版了,找了半天找不到。改了电话,上传了一堆身份证之类的,过了两天阿里云又打电话,说域名所有人跟备案主体不符不能通过备案。因为namesilo有域名隐私才用的namesilo,你现在跟我讲要把这个关了,不然不给备案,不备案就不能访问空间,我有一句你麻痹我想跟你讲一讲

而且阿里云这个每年六七十块虽然不贵,但就只是一个虚拟主机,1M带宽,流量也只有10G,看日志至少有一大半都被阿里云自己的IP(Hangzhou Alibaba Advertising Co.,Ltd.)不知道消耗到哪里去了,上个月直接耗完给我禁止访问了。

虽然我这博客上没什么隐私数据,而且有网友愿意给我提供香港空间存放博客,想了想既然自己有个国外的虚拟主机,还是自己管理方便一些,不过就是内存太小了128M的,带宽也只有1M,同时还用做你懂的查外国资料的用途。先试一下,如果搞不成再拜托网友吧。

开始想自己装Nginx、Mysql、PHP,然后再自己优化一下,上网查资料的时候觉得太麻烦了,刚好又看到一个lowendbox出品的lowendscript脚本,自动在低配机器上安装配置Wordpress、Nginx、Mysql和PHP,不过试了几次没有搞成,一直报错,他这个脚本基于debian5和ubuntu10.04的,源里好多软件都不能安装了,而且会替换默认ssh软件,当时烦球得很就没再继续研究了。

后来又找到了LNMP一键安装包,试了一下很顺利装上了,不过貌似优化不是很好,占内存有点高,我把博客放上来之后立马内存使用爆表了,还经常页面不能访问,502 Bad Gateway。

网上随便查了一下,Nginx配置文件里面worker_processes从auto改成2,PHP-FPM配置文件里面max_children从5改成2,然后又重启这两个服务,内存降下来了,随便开了几个网页,没在报502,就先这样吧,我也不是专业维护网站的,其他参数出了问题再调。

中间还修了一个上传媒体错误的问题,是web目录的权限不对,只读的,给上可写就行了。

修改域名服务器为DNSPOD

从一开始直到我要修改namesilo上的域名服务器,我都不知道这个域名服务器原来是可以单独设置的,一直都是使用域名注册商提供的域名服务器。赶紧查资料补一补…

域名从注册到使用我大致给分成三部分:

第一就是域名注册,英文大概是Domain Registrations,先要找一家域名注册商,国内有万网、美橙等,国外有Godaddy、namecheap、namesilo等,通过在这些注册商注册域名,注册商再到ICANN登记,获得域名的所有权,令其他人不得使用,域名在所有期内属于个人财产。

但是只有一个域名并没有什么用,还要将域名下的一级、二级、三级等域名与IP地址关联起来,这一部分叫做DNS解析,英文大概是DNS Records,一条记录Record指定一个域名和IP的关联。

接下来就是我要说的重点,域名注册和DNS解析是可以分开的,可以不在同一家运营商,比如我在namesilo注册了域名,DNS解析是DNSPOD提供的,但是别人不知道你的解析服务是谁提供的,这就需要到注册商那里进行设置,这就是域名服务器设置,英文名大概是Name Servers,用来指定解析服务的提供者。

相信我说到这里大家应该已经清楚了,至于怎么切换域名服务器,网上教程很多,这里就不详细说明了,说一点我设置的时候遇到的小插曲。

很久之前我使用过景安网络zzidc的虚拟主机服务,后来因为一些原因没再使用了,转到了万网虚拟主机。这次设置在DNSPOD设置域名解析的时候,提示域名已经被其他人注册了,无法再设置域名解析,提示邮箱地址是zzidc后缀,联想到以前用过景安,但我之前都不知道域名服务器是什么东西,不过还是去景安的网上看一下。果然在景安的用户控制台里面有DNSPOD的设置,并且里面添加了我的域名,但是没有添加解析记录,估计是我懵懂无知的时候瞎搞的吧…这个景安内置的DNSPOD功能应该是景安有个统一的账户,就是那个邮箱地址,代理用户进行DNSPOD的DNS解析的设置,所以显示邮箱是zzidc的。在这边删除以后就可以用我自己的账户控制DNSPOD上的DNS解析了。

然后国内的比较有名的域名解析服务提供商大致有依托于阿里云的万网DNS、依托于腾讯云的DNSPOD、依托于北京快网的CloudXNS,总的来说这三家提供的免费服务质量都差不多,大家根据自己的喜好或者特别的功能需求选择即可。