CentOS7 nginx和uwsgi配置开机自启

it2026-08-08  1

在这之前遇到一个小问题: /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。这就在后台运行了。
最新回复(0)