Category Archives: MyWebsite

all about this website, WordPress, and others

在AWS EC2 Amazon Linux 2 上安装WordPress

首先还是要赞一下AWS,虽然是海外版,但中文文档还是准备得很不错的,而且基本上都是可用的。

安装步骤大概分以下几步:

  • 1、 EC2上创建Amazon Linux 2实例

找一个邮件地址注册AWS的账号,注意只有海外版AWS才能免费用一年。创建实例的时候选Amazon Linux 2 AMI,HTTP和HTTPS端口都打开,硬盘直接30G即可。实例启动之后申请一个Elastic IP并绑定到该实例,然后去域名提供商那里改DNS指向该IP。AWS的ROUTE 53也可以做域名解析,但是是收费的。

  • 2、安装 LAMP

基本上安装官方文档来即可:在 Amazon Linux 2 上安装 LAMP。phpMyAdmin 我没装。

  • 3、Apache配置域名

提前给Apache配置好域名,否则生成证书的时候会报错。

cd /etc/httpd/conf.d
sudo vi yourDomainName.conf

添加下面内容:

<VirtualHost *:80>
    ServerName yourDomainName.com
    DocumentRoot /var/www/html
    ServerAlias www.yourDomainName.com
    ErrorLog /var/www/error.log
    CustomLog /var/www/requests.log combined
</VirtualHost>

保存之后:

    sudo systemctl httpd restart  
  • 4、配置HTTPS和证书

官方文档:在 Amazon Linux 2 上配置 SSL/TLS。就选用文档里说的免费证书: Let’s Encrypt 项目,用Certbot 自动创建。但是Certbot手册 里让你选择OS的时候根本没有Amazon Linux 2可选,勉强选了CentOS之后按照CentOS的方式安装snapd和Certbot,但是出错了,后来找到这个:albuild-snap,里面提供了Amazon Linux 2需要的RPM包。但最后运行Cerbot的时候还是报错了:

An error occurred while fetching Certbot snap plugins: your version of snapd is outdated.
Please run "sudo snap install core; sudo snap refresh core" in your terminal and try again.
An unexpected error occurred:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://snapd/v2/connections?snap=certbot&interface=content
意思是snapd版本太低,但实际上是最新的。官方找到一个TICKET:Error in aws ec2 instances #8377,往下看时有点失望,有一个人好像是Certbot开发人员,说暂时还不支持Amazon Linux 2,然后就看到有别人说他成功了,虽然他是nginx,然后也不妨一试,把nginx改成apache:
cd /home/ec2-user/
wget -O epel.rpm –nv https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y ./epel.rpm
sudo yum install python2-certbot-apache.noarch
sudo certbot --apache

然后一直输入需要的信息就可以了,证书自动安装成功。

  • 5、安装WordPress
这一步也按照官方文档:在 Amazon Linux 2 上托管 WordPress 博客 一步一步操作即可。如果是像我这样恢复以前的博客,那么需要通过WinSCP把原来的数据库文件和图片上传,而且导入数据的时候要注意新旧数据库的名字是不是一致。最后打开博客的时候页面空白,登录到管理页面发现是原来使用的Theme没有安装,重新安装一下即可。

Blog又回来了

好几天没看邮件,结果发现Bluehost说虚拟主机中毒Blog被暂停了,看了一下扫描报告,看到public_html全被感染了,也不知什么情况,索性全删掉重新安装Wordpress,结果草率了:(,上传的图片忘了备份!只找到一个2017年之前的备份,所以最近几年的图片暂时都看不到,回头再想办法补救。

SSH连接时报key exchange错误

几个月前(我这是有多懒!)有一天早上一开机,发现Bitvise SSH客户端连不上服务器了,报了一个KEX错误:

09:41:56.381 Connecting to SSH2 server shelu.net:22.
09:41:56.751 Connected.
09:41:56.761 Starting first key exchange.
09:41:57.942 Server version string: SSH-2.0-OpenSSH_5.3
09:41:57.946 Session terminated on client’s behalf:
SSH_DISCONNECT_KEY_EXCHANGE_FAILED
failed to negotiate key exchange algorithm

把客户端里头所有的key exchange全选上了,也不管事儿。PuTTY也连不上,直接就connection reset了。买这个共享服务器除了博客,还有一个主要作用就是当梯子了,毕竟VPN容易被封,而且PC上还是Chrome加SwithySharp方便些,访问国内网站速度也快。于是找Bluehost客服,客服给了一篇文档:SSH Access – Generating a Public/Private Key,大概意思是怎么通过一个key来登录SSH,PuTTY试了一下,不行,说bad connection;而且觉得也不靠谱,毕竟Bitvise里头没有这个选项。于是Google一下错误信息,SSH连接建立的时候服务器和客户端要沟通一下支持的加密算法,最后选一种双方都支持的,应该是服务器升级了SSH服务之后把很多的Key Exchange算法给屏蔽了,而我的客户端不支持他的算法。于是再找客服,说了这个问题,结果人就说我这儿好着呢,能连上,那不是我们的问题。我说我这儿有一段代码(修改SSHD配置并重启),你在服务器上执行一下呗。。。果断被拒绝,并趁机推销:买个dedicated server吧,这样你就有root权限想干嘛就干嘛。。。果断拒绝。

既然服务器端解决不了问题,那就只能找找自己的问题了,先升级一下Bitvise,这下错误信息就很能说明问题了:

The SSH2 session has terminated with error. Reason: Error class: LocalSshDisconn, code: KeyExchangeFailed, message: FlowSshTransport: no mutually supported key exchange algorithm. Local list: diffie-hellman-group14-sha1,diffie-hellman-group1-sha1. Remote list: diffie-hellman-group-exchange-sha256.

选中diffie-hellman-group-exchange-sha256后顺利连上。

下载了最新的PuTTY之后还是不行,还是bad connection,查了一下,PuTTY是支持diffie-hellman-group-exchange-sha256的(包含在Diffie-Hellman group exchange里头)。想起来最早的时候PuTTY是connection reset,那可能是前面配private key的时候弄坏了,重新配了一下就可以了。

PS:最近试了一下AWS,虽然我只launch了一个Windows instance, 但是如果来一个centos之类的话用那个22端口应该也是可以达到梯子的效果的,AWS可以免费用12个月。

Chinese Word Count插件导致WordPress白屏无法访问

每天早上开机之后看到WordPress提示有插件更新,一般也不仔细看,直接就点批量更新了。昨天早上好像也有两个插件可更新,点了之后就没再细看。后来下午在客户端上发布完中午拍的照片,结果网站无法访问了,直接。看了一下后台的PHP日志,有报错:

[21-Apr-2014 05:18:35 UTC] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in /home3/shelunet/public_html/wp-includes/pluggable.php on line 1317

看样子是内存不够了,加了内存,结果问题还在;以为是刚才上传的那篇文章有什么问题,于是客户端删除,结果还是不行,看来XMLPRC接口没问题,UI访问有问题。

于是找HostMonster的客服,说wordpress无法访问了,他说可能是Theme或者Plugin的问题,帮我弄了一下,结果就可以了。俺当然要问什么情况,后来他就给了个链接:

WordPress White Screen of Death

看了一下,再想想日志里头那个pluggable.php,应该就是插件的问题,早上升级过的,后来没注意,以为是上传的文章有问题。链接里头是通过cPanel操作的,我是直接在Terminal上,过程也有点不一致,他是要把plugins目录移走,但是似乎光移走不行,还得再放回去,总之就是把那个目录挪动一下就行。然后wordpress就可以登录了,到Plugins页面一看,所有的插件都Disabled了,一个一个Active,很快就发现是这个Chinese Word Count引起的问题,一看版本,14.4.19,应该就是早上更新过,所以出问题了。这个插件如果在浏览器上写文章还有点用处,现在我都用客户端,也没什么意义了,索性不用了。

改用了WordPress 3.8新主题Twenty Fourteen(2014)

也算是新年新气象吧。

默认是黑白配置,通过UI只能改标题和背景颜色,如果有进一步的需求可以试试 Fourteen Colors插件。

首页上方有一个推荐内容(Featured Content)的功能,不过不打算用了,直接找一张图片算了。

常用菜单移到了左侧,右侧也是一些推荐(Contenet Bar),我也不打算用。这样一来的话空白有点多,中间的文章内容比较短,而且图片也容易因为压缩而失真。找了一下,把这段代码放在style.css的最后就可以了,比例可以自己调:

.site-content .entry-header,
.site-content .entry-content,
.site-content .entry-summary,
.site-content .entry-meta,
.page-content {
max-width: 80%; // put the width you like here
}

如何将博客分享到微信朋友圈

有朋友问到这个问题,索性大概总结一下。如果是图片的话可以直接在手机上点分享-发送到朋友圈,但是目前分享链接到朋友圈的唯一方法是用微信内置的浏览器打开链接,然后点右上角的按钮选择分享到朋友圈。

很早以前曾经有过一段直接分享到朋友圈的JS代码,但是早就不能用了;而且以前微信内置的浏览器是独立的,可以在各种情况下单独打开,但是目前就隐藏得比较深了,毕竟如果朋友圈的入口太多做成一个类似微博的东西的话,腾讯微博或者QQ空间这些就要有意见了,比较朋友圈的初衷只是分享照片,连分享文字都隐藏得比较深,得要长按相机按钮才能打开,当然,直接在文字框里输入URL也是可以的,但是这样的话不太好看。所以现在要用微信的浏览器打开链接还得纡回一下,大致有几种方法:

1、生成二维码扫一扫。像我这种用了第三方插件的,直接在博客上点分享到微信按钮就会弹出一个二维码,然后用微信扫一下就可以。如果没有插件也没关系,直接用他们的代码就可以:在浏览器中输入http://s.jiathis.com/qrcode.php?url=,后面在加上你要分享的URL,回车之后就能看到二维码。

2、让URL出现在微信的某个聊天窗口,然后打开。推荐添加文件传输助手。可以在各种浏览器中中点击共享-发送给朋友-选择文件传输助手,发送之后留在微信,从聊天窗口就可以看到URL,打开分享即可。

3、还有一种就是在个人信息里头选择在个人名片中展示腾讯微博,这种适合把博客同步到腾讯微博的用户。这样的话在某个聊天窗口点击自己的头像查看详细信息,就可以看到下面有腾讯微博,点击进入之后就可以在微信浏览器中打开你自己的腾讯微博,然后再打开相应的链接分享就可以。

Gitzo 1228和Arca Swiss B1

关于三脚架的购买,有一句很出名的话,”买到第三个脚架才知道前两个都是白买了”。自从出掉190 Pro和486RC2之后,俺决定直接就跳入捷信了,略去了某些便宜碳素脚架的环节,最后从重量、长度等方面考虑,最后选中2系4节,具体来说就是老款G1228MK2或者新款GT2541。至于云台,考虑时间还是长一点,球台是肯定的,本来也曾看好某些国内的牌子,但是最后还是放弃了,一来觉得质量并不如所宣传的那么好,二来价格也不便宜。所以最后还是决定雅佳,毕竟所有的球台都是仿雅佳的,虽然老款的B1有所谓的锁死问题,但是看了一下也没那么可怕。所以最后定的是二手1228配B1,新的2541配Z1,具体看机缘。

最后倒是很快在Ebay上搞定二手的,都走转运,脚架很快就到了,带一个Calumet的袋子,就是有点长;还有一个Bogen 3055的云台,很大很沉,但是没有快装板,也没啥用处,早知道让装运扔掉好了,运费都不值。脚架成色也还不错,就是有点不太顺滑,好像是进了沙子,转动的时候那声音听着有点瘆人。找到了这篇:手把手教你清洁三脚架,买了润滑油彻底清理了一下,焕然一新,手感好得很,旋转锁紧看着麻烦,其实很方便,比190Pro快多了。

云台晚了一个月才到,不得不鄙视一下某通,光清关就花了一个多月,实在是慢得令人发指,不过好在也没出啥问题。拿到之后云台不出所料的锁死了,主要还是因为运输的时候云台处于锁紧状态。按照网上找的方法,首先是用力从卡钳出往下拍,不知道是不是因为拍得不够厉害,没起作用。然后就是锁紧之后再用力拧一点(1/8th inch)就可以了,或者是拧紧之后松那个小的阻尼调节的按钮。B1有两个按钮,小的是调节云台左右360度旋转的,大的是锁紧的,大的里头还有一个小小的按钮时调节阻尼的。云台阻尼很好,就算是松开的状态下相机也不会倒下去,因为它是一个非球面体,越倾斜阻尼越大,所以有时候角度比较大的时候不用锁死也固定的很好。快装板是很久以前买的RRS(Really Right Stuff),Contax 645专用的,上周四拿去拍荷花,锁紧之后纹丝不动,回想当时486RC2锁紧之后相机那一点头,还真不能同日而语。用腰平的话脚架开三节就够了,眼平四节全开刚刚好。

B1似乎没找到说明书,下面几篇可以参考一下:

Arca-Swiss B1 Ball Head

Precision Camera Works

The Famous Arca-Swiss Lock-up Fix

虚拟主机用Dropbox传文件

Tropics公司的网络不好,经常需要在虚拟主机上下载点东西再传回来,但是往回穿的时候也很麻烦,SCP很慢,而且经常断;于是想起了Dropbox,装起来也很简单,可以看官方的介绍:https://www.dropbox.com/install?os=lnx

命令行启动dropboxd之后给你一个连接提示你用浏览器访问来绑定帐号,绑定之后就会在你的根目录~下生产一个Dropbox的文件夹,要同步文件的话直接把文件copy过去或者ln -s建个链接就行。那边同步很快,速度几个MB吧,然后就可以在PC客户端慢慢同步了。

为了管理方便可以下载官方提供的 CLI script,可以查看状态。

还有一种方法是第三方提供的Dropbox-Uploader ,是一个shell脚本,通过cURL直接把文件发送到Dropbox,功能比较单一,但是用起来也比较简单。