侧边栏壁纸
  • 累计撰写 56 篇文章
  • 累计创建 59 个标签
  • 累计收到 7 条评论

云主机Centos7搭建Halo博客系统

时间这孩子很诚实
2022-03-17 / 0 评论 / 0 点赞 / 199 阅读 / 4,743 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

云主机Centos7搭建Halo博客系统

**前提条件:购买优刻得云主机并安装centos7**

安装docker

docker官网安装链接:https://docs.docker.com/engine/install/centos/

1.确定你是CentOS7及以上版本

cat /etc/redhat-release

image.png

2.卸载旧版本

2.png

3.yum分别安装gcc相关

yum -y install gcc
yum -y install gcc-c++

4.安装需要的软件包

官网要求

yum install -y yum-utils

4.png

5.设置stable镜像仓库

官网的镜像仓库速度慢,替换成阿里云镜像
官网:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
更改阿里云的:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6.更新yum软件包索引(可选)

yum makecache fast

7.安装DOCKER CE

7.png

yum -y install docker-ce docker-ce-cli containerd.io

提示:执行期间按三次y

8.启动docker

systemctl start docker

9.测试docker是否安装成功

docker version
docker run hello-world

如果看见 Hello from Docker! 则表示安装成功

9.png

10.配置阿里云镜像加速

  • 登陆阿里云开发者平台搜索镜像服务
    10.1.png
  • 获取加速器地址
    10.2.png
  • 根据提示配置镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

或者分步骤执行

mkdir -p /etc/docker
 #镜像加速配置文件
vim  /etc/docker/daemon.json

{
  "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
}

11.重启docker

#分别执行
systemctl daemon-reload
systemctl restart docker

使用Docker安装Mysql

1.创建 Docker 自定义桥接网络

docker network create halo-net

2.拉取 MySQL 镜像

docker pull mysql:8.0.27

3.创建 MySQL 数据目录

mkdir -p ~/.halo/mysql

4.启动 MySQL 实例

docker run --name mysql -v ~/.halo/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw --net halo-net --restart=unless-stopped -d mysql:8.0.27

注意: 请将 my-secret-pw 修改为自己需要的密码后再执行,密码尽量包含小写字母、大写字母、数字和特殊字符且长度超过 8 位。

5.进入 MySQL 容器中登录 MySQL 并创建 Halo 需要的数据库

  • mysql 为 MySQL 实例的容器名称
docker exec -it mysql /bin/bash

  • 登录 MySQL
mysql -u root -p

  • 输入 MySQL 数据库密码
  • 创建数据库
 create database halodb character set utf8mb4 collate utf8mb4_bin;

  • 使用 exit退出MySQL 并退出容器

使用云服务器商购买的域名和申请的免费证书配置nginx

因为我买的优刻得服务器,所以域名和https证书都在优刻得购买,阿里云腾讯云等同理

1.申请域名

3.1.png

2.申请免费的https证书

3.2.png

3.配置域名解析添加记录

注意:必须填写两个记录一个绑定https证书,一个绑定云服务器ip地址

3.3.png

4.下载nginx对应的证书

3.4.png

5.申请网站备案

注意:不申请可能导致网站不可用

3.5.png

docker 部署nginx

1.拉取nginx镜像

docker pull nginx

image.png

此时docker有两个镜像

2.随便启动个nginx容器复制出nginx.conf

#启动容器
docker run -it nginx /bin/bash
#复制nginx配置文件
docker cp 605c77e624dd:/etc/nginx/nginx.conf /mydata/nginx/nginx.conf

-it:交互式容器前台命令行

3.退出容器并修改主机目录下nginx.conf,配置nginx信息

vim /etc/nginx/nginx.conf

nginx.conf配置文件 注意:ip替换成自己的

user  nginx;
worker_processes  4;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    client_max_body_size 1024M;
    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;
	
	
	
	upstream halo {
      server ip:8090;
    }

	
	server {
		listen 443 ssl;
		server_name  linyc.com.cn;
		ssl_session_timeout  5m;
		ssl_certificate      /etc/nginx/cert/public.pem; #根据实际的路径和文件名配置
		ssl_certificate_key   /etc/nginx/cert/private.key; #根据实际的路径和文件名配置
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配
		ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配
		ssl_prefer_server_ciphers   on;
		
		location / {
			proxy_pass http://halo;
			root   /usr/share/nginx/html; #站点目录
			index  index.html index.htm;
		}
		
		location ~ .* {
			proxy_pass http://halo;			
			proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header Host $Host:$server_port;
		}
		
		location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
			proxy_pass http://halo;
			expires 30d;
			access_log off;
		}
	}

	server {
        listen 80;
        server_name linyc.com.cn;
        rewrite ^(.*) https:$host$1 permanent; 
	}

}

4.停止刚启动的容器并删除

docker stop nginx
docker rm nginx

5.创建真正使用的nginx容器并挂载目录和加入网络

docker run -d --name nginx -p 80:80 -p 443:443 -v /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/logs:/var/log/nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/conf:/etc/nginx/conf.d -v /mydata/nginx/cert:/etc/nginx/cert --privileged=true --restart=unless-stopped --net halo-net 605c77e624dd

cert目录存放配置https的证书
-p 端口映射 --name 容器名称 -d 指定容器后台运行模式 -v挂载目录 
--net 加入创建的网络 --privileged=true 权限

6.测试nginx是否启动成功

浏览器ip访问测试

使用Docker 部署Halo

官网安装地址:https://docs.halo.run/getting-started/install/docker

1.创建工作目录

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

2.下载默认的示例文件到工作目录

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

3.编辑配置文件,配置数据库,默认连接H2,更改为MySql

 vim application.yaml

  • 注释 H2 database configuration.部分
  • 启用 MySQL database configuration.部分
  • 修改 datasource 下的 url 中的 ip 地址部分为容器名称并修改密码为您设定的 MySQL 密码

修改后的内容如下(注意url中端口号前面的mysql为容器名称):

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: my-secret-pw

4.创建 Halo 容器实例

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --net halo-net --restart=unless-stopped halohub/halo:1.4.17

5.访问配置好的nginx端口映射 即可看到安装引导界面

本站地址:https://linyc.com.cm

0

评论区