1.安装uWSGI模块
pip install uwsgi
2.在项目根目录下创建uWSGI配置文件 【uwsgi.ini】
[uwsgi] #地址端口 http = 0.0.0.0:80 #项目路径 chdir = /root/projectname #项目启动文件 wsgi-file = manage.py #项目需要调用的启动类 callable = app #进程线程设置 processes = 4 threads = 10 #日志文件 daemonize = /app/logs/uwsgi.log #保存主进程pid文件 pidfile = uwsgi.pid #是否需要主进程 master = true
3.相关指令
启动
uwsgi --ini uwsgi.ini
重新加载
uwsgi --reload uwsgi.pid
停止
uwsgi --stop uwsgi.pid
查看所有运行的uwsgi服务:
ps -ef |grep uwsgi
强行结束
通过
ps -ef |grep uwsgi
检查uwsgi检查进程
将带着之前的ini配置的进程全部kill
相关kill指令:
kill全部uwsgi ini进程
killall -s INT uwsgi
日志分割(仅供参考)
要将uwsgi启动的Python web接口的日志文件按照每天来进行存储,可以采用以下步骤
1.在uwsgi配置文件中添加以下内容:
log-date = true log-reopen = true
这将使uwsgi在每天的午夜自动重新打开日志文件,并将日期添加到日志文件名中。
2.在日志目录中创建一个符号链接,将其指向当前日志文件。
这样就可以让日志文件始终使用相同的名称。例如:
ln -sf /var/log/uwsgi/app/myapp.log.20210315 /var/log/uwsgi/app/myapp.log
这将创建一个名为myapp.log的符号链接,将其指向前一天的日志文件。
3.使用logrotate工具来对日志文件进行归档和压缩,并按照日期将其命名。
例如,可以创建一个名为/etc/logrotate.d/uwsgi的文件,其中包含以下内容:
/var/log/uwsgi/app/myapp.log { daily rotate 7 compress dateext missingok notifempty sharedscripts postrotate systemctl reload uwsgi.service > /dev/null 2>&1 || true endscript }
这将使logrotate每天自动将myapp.log文件进行归档和压缩,并将其命名为myapp.log-YYYYMMDD.gz。rotate指定了保留日志文件的数量,postrotate中的命令将重新加载uwsgi服务,以便使用新的日志文件。
4.最后,确保uwsgi日志目录和日志文件的权限设置正确,以便uwsgi服务可以访问并写入日志文件。
chown uwsgi:uwsgi /var/log/uwsgi/app chmod 755 /var/log/uwsgi/app
这将 将/var/log/uwsgi/app目录的所有权和权限设置为uwsgi用户和组,并设置目录权限为755
此外,还可以考虑在uwsgi配置文件中配置日志级别和日志格式,以便更好地记录和跟踪应用程序的行为。
例如:
log-date = true log-reopen = true log-format = %(asctime)s %(levelname)s %(message)s log-level = info
这将启用uwsgi日志记录,以便在每行日志中包含时间戳、日志级别和消息文本。可以根据需要将日志级别设置为debug、info、warning、error或critical。