在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没有安装,重新安装一下即可。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.