只需要一种选项:使用systemctl命令将nginx和httpd设置为自动启动时,nginx会发生错误
环境或情况
-
- CentOS7
nginx(v1.15.8)
リバースプロキシで待受、アクセス振り分け
port:443
httpd(2.4.35)
wordpressとかdjangoとか動かしている。アプリごとに違うポートで待受している
port:8443
port:8444
由于什么
如果Nginx先于httpd启动,显然httpd端口还没有打开,所以Nginx会崩溃!!
治す!!
自動啓動的設定文件被存放在以下兩個目錄中。
-
- /usr/lib/systemd/system/
- /etc/systemd/system/
注意: 追加、編集する際は/etc/systemd/systemを編集するようにしましょう。
/usr/lib/systemd/system/はsystemctlが作成したり書き換える場所なので、いじっちゃ駄目です。
/etc/systemd/system/は、サーバー管理者がいじっても平気なファイルたちです。
如果两个目录中存在相同的文件,则以/etc/systemd/system/为优先。
创建nginx.service
# nginxをyumでインストールした場合、雛形が置いてあるのでコピーしてくる
sudo cp /usr/lib/systemd/system/nginx.service /etc/systemd/system/
sudo vim /etc/systemd/system/nginx.service
大部分都是原封不动的,但是通过在After=参数中添加httpd.service,可以让nginx在httpd启动后自动启动。同时,我也添加了Requires=参数。意思是如果httpd.service没有启动,nginx.service也不会启动。
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target httpd.service
Wants=network-online.target
Requires=httpd.service
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
最后我会发送通知说我已经更新了systemctl的unit文件哦。
sudo systemctl daemon-reload
# サービスの再起動、確認
sudo systemctl restart nginx httpd
sudo systemctl status nginx httpd
结束
参考于这篇文章
- Systemd メモ書き