在这之前遇到一个小问题:
/usr/local/nginx/sbin/nginx -s reload
命令不生效,报错信息:
# /usr/local/nginx/sbin/nginx -s reload
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
解决:
#执行
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
正题开始:
Nginx开机自启的配置
创建nginx.service
文件
- 切换到
/etc/systemd/system/
目录下
cd /etc/systemd/system/
- 创建
nginx.service
文件
#直接编辑
vim 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
- wq保存退出
- 设置开机自启
systemctl enable nginx.service
- 其他执行命令:
systemctl start nginx.service #启动
systemctl restart nginx.service #重启
systemctl stop nginx.service #停止
uwsgi也和nginx配置差不多
Nginx开机自启的配置
因为我有两个web项目:xxxx01、xxxx02
所有为了好管理:【如果没有这种需求的话,直接创建xxxx_uwsgi.service
就可以了】
先创建web_server_uwsgi
目录
- 切换到
/etc/systemd/system/
目录下
mkdir web_server_uwsgi
创建xxxx01_uwsgi.service
文件
- 切换到
web_server_uwsgi
目录下
cd web_server_uwsgi
- 创建
xxxx_uwsgi.service
文件
#直接编辑
vim xxxx_uwsgi.service
- 添加配置信息
[Unit]
Description=HTTP Interface Server
After=syslog.target
[Service]
KillSignal=SIGQUIT
ExecStart=/usr/bin/uwsgi --ini /你的项目路径/uwsgi.ini #uwsgi.ini文件是你项目下的uwsgi.ini
Restart=always
Type=notify
NotifyAccess=all
StandardError=syslog
[Install]
WantedBy=multi-user.target
-
wq保存退出
-
我的
uwsgi.ini
文件
[uwsgi]
chdir = 你的项目的路径
module = MyDemo.wsgi:application
socket = 127.0.0.1:8080
master = true
#vhost = true //多站模式
#no-site = true //多站模式时不设置入口模块和文件
#workers = 2 //子进程数
#reload-mercy = 10
#vacuum = true //退出、重启时清理文件
#max-requests = 1000
#limit-as = 512
#buffer-size = 30000
#pidfile = /var/run/uwsgi9090.pid //pid文件,用于下脚本启动、停止该进程
logto = 项目路径/run.log
disable-logging = true
logto = 项目路径/run.log
这个是日志文件,不用自己创建
之前我是daemonize= 项目路径/run.log
但是看网上资料说会导致开机重复启动,没深究。
xxxx02_uwsgi.service.service
文件同样操作,就不演示了。
- 设置开机自启
systemctl enable xxxx01_uwsgi.service
# systemctl enable xxxx02_uwsgi.service
- 其他执行命令:
systemctl start xxxx01_uwsgi.service #启动
systemctl restart xxxx01_uwsgi.service #重启
systemctl stop xxxx01_uwsgi.service #停止
其他
uwsgi
设置daemonize
是后台运行,并输出日志 执行uwsgi uwsgi.ini
正常运行uwsgi
设置logto
是后台运行,并输出日志 执行uwsgi uwsgi.ini
你以为卡住了,其实他不是后台运行。- 如果你单独执行,并且项目的
uwsgi.ini
配置文件中设置了logto
【daemonize
就不用看了】需要执行uwsgi -d --ini uwsgi.ini
。这就在后台运行了。