云主机Centos7搭建Halo博客系统
**前提条件:购买优刻得云主机并安装centos7**
安装docker
docker官网安装链接:https://docs.docker.com/engine/install/centos/
1.确定你是CentOS7及以上版本
cat /etc/redhat-release
2.卸载旧版本
3.yum分别安装gcc相关
yum -y install gcc
yum -y install gcc-c++
4.安装需要的软件包
官网要求
yum install -y yum-utils
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
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! 则表示安装成功
10.配置阿里云镜像加速
- 登陆阿里云开发者平台搜索镜像服务
- 获取加速器地址
- 根据提示配置镜像加速
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.申请域名
2.申请免费的https证书
3.配置域名解析添加记录
注意:必须填写两个记录一个绑定https证书,一个绑定云服务器ip地址
4.下载nginx对应的证书
5.申请网站备案
注意:不申请可能导致网站不可用
docker 部署nginx
1.拉取nginx镜像
docker pull nginx
此时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
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
评论区