背景:使用 beego 开发了一个 web 接口系统,准备部署到线上进行调试,参考 beego 文档中的部署方案后选择使用 Supervisor 来管理我的项目
以下是我在研究 beego 线上部署时参考的文档链接:
beego自动化部署
ubuntu中supervisor的安装及配置
supervisor 使用详解
解决unix:///tmp/supervisor.sock no such file的问题
1. Supervisor 安装
环境:Ubuntu 18.04
安装 supervisor
$ sudo apt-get install supervisor
$ cd /etc/supervisor/
$ ls -l
drwxr-xr-x 2 root root 4096 May 10 23:56 conf.d
-rw-r--r-- 1 root root 1178 Aug 12 2017 supervisord.conf
我们可以看到 supervisord.conf 中
[include]
files = /etc/supervisor/conf.d/*.conf
supervisor 管理进程的配置文件在 /etc/supervisor/conf.d/
路径下
这时候我们的 supervisor 其实已经启动了,可以通过以下命令查看
$ ps aux | grep supervisor
2. beego 项目打包
使用 bee pack 命令打包项目,假定项目名为 project
bee pack -be GOOS=linux // 打包
bee pack -be GOOS=linux -exp="logs:conf:.git" // 打包,排除指定目录,冒号分隔
bee pack -be GOOS=linux -exp="logs:conf:.git:views:session:static:go.sum:go.mod"
执行打包后,在项目根目录下会生成一个 project.tar.gz 压缩文件,这个就是需要我们上传到线上部署的项目文件。
现在我们将 project.tar.gz 上传到线上项目目录中
假定我们项目目录为 /home/wwwroot/project/
$ cd /home/wwwroot/project
$ tar zxf project.tar.gz
3. 使用 supervisor 管理 beego 项目
P.S. 常见错误处理
No such file or directory: file: /usr/lib/python2.7/socket.py
这是由于没有启动 supervisor 或没有使用 root 权限
解决方式如下
sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf