非root用户下安装supervisor并使用supervisor和gunicorn部署项目

非root用户下安装supervisor并使用supervisor和gunicorn部署项目


背景:

使用实验室的服务器部署Flask项目的时候,打算使用supervisor+gunicorn来部署,之前按照网上部署Flask项目的教程,其中gunicorn可以使用pip命令

pip install gunicorn

supervisor的安装,直接使用sudo apt-get就完事

sudo apt-get -y install supervisor

然而非root模式下就不行了,sudo是不可能的,这辈子都不可能的,而且默认安装supervisor的文件夹位置普通用户没有写权限,所以也安装不了

非root用户安装supervisor:

第一步:首先使用pip命令安装

注意:一定要看好自己用的哪个python环境,是原环境还是某个虚拟环境
这里我以anaconda的base环境为例安装

pip install supervisor

这个时候supervisor会安装到anaconda所在文件夹下的bin目录下,下图是我服务器的路径
在这里插入图片描述右下角红框框出的三个文件就是我们以后要用到的

当然了如果你pip安装的时候使用的是其他python虚拟环境,你需要到相应的python虚拟环境下的bin目录下面寻找

第二步:生成默认配置文件

执行下面命令

echo_supervisord_conf > 自己指定的绝对路径下/supervisord.conf

例如,我把它生成在我的用户文件夹下的supervisor文件夹(自己建了个supervisor文件夹)下

echo_supervisord_conf > /home/guyu.gy/supervisor/supervisord.conf
第三步:修改supervisord.conf配置文件

你可能会看到配置文件里面很多以分号开头的语句,;代表注释,也就是没有用
在这里插入图片描述下面对这个文件修改以下几个地方
1.
找到[unix_http_server]开头的部分,修改file后面的路径为

file=自己指定的绝对路径下/supervisor.sock

比如我的服务器下指定的就是下图这个样子
在这里插入图片描述2.
找到[supervisord]开头的部分,修改logfile和pidfile后面的路径

logfile=自己指定的绝对路径下/supervisord.log
pidfile=自己指定的绝对路径下/supervisord.pid

比如我的服务器下指定的路径就是下图的样子
在这里插入图片描述
3.
找到[supervisorctl]开头的部分,修改serverurl路径为

serverurl=unix://自己指定的绝对路径下/supervisor.sock

比我指定的绝对路径是

/home/guyu.gy/supervisor/supervisor.sock

那么最终就是下图的样子
在这里插入图片描述

最后,在整个文件的最后添加这么两句
在这里插入图片描述
并在supervisor.conf这个配置文件所在的文件夹下创建一个conf.d文件夹


ok,supervisor算是弄完了,怎么用呢,下面我看如何使用gunicorn部署项目并使用supervisor进行监控

部署项目

接着上面,进入conf.d文件夹
创建配置文件

vim project_name.conf

(这个project_name写你项目的名字)

配置文件内容如下:

[program:project_name]
command=gunicorn启动项目的命令
directory=项目的根目录
user=你linux服务器的用户名
autostart=true
autorestart=true
killasgroup=true
stderr_logfile=自己指定error.log文件存放的绝对地址
stdout_logfile=自己指定out.log文件存放的绝对地址

;如果你的项目需要用显卡,需要指定用哪个显卡加上下面的命令
environment=CUDA_VISIBLE_DEVICES=显卡号

gunicorn命令常用的参数如下

gunicorn -b 监听地址 -w work数量即监听进程数 启动文件:app变量 -t 最大超时时间

下面举个例子:

[program:myproject]
command=/home/guyu.gy/anaconda3/bin/gunicorn -b 127.0.0.1:8080 -w 4 app:app -t 100
directory=/home/guyu.gy/myproject
user=guyu.gy
autostart=true
autorestart=true
killasgroup=true
stderr_logfile=/home/guyu.gy/logs/myproject/error.log
stdout_logfile=/home/guyu.gy/logs/myproject/out.log
environment=CUDA_VISIBLE_DEVICES=1

注意我上面的gunicorn用到了gunicorn所在的绝对地址,它也在你pip安装的相应的python环境的bin目录下,我这样写是以防万一出错,当然你也可以试试直接只写gunicorn


使用supervisor启动项目

现在supervisor安好了,项目的配置文件也写好了,可以开始启动了

进入supervisor所在的文件夹,即python环境的bin目录下,我的是~/anaconda3/bin

1.执行下面命令,打开supervisor
./supervisord -c supervisord.conf文件所在的绝对路径

比如我的是

./supervisord -c /home/guyu.gy/supervisor/supervisord.conf
2.启动项目
./supervisorctl -c supervisord.conf文件所在的绝对路径 reload

比如我的是

./supervisorctl -c /home/guyu.gy/supervisor/supervisord.conf reload

如果配置文件发生了改变也是使用上面的reload命令

如果项目代码发生了改变使用restart命令

./supervisorctl -c supervisord.conf文件所在的绝对路径 retart project_name

注意project_name要和你相应的配置文件名一样

当然还可以使用start project_name, stop project_name, start all, stop all(前面还是一样用supervisorctl命令)

如果你觉着输入这些路径麻烦可以给命令加个别名

在CentOS上部署.NET Core项目的两种常见方式是使用 nohup 和 supervisor。 1. 使用 nohup nohup 是一个命令,可以在后台运行一个命令,不受终端退出的影响。使用 nohup 部署.NET Core项目,可以在后台运行程序,并且在服务器重启后自动启动。 使用 nohup 部署.NET Core项目的步骤如下: 1. 在服务器上安装.NET Core运行时和SDK。 2. 在服务器上创建一个目录,将编译好的.NET Core项目拷贝到该目录下。 3. 使用 nohup 命令运行.NET Core程序,例如: ``` nohup dotnet /path/to/your/project.dll & ``` 4. 程序将在后台运行,并且不受终端退出的影响。 2. 使用 supervisor supervisor 是一个进程管理工具,可以在后台管理进程,并且在服务器重启后自动启动。使用 supervisor 部署.NET Core项目,可以更方便地管理和监控程序。 使用 supervisor 部署.NET Core项目的步骤如下: 1. 在服务器上安装.NET Core运行时和SDK。 2. 在服务器上安装 supervisor,例如: ``` sudo yum install supervisor ``` 3. 创建一个 supervisor 配置文件,例如: ``` sudo nano /etc/supervisord.d/myproject.ini ``` 在文件中添加以下内容: ``` [program:myproject] command=/usr/bin/dotnet /path/to/your/project.dll directory=/path/to/your/project autostart=true autorestart=true stderr_logfile=/var/log/myproject.err.log stdout_logfile=/var/log/myproject.out.log ``` 4. 重新加载 supervisor 配置文件,例如: ``` sudo supervisorctl reread sudo supervisorctl update ``` 5. 启动.NET Core程序,例如: ``` sudo supervisorctl start myproject ``` 6. 程序将在后台运行,并且由 supervisor 管理。可以使用 supervisorctl 命令来管理程序,例如: ``` sudo supervisorctl stop myproject sudo supervisorctl start myproject sudo supervisorctl restart myproject sudo supervisorctl status myproject ``` 以上是使用 nohup 和 supervisor 两种方式在 CentOS 上部署.NET Core项目的方法。使用 supervisor 可以更方便地管理程序,但需要安装额外的工具。使用 nohup 可以更简单地启动程序,但需要手动管理进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值