使用Docker和Hexo打造DevOps个人静态博客(三)服务端篇

 

使用Git,Hexo,Docker,Gogs,Nginx搭建基于DevOps自动部署的个人静态博客之服务端篇...



上一章内容中介绍了客户端软件(MarkdownPad, Git, Node.js和Hexo)的基本作用和安装,本章主要介绍服务端软件(Docker Engine, Gogs容器,Nginx容器)的安装和部署。

Docker Engine安装

Docker Engine是Docker公司的拳头软件之一,三大组件的基石。功能异常强大,可安装却无比简单,更重要是开源。

步骤为:1.  准备Docker Engine的所需的操作系统(本文为CentOS 7.2)2.  配置Docker Engine的yum源3.  使用yum安装Docker Engine4.  配置Docker Daemon开机自启5.  基本验证
具体安装过程可参照官方文档:
https://docs.docker.com/engine/installation/linux/centos/

Gogs部署

前面已经提到Gogs的服务是以Docker容器来运行的,这样的好处是免去了不太复杂的安装过程。

更重要一点是个人非常推崇Docker,也想在
Docker布道的征程中尽一点自己的绵薄之力,且本文也以DevOps关键字来吸引眼球,而Docker则是实现DevOps的重要工具之一。

Gogs服务部署步骤如下:1. 从Docker Hub下载Gogs最新的镜像
docker pull gogs/gogs


2. 创建gogs数据文件夹
mkdir /var/data/gogs


3. 启动gogs容器
docker run -d --name=gogs -p 10022:22 -p 3000:3000 -v /var/data/gogs:/data gogs/gogs

#容器名为gogs

#SSH端口从容器到主机的映射为22-->10022

#Gogs应用端口从容器到主机的映射为3000-->3000

#数据卷从容器到主机的映射为/data-->/var/data/gogs


4. 查看容器是否启动成功
docker ps


5. 访问Gogs应用(第一次访问Gogs需要进行初始化配置)
http://gogs.onlyeric.com:3000  (本例以gogs.onlyeric.com作为gogs应用的域名)


6. 初始化配置
#数据库的类型选择SQLite3,Gogs自带。因为该Gogs服务通常情况下只有我一人使用,无需配置MySQl数据库来支撑更多的业务量,而且要使用MySQL数据库需要额外启动一个MySQL容器,占用系统资源。

Database Type==>SQLite3

Path==>data/gogs.db

Application Name==>Gogs:Go Git Service

Repository Root Path==>/data/git/gogs-repositories

Run User==>git

#域设置成gogs容器所在主机的域名即可

Domain==>gogs.onlyeric.com

#SSH和HTTP端口设置成启动容器时所映射到Docker主机的端口

SSH Port==>10022

HTTP Port==>3000

#应用URL这里需要设置成不带端口(80端口),因为稍后我们会为gogs应用设置Nginx的反向代理实现80端口到3000端口的请求转发。

Application URL==>http://gogs.onlyeric.com

Log Path==>/app/gogs/log

Username==>自选

Passoword==>自设

Confirm Password==>自设

Admin Email==>自设


通过以上几个参数的设置即可完成Gogs服务的基本配置,其中绝大多数参数可用默认选项。

Nginx部署

Nginx也是以容器的方式来运行,本例中Nginx主要提供Hexo静态页面的Web服务和Gogs应用的反向代理,主要通过基于域名的虚拟主机来实现。

Nginx服务部署步骤如下:1. 从Docker Hub下载最新镜像
docker pull nginx


2. 准备Nginx配置文件

  • nginx.conf (nginx的主配置文件)

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
worker_connections  1024;
}
http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';
access_log  /var/log/nginx/access.log  main;
sendfile        on;
#tcp_nopush     on;
keepalive_timeout  65;
#gzip  on;
include /etc/nginx/conf.d/*.conf; #虚拟主机配置文件存放路径
}

  • gogs.conf(gogs虚拟主机配置文件)

server {
listen       80;
server_name  gogs.onlyeric.com; #访问Gogs的域名
location / {

proxy_pass   http://gogs.onlyeric.com:3000;  #80到3000端口的请求转发
}
}

  • blog.conf(博客虚拟主机配置文件)

server {
listen       80;
server_name  www.onlyeric.com; #访问静态博客的域名

location / {

root   /usr/share/nginx/html; #静态博客存放路径

index  index.html index.htm;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {

root   /usr/share/nginx/html;
}
}


3. 重构本地Nginx镜像
(重构Nginx的目的是载入上面的三个配置文件,当然熟悉docker的朋友此步骤也可以使用docker cp或volume来完成)

  • Dockerfile(构建新镜像的dockerfile文件)

FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf
COPY gogs.conf /etc/nginx/conf.d/gogs.conf
COPY blog.conf /etc/nginx/conf.d/blog.conf
RUN rm -f /etc/nginx/conf.d/default.conf  


构建镜像

(将dockerfile,nginx.conf,gogs.conf,blog.conf放于主机的同一路径下)

#镜像名字可任取,本例为nginx:onlyeric

docker build -t nginx:onlyeric .




查看镜像

docker images


4. 启动Nginx容器
主机创建Nginx数据目录

mkdir -p /var/data/www


启动Nginx

docker run -d --name web -p 80:80 -v /var/data/www:/usr/share/nginx/html:ro  nginx:onlyeric

#容器名为web

#HTTP端口从容器到主机的映射为80-->80

#数据卷从容器到主机的映射为/usr/share/nginx/html-->/var/data/www,且为只读模式

#采用重新构建的镜像nginx:onlyeric来启动容器


5. 查看容器是否启动成功
docker ps


6. 访问Gogs应用测试
#如果Nginx启动且配置成功,则可直接用默认的80端口访问Gogs应用即可,无需再指定3000端口。

本例为:http://gogs.onlyeric.com


自此服务端软件的安装和基本配置已全部完成,个人博客(www.onlyeric.com)还无法访问是因为Hexo静态页面还未发布上去,待完成后续客户端到服务端的少量配置后,一个基于DevOps方法维护的纯静态博客即将完成。

敬请期待下篇:
使用Docker和Hexo打造DevOps个人静态博客(四)配置篇。


    关注 小张烤茄


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册