๐Ÿ“‚ System/Linux

[Linux] ์„œ๋น„์Šค๋ž€? ์„œ๋น„์Šค ๋“ฑ๋ก, ์„œ๋น„์Šค ๊ธฐ๋™, ์„œ๋น„์Šค ๋กœ๊ทธ ๋ณด๊ธฐ

dhyuck 2024. 2. 14. 22:55
๋ฐ˜์‘ํ˜•

์„œ๋น„์Šค(Service)๋ž€?

๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์ฃผ๋กœ ์‹œ์Šคํ…œ ๋ถ€ํŒ…์‹œ์— ์ž๋™์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋Š” ์ฃผ๋กœ systemd๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๊ฐ€ ๋˜๋ฉฐ, systemctl์€ systemd๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ์ž…๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•

์„œ๋น„์Šค๋ฅผ ๋“ฑ๋กํ•˜๋ ค๋ฉด /etc/systemd/system ๋˜๋Š” /lib/systemd/system ๋””๋ ‰ํ„ฐ๋ฆฌ์— [์„œ๋น„์Šค๋ช…].service๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์•„๋ž˜๋Š” nginx๋ฅผ ์„œ๋น„์Šค๋กœ ๋“ฑ๋กํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

# nginx.service
[Unit]
Description=Nginx service
# After๋Š” ํ•ด๋‹น ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ค ๋‹ค๋ฅธ ์„œ๋น„์Šค์ด ์ดํ›„์— ํ™œ์„ฑํ™” ๋˜์–ด์•ผ ํ•จ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
# ์„œ๋น„์Šค ๊ฐ„์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
After=network.target

[Service]
Type=forking
User=root
Group=root
# ์‹คํ–‰, ์žฌ์‹œ์ž‘, ์ •์ง€์— ํ•„์š”ํ•œ ๋ช…๋ น์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop

[Install]
# WantedBy๋Š” ์–ด๋–ค ๋Œ€์ƒ์ด ์›ํ•˜๋Š” ์„œ๋น„์Šค์ธ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์˜์กด์„ฑ๊ณผ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
# WantedBy multi-user.target์€ ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ํ™œ์„ฑํ™” ๋œ ํ›„์— ์‹œ์ž‘๋˜์–ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
WantedBy=multi-user.target

systemctl ์ฃผ์š” ๋ช…๋ น์–ด

systemctl status [์„œ๋น„์Šค๋ช…]  # ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ
systemctl start [์„œ๋น„์Šค๋ช…]   # ์„œ๋น„์Šค ์‹œ์ž‘ํ•˜๊ธฐ
systemctl stop [์„œ๋น„์Šค๋ช…]    # ์„œ๋น„์Šค ์ค‘์ง€ํ•˜๊ธฐ
systemctl restart [์„œ๋น„์Šค๋ช…] # ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ํ•˜๊ธฐ
systemctl enable [์„œ๋น„์Šค๋ช…]  # ์„œ๋น„์Šค ํ™œ์„ฑํ™”ํ•˜๊ธฐ(์‹œ์Šคํ…œ ๋ถ€ํŒ…์‹œ์— ์‹œ์ž‘์ด ๋˜๋„๋ก)
systemctl disable [์„œ๋น„์Šค๋ช…] # ์„œ๋น„์Šค ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ(์‹œ์Šคํ…œ์ด ๋ถ€ํŒ…๋˜์–ด๋„ ์‹œ์ž‘๋˜์ง€ ์•Š๋„๋ก)

์„œ๋น„์Šค์˜ ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ

journalctl -u [์„œ๋น„์Šค ์ด๋ฆ„]
journalctl -u [์„œ๋น„์Šค ์ด๋ฆ„] -f # ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ(tail)

์„œ๋น„์Šค์˜ ๊ถŒํ•œ

systemctl๋กœ ์‹œ์ž‘๋œ ์„œ๋น„์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰์ด๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์ƒ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ User์™€ Group ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน ๊ถŒํ•œ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์„ค์ •์€ [์„œ๋น„์Šค๋ช…].service ํŒŒ์ผ ๋‚ด์— ์œ„์น˜ํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ /etc/systemd/system ๋˜๋Š” /lib/systemd/system ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์œ„์น˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

# ์„œ๋น„์Šค๊ฐ€ www-user ์‚ฌ์šฉ์ž์™€ www-group ๊ทธ๋ฃน์˜ ๊ถŒํ•œ์œผ๋กœ ์‹œ์ž‘๋˜๋„๋ก ์„ค์ •.
[Service]
User=www-user
Group=www-group
๋ฐ˜์‘ํ˜•