设置Django生产环境系统重启后的自动启动项

时间:2024-01-14 10:08:56

前面,作者已经介绍了把Django部署到生产环境中的主要方法,现在我们来看一下如何设置项目开机启动。

在把Django项目部署到生产环境中时,我们前面使用安装包和源码安装了Nginx、uwsgi、redis等,这些应用安装后,不会使用系统默认服务一样来快速启停服务,需要到对应的安装目录下才能启动应用。如果服务因为某些原因重启,上述应用不能自动启用,实际生产环境中后果将是一场悲剧。

通过本篇教程,您将了解到上述应用开机自动启动的方法。

一、将Nginx设为系统服务,且开机启动

目标:使用systemd服务文件以.server结尾的方式操作应用的启、停和开机启动方式,如

systemctl start/restart/enable/stop/disable nginx.service

那就需要进行如下操作:

1、在系统服务目录里创建并编辑nginx.service文件

vim /lib/systemd/system/nginx.service
 [Unit]
Description=nginx
After=network.target [Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true [Install]
WantedBy=multi-user.target

[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

保存退出。

2、设置开机启动

systemctl enable nginx.service

3、其他命令

systemctl [操作命令] nginx.service

操作命令:

start,启动服务

disable,停止自启

status,查看服务状态

restart,重新启动服务

二、通过shell脚本,设置开机自动启动Django的uwsgi服务

1、切换到/etc/init.d/ (注:目录位置不要写错)

2、制作sh脚本 vim start_mysite.sh

 #!/bin/sh
#add for chkconfig
#chkconfig:
#description: the description of the shell #关于脚本的简短描述
#processname: andyStart #第一个进程名,后边设置自启动的时候会用到 #下面要启动服务的命令
uwsgi -x /data/wwwroot/mysite/mysite.xml; #uwsgi .xml配置文件的具体位置

保存退出

说明:

2345是指脚本的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5就是图形界面X

70是指脚本将来的启动顺序号,如果别的程序的启动顺序号比70小(比如44、45),则脚本需要等这些程序都启动以后才启动。

30是指系统关闭时,脚本的停止顺序号。

3、linux 下shell脚本执行多个命令的方法

(1)每个命令之间用;隔开

说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

(2)每个命令之间用&&隔开

说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

(3)每个命令之间用||隔开

说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

4、给脚本加上可执行权限:chmod +x andy.sh

5、利用chkconfig命令将脚本设置为自启动:chkconfig --add andy.sh

三、设置redis开机启动

前文已经介绍了如何安装redis,并且演示了使用systemd配置.service文件进行开机启动的方法。(继续阅读本文的前提是您已经阅读了《centos7 安装redis 开机启动》,如果您已经配置了redis开机启动服务,也可略过后面的内容)

这里我们介绍另外一种设置redis开机启动的方法,即使用shell脚本配置redis开机启动。

编辑上一步生成的start_mysite.sh脚本

vim /etc/init.d/start_mysite.sh

在最后加上一条配置命令:

/usr/local/redis/redis-server;

四、最后,重启操作系统,检验上述配置是否成功!