从0到1 轻松部署项目
这是一个分享如何部署前后端分离的项目
从0到1 轻松部署项目
从0到1 轻松部署项目
1. 前言
最近在尝试部署一个项目由于是第一次部署,所以遇到了很多问题,于是决定写一篇博客来记录一下部署的过程,方便以后查阅。
2.项目背景
前端使用nodejs的新生框架svelteKit;
后端使用Golang,无框架;
数据库使用关系型postgresql
操作系统:window11
3. 准备工作
3.1. 购买并连接服务器
阿里云地址
1
https://cn.aliyun.com/
首先需要购买一台服务器,我选择的是阿里云的ECS服务器,购买时需要注意选择合适的配置,比如CPU、内存、带宽等。新人的话标配版。一年99块,足够了。 我的服务器是Ubuntu的操作系统
之后可以控制台的实例中,找到刚刚购买的服务器ECS。进行远程连接,建议直接先使用密码登录,以Root的角色登录
3.2. 安装宝塔面板
1
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh 2d18f339c
进入以下界面
即可安装,并且需要下载证书
1
https://dg2.bt.cn/ssl/baota root.pfx
进入以下网址,输入密码www.bt.cn,即可成功运行安装宝塔面板
3.3 进入宝塔面板
打开图片中外网的网址即可进行宝塔面板,输入刚刚的用户名跟密码,即可进入到宝塔界面,随后一键安装第一个
等待安装即可
4.部署postgresql
4.1安装postgresql服务
1
https://cn.linux-console.net/?p=22460
即可安装,并且创建属于自己用户的数据库,可以使用VScode中的插件进行远程连接尝试
5.部署Golang后端
5.1 在服务器上安装Golang的运行环境
- 1.下载适用于linux的golang安装包。可以去官网下载,也可以在阿里云这个网站下载https://mirrors.aliyun.com/golang/。本项目下载go1.21.12.linux-amd64.tar.gz这个包。
- 2.把下好的包通过宝塔文件系统放入服务器中,执行指令安装golang
1
tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
- 3.需要在配置文件中添加GO语言环境变量
1
2
3
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export GOPATH=/www/wwwroot/goweb' >> ~/.bashrc
- 4.立即生效,即可在任何地方使用GO的命令。
1
source ~/.bashrc
接着检查是否安装成功
1
go version
5.2 将Golang项目通过宝塔界面上传到服务器,启动后端
- 1.创建对应的文件夹,用于存放你的Golang项目,随后执行下面的指令
1
2
go mod tidy
go build
即可生成Linux的可执行文件 使用ls指令来查看是否增加了一个无任何后缀的文件
- 2.接着使用指令启动后端,&作用是在后台默默的运行,»作用将打印信息追加到当前目录之下的output.log的文件里面,把../main换成自己的路径跟可执行文件名称即可
1
nohup ../main >> output.log 2>&1 &
1
ps aux | grep '...'
6.部署前端svelteKit项目
6.1打包自己的前端项目
- 1.把自己的项目安装上自动化打包的包,需要安装的包,但是要注意与主的svelte版本进行适配
1
"@sveltejs/adapter-auto": "^3.0.0",
- 2.把svelte.config.js文件添加上这一段:
1
2
3
4
5
6
7
8
9
10
11
12
kit: {
adapter: adapter({
// default options are shown. On some platforms
// these options are set automatically — see below
pages: 'build',
assets: 'build',
fallback: 'index.html',
precompress: true,
strict: true,
}),
}
6.2 部署前端项目
即可使用npm run build来进行项目打包,之后会在主目录下方生成一个build文件夹,把这个build文件夹拖入到文件系统里面,开启一个网站站点
之后去配置文件,添加上一段nginx转发的协议即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 反向代理,将指定路径转发到指定目标, '/api'为 'http' 请求
location /api {
resolver 127.0.0.11;
set $target http://127.0.0.1:6167;
proxy_pass $target;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
port_in_redirect off;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
# '/msg' 为 'websocket' 连接
location /msg {
resolver 127.0.0.11;
set $target http://127.0.0.1:6167;
proxy_pass $target;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
port_in_redirect off;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to redirecting to index.html
try_files $uri $uri/ $uri.html /index.html;
}
最后需要去服务器的安全组开放端口即可!大家可以参观我的选课管理系统!(等我域名申请下来的话….)
本文由作者按照 CC BY 4.0 进行授权








