linux下使用nohup挂后台启动django项目

     阅读:46

django在linux上运行,一般在xshell远程连接后,是通过如下命令启动服务:

python manage.py runserver 0.0.0.0:8000

但是这样有个弊端,窗口关闭服务就停止了,如何做到窗口关闭服务不停止呢?那就是后台启动!!!

而nohup可以实现django项目启动的时候挂后台运行,保证窗口关闭不影响服务运行。

具体操作如下:

步骤1:cd切换到django的manage.py目录,启动之前先杀掉之前的django manage.py方式运行进程。方法参考linux如何停止后台运行的Django项目https://blog.csdn.net/qq_36564503/article/details/122628691步骤2:接着使用nohup启动进程,可以指定日志输出到django_8001.log,如果不指定默认是在nohup.out。指定日志路径后面加上2>&1 &

(ablog) [root@VM-0-8-centos ablog.cn]# nohup python manage.py runserver 0.0.0.0:8001 >/www/wwwroot/ablog.cn/django_8001.log 2>&1 &
[1] 21616
(ablog) [root@VM-0-8-centos ablog.cn]# tail -f /www/wwwroot/ablog.cn/django_8001.log
nohup: ignoring input
Watching for file changes with StatReloader
[12/Feb/2022 01:30:41] "GET /news/ HTTP/1.1" 200 17423
[12/Feb/2022 01:30:42] "GET /static/js/news.js HTTP/1.1" 304 0
[12/Feb/2022 01:30:42] "GET /media/cache/14/90/14902925a4ccb040f4e40970abdf29c0.jpg HTTP/1.1" 304 0
[12/Feb/2022 01:30:42] "GET /media/cache/c6/a3/c6a365779473bcc68229d3b21576af55.jpg HTTP/1.1" 304 0

查看实时日志可以用tail -f djo.out

start.sh和stop.sh

接着可以在manage.py目录下一个start.sh文件启动django,再写个stop.sh停掉django服务。
使用vim start.sh编辑以下2行,编辑完成后Esc退出,输入:wq保存退出

[root@yoyo django2]# vim start.sh

ps -aux | grep python|xargs kill -9    # 注意如果有多个虚拟环境中运行着多个django服务需要使用端口
nohup python manage.py runserver 0.0.0.0:8000 >djo.out 2>&1 &

继续vim stop.sh编辑,编辑完成后Esc退出,输入:wq保存退出

ps -aux | grep python|xargs kill -9

编辑完成之后,授权这2个文件

[root@yoyo django2]# chmod +777 start.sh

[root@yoyo django2]# chmod +777 stop.sh

启动django

启动服务执行./start.sh,关闭服务执行./stop.sh

启动完成后,在浏览器输入地址,然后执行tail -f djo.out可以看到实时日志