ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-10-26 16:04:11  阅读:246  来源: 互联网

标签:安装 CentOS7.8 nginx yum usr install Docker local 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,nginx,yum,usr,install,Docker,local,Halo
来源: https://www.cnblogs.com/huturen/p/15466172.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有