从零开始的Mx-space后端部署保姆级教程
从零开始的Mx-space后端部署保姆级教程
引言
博主是一个纯萌新,去年偶然看到了innei大佬的Mx-space和他的主题Shiro
于是我便萌生了想要从Typecho转战Mx-space的想法
但是由于我的技术十分有限,纯纯的萌新,从最开始让提莫酱帮我搭建开始
到现在来来回回部署了几十次,目前来说对于整个流程已经差不多知道了😅
也算是撞南墙把南墙撞破了捏
参考文章
本篇教程参考了以下文章,感谢大佬们的分享精神!
注意
博主本人也是一个纯萌新,所以写出来的教程属于傻瓜式,可能会出现问题,遇到问题可询问GPT之类的AI,(bing的Copilot也不错捏)
本文是前后端分离两站点的部署教程!!!
最让人方便理解的说法:
前端域名:www.domain.com
后端域名:admin.domain.com
起手式
服务器的环境部署
首先,我是比较推荐大厂的服务器的,我的就是阿里云国内服务器
国内服务器的好处不用多说,就是访问速度快一些
但是对于部署环境之类的来说,由于众所周知的原因,比较🥚疼。
服务器性能要求:博主的是2h4G,完全可以部署。
所以这里,我将用阿里云国内的ECS进行部署演示;
域名解析
本教程的域名示例:
前端:shiro-test.works.uegee.com
后端:admin.shiro-test.works.uegee.com
请将您的域名解析到服务器上,这是最重要的一步
安装(后端)
1Panel(可选)
如果你是一个萌新,那么我推荐你使用运维工具
对于萌新,用用宝塔就好,当然如果你想进阶部署,或者更高一级一点的
那么我就推荐你使用1Panel了
宝塔是闭源的且要求你强制登录(不推荐你使用破解版或者绿化版等,可能会存在后门漏洞等影响安全性)
而1Panel是开源的,比宝塔强一些
关于宝塔或者1Panel的安装在这就不展开了,可以直接百度其官网查看安装过程
演示中使用的是1Panel。
安装docker
国内服务器
打开您的阿里云后台,进入ECS服务器页面控制
进入 定时与自动化
->安装/卸载扩展程序
->安装扩展程序
我们在公共扩展程序
内选择docker
拓展程序包
然后下一步,确定,等待阿里云后台安装docker的成功。
境外服务器
或者如果您的服务器并不是阿里云的,或者是境外服务
器可是使用以下命令安装curl -fsSL https://get.docker.com | bash -s docker
如果您安装好了docker和docker-compose,可通过以下命令查看版本
docker -v
docker compose version
拉取到docker的配置文件
国内服务器
国内服务器的docker源访问是有问题的
所以您需要多设置一步registry mirror
tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://hub.zzz.moe"]
}
EOF
鸣谢、支持来自Docker Speed Up
如果您在国外,则不需要设置
拉取docker文件
# 创建文件夹
cd && mkdir -p mx-space/core && cd $_
# 拉取 docker-compose.yml 文件
wget https://fastly.jsdelivr.net/gh/mx-space/core@master/docker-compose.yml
- 参考自Mx-Space官方文档
正确的执行结果
配置core启动配置文件
可在Mx-Space官方文档的配置工具进行配置,在服务器控制台使用openssl rand -hex 32
生成秘钥(或者你可以自己写一个,但是不建议)
我建议生成两次,一个作为JWT秘钥,一个作为加密秘钥
JWT
密钥:需要填写长度不小于 16 个字符,不大于 32 个字符的字符串,用于加密用户的 JWT,务必保存好自己的密钥,不要泄露给他人。被允许的域名
:需要填写被允许的域名,通常是前端的域名,如果允许多个域名访问,用英文逗号,分隔。是否开启加密
:如果你确定要开启加密,将 false 改为 true,开启加密后,你需要在下方填写加密密钥。加密密钥
:如果你不知道这是什么,那么不建议开启此功能,具体内容可参考 https://mx-space.js.org/usage/security.html
编辑docker-compose.yml
将上面复制的,填写到docker-compose.yml
对应的地方
CORS跨域
博主在自己部署的时候因为这个问题头疼了很久
在Innei和Ethan的帮助下,成功的解决了.env文件
进入
Core
的目录地址
cd mx-space/core
touch .env && vi .env
编辑.env
文件,参考.env.example
#THIS ENV FILE EXAMPLE ONLY FOR DOCKER COMPOSE
#SEE https://docs.docker.com/compose/environment-variables/#the-env-file
JWT_SECRET=8036710056958ddddafdbf4f3ce479057ba5f0202eca33e603f18dd5fba60268 #这里更改成你的JWT_SECRET秘钥
ALLOWED_ORIGINS=shiro-test.works.uegee.com # 这里要更改为你的前端域名
#must be 64bit
ENCRYPT_KEY=5067c19addf5d08ea4588f32894b3c8689c5acec0c959ef4cd5dfd81dc872e05 # 这里更改成你的ENCRYPT_KEY
ENCRYPT_ENABLE=false
#CDN Cache header
CDN_CACHE_HEADER=true
FORCE_CACHE_HEADER=false
#CUSTOM MONGO CONNECTION
MONGO_CONNECTION=
#Throttle
THROTTLE_TTL=10
THROTTLE_LIMIT=20
启动Core
确保上一步编辑的准确无误后
就可以开始启动后端Core
了
启动很简单,只需要一条指令即可
docker compose up -d
等待慢慢构建、启动成功即可
后端反代
- 本文采用1Panel运维工具进行示例,如果你是宝塔或者别的运维工具,大体上差距不会太大
首先,我们需要部署openresty
然后我们通过1Panel的 网站
->网站
->创建网站
->静态网站
创建我们的后端反代
主域名就填写我们的后端域名,点击创建即可
然后我们访问一下看看是不是访问正常
如果成功,我们就可以看到喜闻乐见的恭喜页面
了
恭喜, 站点创建成功!
这是默认index.html,本页面由系统自动生成
配置文件
接下来,我们点击右侧的配置
按钮
点击配置文件
按钮,然后参考我们Mx-Space官方反代文档
server {
## 反向代理开始
## WebSocket
location /socket.io {
proxy_pass http://127.0.0.1:2333/socket.io;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_http_version 1.1;
add_header Cache-Control no-cache;
}
## Others
location / {
proxy_pass http://127.0.0.1:2333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
}
## 反向代理结束
}
大功告成
输入后端域名,输入密码就可以使用啦