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


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


  1. 购买阿里云 ECS 主机
  1. 购买域名
  1. 申请备案
  1. 环境配置
  1. 域名解析
  1. 安装 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


yum update
yum install docker
systemctl start docker


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


② 安装 mysql,wordpress 镜像


# 拉取 mysql,wordPress镜像
docker pull mysql:latest
docker pull wordpress:latest

# 先实例化 Mysql 镜像
docker run -itd  --name mysql -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=new.1234  mysql

# 接下来后执行下面命令将两都结合
docker run -itd --name wordpress -p 127.0.0.1:8090:80 --link mysql:mysql -v /home/shenweiyan/wordpress/:/var/www/html/ wordpress



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



5. 域名解析


5.1 安装并启动 nginx


yum install nginx
systemctl start nginx


5.2 配置 nginx.conf


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


user  nobody;
worker_processes  1;
......
http {
    include       mime.types;
    default_type  application/octet-stream;
    ......
    server {
        listen       80;
        server_name  localhost;
        ......
    }
    ......
    include sites-available/*.conf;
}


5.3 配置 wordpress.conf


server {
    listen       80;
    server_name  youdomain.com;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
        proxy_pass http://127.0.0.1:8090;
    }

    access_log  logs/wordpress_access.log;
    error_log   logs/wordpress_error.log;
}


5.4 添加域名解析


登入阿里域名解析:https://netcn.console.aliyun.com/core/domain/list,点击相应域名的 "解析" 链接,根据提示添加域名的 A 记录,解析到你的服务器 ip 下。


5.5 安装 wordpress


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



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

6.1 单域名免费证书申请


登入阿里域名解析:https://netcn.console.aliyun.com/core/domain/list,点击相应域名的 "SSL证书" 链接,设置单域名免费证书。


6.2 SSL 证书下载


单域名免费证书提交申请后,一般十分钟就会审批下来。这时候,我们登陆 "CA证书服务(数据安全)",在 "我的订单" 中找到已经签发的域名证书,点击 "下载" 链接,通过 "下载证书for Nginx" 下载证书。

6.3 SSL 证书安装


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


server {
    listen 80;
    listen 443;
    server_name site.shenweiyan.cn;
    ssl on;
    root /home/shenweiyan/wordpress;
    index index.html index.htm index.php default.html default.htm default.php;
    ssl_certificate   cert/1524404277557.pem;
    ssl_certificate_key  cert/1524404277557.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    access_log  logs/wordpress_access.log;
    error_log   logs/wordpress_error.log;
}


( 3 )重启 nginx 服务


systemctl restart nginx


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


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


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


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


6.4 全站开启 https


1、系统文件修改


路径:网站根目录(/home/shenweiyan/wordpress)/wp-includes/functions.php
找到代码:require( ABSPATH . WPINC . '/option.php' );
在下方添加:
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、后台文件修改


路径:网站根目录(/home/shenweiyan/wordpress)/wp-config.php
找到代码:

*
* @package WordPress
*/

在下方添加如下代码:
_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);


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


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


登录后台安装此插件。


或者登陆 wordpress 后台,在"设置"→ "常规" 中设置 "WordPress地址(URL)" 和 "站点地址(URL)"为 https 链接地址。


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



7. 填坑总结


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


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


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


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


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


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


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


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