虽然已经入手 leanote,开启了以笔记+博客的方式记录学习生活琐事,但当手上有个续费了三年的 ECS,总想折腾点事情。于是想着在阿里云 ECS 上,使用 docker+wordpress 搭建个人博客,并基于 nginx 实现 ssl 证书的 https 访问。

在阿里云上搭建使用个人博客主要分为以下几个步骤:

  1. 购买阿里云 ECS 主机
  2. 购买域名
  3. 申请备案
  4. 环境配置
  5. 域名解析
  6. 安装 SSL 证书开启 https 访问

1. 购买ECS主机

如果只用来做简单的个人博客,1核1G足够,当然后面也可以根据需求自己扩容。本人用的阿里的主机,平时工作需要搭其他环境,用的2核4G,价钱就不说了,如果经济紧张,或只是搭个玩的,可以入搬瓦工或者腾讯云,具体价格可以去各自的官网查看。

阿里云:https://ecs-buy.aliyun.com/
腾讯云:https://buy.cloud.tencent.com/cvm
搬瓦工:https://bandwagonhost.com/vps-hosting.php
国外服务器详细对比(要翻墙):https://shadowsocks.blogspot.jp/

百度上有详细的购买流程,这不重复造轮子了,实在不明白可以留言。

2. 购买域名

这个没什么说的,直接进网站找自己喜欢域名,支付就 OK。

万网:https://wanwang.aliyun.com/

3. 申请备案

阿里云网站备案:https://beian.aliyun.com/

需要提醒大家的是,如果你买了阿里云的服务器,并且想要通过域名访问,那域名是必须要备案的,总结一句:必须先将域名备案,才能通过域名访问阿里云的服务器。

一提到备案,可能你会觉得备案这个事情很麻烦,各种流程啊,手续啊。其实没这么麻烦,因为阿里云已经提供了一条龙服务,通过阿里云的代备案系统,一些都会变得容易很多,不管是个人网站的备案,还是企业网站的备案,都只是时间上的问题,一般备案审核需要二十天左右。

4. 环境配置

WordPress 是一个非常著名的 PHP 编写的博客平台,发展到目前为止已经形成了一个庞大的网站平台系统。在 WP 上有规模庞大的插件和主题,可以帮助我们快速建立一个博客甚至网站。

在 Windows 上可以非常方便的安装 WordPress,因为 IIS上 集成了 WordPress 的一键安装包。而在 Linux 上安装 WordPress 就比较复杂了,我们需要配置 php 环境、Apache 或者 Nginx 服务器、MySQ L数据库以及各种权限和访问问题。所以在 Linux 上最好的办法就是使用 Docker 来安装 WordPress。

本人购买的 ECS 预装的 CentOS 7.4,通过 XShell 登入。

① 安装 Docker

  1. yum update
  2. yum install docker
  3. systemctl start docker

如果是国内用户的话可能还需要设置 Docker 加速,可以用阿里的 docker 镜像仓库,不然下国外的资源真的会崩溃。参考:https://cr.console.aliyun.com/?spm=5176.1971733.2.28.394b9fbdrASJma#/accelerator

② 安装 mysql,wordpress 镜像

  1. # 拉取 mysql,wordPress镜像
  2. docker pull mysql:latest
  3. docker pull wordpress:latest
  4. # 先实例化 Mysql 镜像
  5. docker run -itd --name mysql -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=new.1234 mysql
  6. # 接下来后执行下面命令将两都结合
  7. docker run -itd --name wordpress -p 127.0.0.1:8090:80 --link mysql:mysql -v /home/shenweiyan/wordpress/:/var/www/html/ wordpress
  • docker 参数映射前面是主机,后面是容器,比如 mysql:mysql 前面是主机的 docker name 叫 mysql,后面是容器中的 mysql, port 同理。
  • -p 127.0.0.1:8090:80 会启用 docker 的 ipv4 网络,方便后面 Nginx 做域名和端口映射;如果直接使用 -p 8090:80,会默认使用 docker 的 ipv6 网络,ECS 中对于 ipv6 的监听和基于 Nginx 域名绑定比较麻烦,个人在这个坑尝试了很久,目前还没找到好的解决方法。

到这里,docker+wordpress 就安装完成了。这时候尚不能打开网页,因为是配置在 127.0.0.1 上的,只有本机可以访问。

5. 域名解析

5.1 安装并启动 nginx

  1. yum install nginx
  2. systemctl start nginx

5.2 配置 nginx.conf

进入服务器 nginx 安装路径,进入 conf 文件夹,编辑 nginx.conf,加入一行 include sites-available/*.conf

  1. user nobody;
  2. worker_processes 1;
  3. ......
  4. http {
  5. include mime.types;
  6. default_type application/octet-stream;
  7. ......
  8. server {
  9. listen 80;
  10. server_name localhost;
  11. ......
  12. }
  13. ......
  14. include sites-available/*.conf;
  15. }

5.3 配置 wordpress.conf

  1. server {
  2. listen 80;
  3. server_name youdomain.com;
  4. proxy_set_header Host $host;
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7. location / {
  8. proxy_pass http://127.0.0.1:8090;
  9. }
  10. access_log logs/wordpress_access.log;
  11. error_log logs/wordpress_error.log;
  12. }

5.4 添加域名解析

登入阿里域名解析:https://netcn.console.aliyun.com/core/domain/list,点击相应域名的 “解析” 链接,根据提示添加域名的 A 记录,解析到你的服务器 ip 下。
阿里云 ECS+Docker+WordPress 搭建个人博客 - 图1

5.5 安装 wordpress

添加完域名解析后,打开浏览器,输入 http://youdomain.com,然后就可以看到 WordPress 了。按照提示输入用户名等信息,然后安装 WordPress。等到它提示安装完成,那么 WordPress 的安装就算大功告成了。

6. 安装 SSL 证书开启 https 访问

6.1 单域名免费证书申请

登入阿里域名解析:https://netcn.console.aliyun.com/core/domain/list,点击相应域名的 “SSL证书” 链接,设置单域名免费证书。
阿里云 ECS+Docker+WordPress 搭建个人博客 - 图2

6.2 SSL 证书下载

单域名免费证书提交申请后,一般十分钟就会审批下来。这时候,我们登陆 “CA证书服务(数据安全)“,在 “我的订单” 中找到已经签发的域名证书,点击 “下载” 链接,通过 “下载证书for Nginx” 下载证书。
阿里云 ECS+Docker+WordPress 搭建个人博客 - 图3

6.3 SSL 证书安装

( 1 ) 在 Nginx 的安装目录下创建 cert 目录,并且将下载的全部文件拷贝到 cert 目录中。
( 2 ) 将 wordpress.conf 修改为:

  1. server {
  2. listen 80;
  3. listen 443;
  4. server_name site.shenweiyan.cn;
  5. ssl on;
  6. root /home/shenweiyan/wordpress;
  7. index index.html index.htm index.php default.html default.htm default.php;
  8. ssl_certificate cert/1524404277557.pem;
  9. ssl_certificate_key cert/1524404277557.key;
  10. ssl_session_timeout 5m;
  11. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  12. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  13. ssl_prefer_server_ciphers on;
  14. location / {
  15. proxy_pass http://127.0.0.1:8090;
  16. proxy_set_header Host $host;
  17. proxy_set_header X-Real-IP $remote_addr;
  18. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19. }
  20. access_log logs/wordpress_access.log;
  21. error_log logs/wordpress_error.log;
  22. }

( 3 )重启 nginx 服务

  1. systemctl restart nginx

进行到这一步,你已经弄好了 ssl 证书,在服务器导入并且绑定好了 443 端口,也已开启 https 跳转了,正常情况下你可以使用 https://site.shenwieyan.cn 访问你的 wordpress。

但是,你会遇到如下的情况:

  1. wordpress 样式错乱,图片打不开;
  2. wordpress/wp-admin 后台进不去,登录无反应;
  3. 百度找了很多解决方法,却依然没有解决,甚至搞的连网站都打不开了;
  4. 等等。。。

请按照 6.4 方法修改,本人亲测,wordpress4.9.1-4.9.2 完美解决。

6.4 全站开启 https

1、系统文件修改

  1. 路径:网站根目录(/home/shenweiyan/wordpress)/wp-includes/functions.php
  2. 找到代码:require( ABSPATH . WPINC . '/option.php' );
  3. 在下方添加:
  4. add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }

2、后台文件修改

  1. 路径:网站根目录(/home/shenweiyan/wordpress)/wp-config.php
  2. 找到代码:
  3. *
  4. * @package WordPress
  5. */
  6. 在下方添加如下代码:
  7. _SERVER['HTTPS'] = 'on';
  8. define('FORCE_SSL_LOGIN', true);
  9. define('FORCE_SSL_ADMIN', true);

3、安装插件
完成以上两步操作后,可以正常访问 https 开头的网站和后台,下载这个叫 “really-simple-ssl” 的 wordpress 插件:

  1. https://wordpress.org/plugins/really-simple-ssl/

登录后台安装此插件。

或者登陆 wordpress 后台,在”设置”→ “常规” 中设置 “WordPress地址(URL)” 和 “站点地址(URL)”为 https 链接地址。
阿里云 ECS+Docker+WordPress 搭建个人博客 - 图4

至此,真正意义上解决 wordpress 全站开启 https 的 ssl 证书问题。

7. 填坑总结

7.1. 更换域名无法登陆后台

在后台—设置—常规—WordPress 地址或者网站域名处设置了别的域名,结果导致后台无法登录了,这是一种情况;还有一种情况就是网站搬家了,或者是换域名了,也会出现这类问题,那么就需要重新配置下当前域名才能使得网站正常运行。

方法:修改 wp-config.php 文件

第一步:在网站根目录找到 wp-config.php 文件,在其中添加以下两行内容:

  1. define('WP_HOME, 'http://要修改的域名');
  2. define('WP_SITEURL', 'http://要修改的域名');

第二步:登录后台—设置—常规—重新输入新博客地址(WordPressAddress(URL))和安装地址(SiteAddress(URL)),修改完毕后删除上面在wp-config.php文件中添加的内容(如何一切正常,不删除也可以,具体情况,具体操作)。


使用过程中我们可以通过 wordpress 大学,或其他平台找一些喜欢的主题,不过很多好看的主题是收费的。

有其他问题可以留言,谢谢!