Docker容器

CentOS7.8(阿里云服务器)使用Docker搭建Halo博客

本文主要是介绍CentOS7.8(阿里云服务器)使用Docker搭建Halo博客,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、安装Docker

1.查看内核版本

uname -a

Docker官方说至少3.8以上,建议3.10以上

2.把yum包更新到最新

温馨提示:新环境或测试环境可随意操作,生产环境酌情慎重更新

yum update

期间需要确认,输入"y"即可

3.安装需要到依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

4.设置yum源

下面两个选择一个即可

# 中央仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
# 阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.查看仓库中所有到Docker版本

yum list docker-ce --showduplicates | sort -r

6.安装Docker

我选择到是docker-ce-18.03.1.ce

yum install docker-ce-18.03.1.ce

期间需要确认,输入"y"即可

7.启动Docker并加入开机启动

# 启动Docker
systemctl start docker
# 加入开机自启动
systemctl enable  docker

8.查看Docker版本

docker version

一些常用Docker命令

二、使用Docker安装Halo博客

1.创建工作目录

mkdir ~/.halo && cd ~/.halo

2.下载示例配置文件到工作目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

如果没有安装wget,可使用命令 yum -y install wget 进行安装

3.编辑配置文件,配置数据库或者端口等,如需配置请参考参考配置(一般默认即可)

vim application.yaml

4.拉取最新的 Halo 镜像

docker pull halohub/halo

5.创建容器

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo

-it: 开启输入功能并连接伪终端
-d: 后台运行容器
–name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
–restart: 建议设置为 always,在 Docker 启动的时候自动启动 Halo 容器。

6.打开 http://ip:端口号

访问后即可进入指导页面(需开放服务器端口,一般默认是8090)
参考文档

三、安装nginx

1.下载安装包(一般安装在/usr/local下)

cd /usr/local
wget http://nginx.org/download/nginx-1.11.5.tar.gz

2.下载nginx依赖库

可能会安装失败,具体可参考后面到错误提示信息

yum install gcc-c++
yum install pcre
yum install pcre-devel
yum install zlib 
yum install zlib-devel
yum install openssl
yum install openssl-devel

3.解压安装包

nginx被解压到了/usr/local/nginx-1.11.5 目录下(不要把压缩包解压到/usr/local/nginx目录下,或者将解压后的目录重命名为nginx,因为nginx会默认安装到/usr/local/nginx目录下)

tar -zxvf nginx-1.11.5.tar.gz

4.安装

# 切换至nginx-1.11.5/目录
cd /usr/local/nginx-1.11.5/

执行

./configure --with-http_ssl_module
# --with-http_ssl_module需加上,否则后面配置SSL证书时会报错  the "ssl" parameter requires ngx_http_ssl_module

该命令会检测当前系统环境,以确保能成功安装nginx,执行该操作后可能会出现以下几种提示:

checking for OS
+ Linux 3.10.0-123.el7.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found

如果出现以上错误提示信息,执行yum install gcc-c++安装gcc

 ./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

如果出现上面提示,表示缺少PCRE库

 ./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

如果出现以上提示,表示缺少zlib库

如果没有出现./configure: error提示,表示当前环境可以安装nginx,执行make和make install编译nginx

make && make install

如果没有报错的话,表示nginx已经成功安装完成,默认安装位置为/usr/local/nginx

5.配置nginx开机启动

cd /lib/systemd/system/
vim nginx.service

文件内容如下

[Unit]
Description=nginx 
After=network.target 
   
[Service] 
Type=forking 
ExecStart= /usr/local/nginx/sbin/nginx
ExecReload= /usr/local/nginx/sbin/nginx  reload
ExecStop= /usr/local/nginx/sbin/nginx  quit
PrivateTmp= true 
   
[Install] 
WantedBy=multi-user.target

退出并保存文件,执行命令开机启动

systemctl enable nginx.service

6.验证nginx是否安装成功

输入http://服务器IP/ 如果能看到nginx的界面,就表示安装成功了

7.常用nginx命令

systemctl start nginx.service   # 启动nginx
systemctl stop nginx.service   # 结束nginx
systemctl restart nginx.service  # 重启nginx
nginx -v  # 查看nginx版本

四、nginx安装SSL证书并进行配置

在此之前需先购买域名并进行备案

1.进入阿里云服务器中购买证书购买SSL证书地址

选择***DV单域名(免费试用)进行购买,购买后选择nginx证书下载,下载后解压会得到下面两个文件
image.png

2.配置nginx

执行下面命令在在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录(命名为cert)

cd /usr/local/nginx/conf  #进入Nginx默认安装目录。如果您修改过默认安装目录,请根据实际配置进行调整。
mkdir cert  #创建证书目录,命名为cert。

使用putty、xshell等工具等文件传输工具将你的证书传到cert目录下(/usr/local/nginx/conf/cert)
编辑neinx.conf

vim /usr/local/nginx/conf/nginx.conf

配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置(如果server配置已存在,按照以下注释内容修改相应配置即可)。

server {
        listen       443 ssl;
        server_name yourdomain.com www.yourdomain.com;
        #需要将yourdomain.com替换成证书绑定的域名。
        client_max_body_size 1024m;
        ssl_certificate      cert/cert-file-name.pem;
        # 需要将cert-file-name.pem替换成已上传的证书文件的名称
        ssl_certificate_key  cert/cert-file-name.key;
        # 需要将cert-file-name.key替换成已上传的证书密钥文件的名称
        ssl_session_timeout  5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  HIGH:!aNULL:!MD5;

        location / {
            # 反向代理地址,注意 /
             proxy_pass http://127.0.0.1:8090/;

             proxy_redirect     off;
            # 代理请求头
             proxy_set_header HOST $host;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

设置HTTP请求自动跳转HTTPS(可选),配置如下

server {
        listen       80;
        server_name   yourdomain.com www.yourdomain.com;
        return 301 https://$server_name$request_uri;
       }

3.重启Nginx服务

cd /usr/local/nginx/sbin  #进入Nginx服务的可执行目录
./nginx -s reload  #重新载入配置文件

4.验证SSL证书是否安装成功

证书安装完成后,可通过访问证书的绑定域名验证该证书是否安装成功

https://yourdomain.com   #需要将yourdomain.com替换成证书绑定的域名

注意事项,需将端口80和443添加至服务器安全组,且需检查系统防火墙firewall是否添加了443端口,是否在监听,命令可参考文档

本博客主要参考文档如下:
阿里云文档
Halo文档

这篇关于CentOS7.8(阿里云服务器)使用Docker搭建Halo博客的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!