ในการลง nginx แบบคอมไฟล์เอง ไม่ได้ลงผ่าน manager (api, yum) นั้น หากมีการปิดเครื่องหรือรีสตาร์ nginx จะไม่ทำงานขึ้นมาโดยอัตโนมัติ โดยหากต้องการให้ nginx ทำงานโดยอัตโนมัตินั้นสามารถทำได้หลายวิธี แต่ในที่นี้จะทำโดยการสร้างให้เป็น systemd service
นอกเหนือจากการทำให้ nginx สามารถเปิดขึ้นมาโดยอัตโนมัติเมื่อปิดเปิดเครื่องแล้ว การทำให้เป็น Systemd service ยังมีประโยชน์อื่นหลายอย่าง เช่น ทำให้สามารถรันโดยใช้คำสั่ง service เพื่อดู status หรือสั่ง start, stop, restart ได้เป็นต้น
เริ่มต้นโดยการสร้างไฟล์ nginx.service ที่ /lib/systemd/system โดย
sudo vi /lib/systemd/system/nginx.service
และทำการตั้งค่า ดังนี้
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
User=root
Group=root
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
ExecStartPost=/bin/sleep 0.1
[Install]
WantedBy=multi-user.target
เปิดใช้งานเซอร์วิส โดย
sudo systemctl enable nginx
เสร็จแล้วควรลองรีสตาร์ทดูว่าเมื่อเปิดเครื่องกลับมาแล้ว nginx รันขึ้นมาไหม ซึ่งเราสามารถดูสถานะของการทำงานของ service นี้ได้โดยใช้คำสั่ง
sudo service nginx status
หากปรากฎ PID file error เมื่อรันคำสั่งดู status ให้ตรวจสอบการตั้งค่าในไฟล์ nginx.conf (ที่ /usr/local/nginx/conf/nginx.conf) ว่ามีการตั้งค่า path ของ PID ไฟล์หรือไม่ หากไม่มีให้เพิ่มบรรทัดใหม่ หรือหากมีแต่เป็นค่าอื่นก็ให้เปลี่ยนเป็นค่าดังนี้ pid /run/nginx.pid;
หรือสามารถสั่งเปิดปิดได้โดยคำสั่งอื่นๆ เช่น
sudo service nginx start
sudo service nginx stop
sudo service nginx restart