只需要一种选项:使用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 メモ書き
广告
将在 10 秒后关闭
bannerAds