March 24, 2018

使用 Docker 搭建Ghost

Docker作为最主流的虚拟化技术,但还不会使用Docker搭建Ghost?

使用 Docker 搭建Ghost

网站的服务器在阿里云上海,选择CentOS系统,以下内容将以此为基础。

开干吧!

全新的系统,使用命令将常用的库进行更新:

sudo yum update -y

使用 Docker 官方脚本自动完成 Docker 安装:

sudo curl -sSL https://get.docker.com | sudo sh

sudo systemctl enable docker // 设置 Docker 开机启动

sudo systemctl start docker // 启动 Docker 

docker version // 查看 Docker 版本号

docker ps // 查看当前运行中的容器,可测试 Docker 是否正常启动

现在Docker已经安装好了,接下来的内容将继续以命令行的方式进行,使用 Docker 安装 MySQL/MariaDB 服务。

  • 使用 MariaDB 镜像,容器的名称为 “mariadb”,;
  • mariadb配置文件放置在本机/data/mysql/conf.d 目录中;
  • mariadb数据文件放置在本机/data/mysql/data目录中;
  • 公开3306端口,并使容器自动启动。

那么得到以下命令:

docker run --name maraidb \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/data:/var/lib/mysql \
--restart always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=设置ROOT账号默认密码 \
-d mariadb:latest

执行完成之后,为了安全,应该立即使用数据库管理工具修改账户名和密码。同时,为Ghost创建一个库。

接下来安装 Ghost

你得提前在/data/ghost目录创建Ghost的配置文件config.production.json。具体的内容可在Ghost文档中查看。

你需要设置的内容如下:

{
    url: 'http://my-ghost-blog.com', // 网站域名
    database: {
        client: 'mysql',
        connection: {
            host     : '127.0.0.1',  // 你的服务器IP
            user     : 'username',   // 数据库用户名
            password : '',           // 数据库密码
            database : 'ghost',      // 数据库名
            charset  : 'utf8'
        }
}

然后开始安装 Ghost :

docker run --name ghost \
-v /data/ghost/config.production.json:/var/lib/ghost/config.production.json \
-v /data/ghost/content:/var/lib/ghost/content \
--restart always \
-p 2368:2368
-d ghost:alpine

执行完成后,现在你可以通过 http://域名:2368 访问博客了,并通过访问 http://域名:2368/ghost 初始化 Ghost 账户。

接下来安装 Nginx 作为代理服务器。你可使用 “Docker” 或者 yum 来安装“Nginx”。以使用 yum 为例:

sudo yum install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

然后编辑 Nginx 的配置文件:

nano /etc/nginx/conf.d/你的域名.conf
// 内容如下:
server {
    listen      80;
    server_name 你的域名;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host      $http_host;
        proxy_pass       http://localhost:2368;
    }
}
// 让Nginx重新加载配置文件
sudo nginx -s reload

此时,你可直接通过域名访问 “Ghost” 了。

这样就结束了?

以上是最基础的安装方式,其实,你可通过 docker-compose 或者 docker stack 使用“编排文件”进行更加快速和高效的安装;

同时,你可不必向外网暴露 33062368 端口,仅让服务器开放 80443端口;

使nginxghost 处在同一 Docker 网络环境,那么 nginx 可通过 ghost 的容器名称访问系统了。