前面, 作者已经介绍了把 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: 2345 70 30
- #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;
四, 最后, 重启操作系统, 检验上述配置是否成功!
来源: http://www.bubuko.com/infodetail-2805272.html