Django 虚拟环境下创建 uWSGI 开机自启服务

在这篇笔记中,记录了 Django 使用 NginxuWSGI 部署在服务器(虚拟机模拟)上。但是,没能使用虚拟环境, 今天有时间,折腾了一下。

阿里云三个月免费服务器,系统是 Ubuntu 22.04 LTS


所有操作,通篇阅读后,按需执行


一、虚拟环境下创建 uWSGI 开机自启服务

所有操作,与这篇笔记一样,只不过除了 Nginx,其他的操作都是在 Django 环境下完成。

首先,安装并配置好 pythonvirtualenv,激活虚拟环境 Django,在虚拟环境中安装 Django 项目需要的所有模块(包,pip install -r requestments)。

然后,虚拟环境下安装并配置好 uWSGI (pip install uWSGI)。编辑网站根目录下的 start_uwsgi.sh 文件,内容为:

#!/bin/bash
/home/breky/.virtualenvs/Django/bin/uwsgi --ini /home/breky/Workspace/djangodemo/Retrieve/Retrieve_uwsgi.ini

uwsgi 需要带绝对路径。可以使用 whereis uwsgi 查看,因为是在虚拟环境中使用 pip install 安装的,所以 uwsgi 的安装目录是在 Django 虚拟环境的 bin 目录下。

修改 start_uwsgi.sh 的权限。还是需要给加上执行权限的 sudo chmod 755 start_uwsgi.sh

这样就可以了,激活虚拟环境什么的,都不需要。

最后,确保 uwsgi 服务 配置文件中的 ExecStart 的值改为指向start_uwsgi.sh 就好了

ExecStart=/home/breky/Workspace/djangodemo/Retrieve/start_uwsgi.sh

启动 uWSGI 服务:sudo systemctl start uwsgi.serviceuwsgi.service 写成 uwsgi 也成,服务不能重名的 )

设置 uWSGI 服务开机启动:sudo systemctl enable uwsgi.service

查看 uWSGI 服务状态: sudo systemctl status uwsgi.servic

二、一些可能用到的命令

systemctl,系统服务的启动、结束、重启以及查看状态的命令。

sudo systemctl start xxx  # 启动 xxx 服务
sudo systemctl stop  xxx  # 结束 xxx 服务
sudo systemctl enable xxx # 设置 xxx 服务开机自动启动
sudo systemctl status xxx # 查看 xxx 服务的状态

ps,查看系统运行的所有进程。

ps -aux  # 以详细格式显示所有正在运行的进程
# -a: 显示所有进程
# u:以便于用户查看的方式,列出所有进程的详细信息
# x:显示没有控制终端的进程。好像是说后台进行的程序也列出来

# 一般与管道符(|) 一起联用
ps -aux | grep uwsgi  # 只显示 uwsgi 进程的详细信息。用于拿到 pid,然后 kill 掉。



结束!!!!

题外话

使用宝塔面板的小伙伴们,是可以从宝塔面板上直接安装 NginxuWSGI的。但是,没搞明白怎么用。我之前也是用宝塔面板安装的这两个软件,各种调试,没成功。最后,重装了服务器系统,手动安装的。

远程连接服务器。用 ssh 连接,命令是 ssh 用户名@服务器IP,按提示输入密码即可。软件用 xshell 就可以;用 win10ubuntu 子系统也行,子系统默认是没有图形界面的,直接输入 ssh 命令连接就行。