NixOS๋ ๋ค๋ฅธ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ๊ณผ ๊ทผ๋ณธ์ ์ผ๋ก ์ ๊ทผ ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค. ๋๋ถ๋ถ์ ๋ฐฐํฌํ์ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ์คํํ๋ฉฐ ์์คํ ์ โ๋ช ๋ นํ(imperative)โ์ผ๋ก ๊ตฌ์ฑํ์ง๋ง, NixOS๋ ํ๋์ ์ค์ ํ์ผ์ ์ํ๋ ์์คํ ์ํ๋ฅผ โ์ ์ธ(declare)โํ๋ฉด ๊ทธ ์ํ๋ฅผ ๊ทธ๋๋ก ๋ง๋ค์ด์ฃผ๋ โ์ ์ธํ(declarative)โ ๋ฐฉ์์ ์ทจํฉ๋๋ค.
๋ช ๋ นํ๊ณผ ์ ์ธํ์ ์ฐจ์ด
์ผ๋ฐ์ ์ธ ๋ฐฐํฌํ์์ ์น ์๋ฒ๋ฅผ ์ค์ ํ๋ค๊ณ ํ๋ฉด ์ด๋ฐ ์์๋ฅผ ๊ฑฐ์นฉ๋๋ค.
apt install nginx๋ก ํจํค์ง ์ค์น- ์ค์ ํ์ผ์ ์ง์ ํธ์ง
- ์๋น์ค ํ์ฑํ ๋ฐ ์์
๋ฌธ์ ๋ ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ์์คํ ์ด โ์ง๊ธ๊น์ง ์คํํ ๋ช ๋ น์ด์ ๋์ ๊ฒฐ๊ณผโ๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค๋ ์ ์ ๋๋ค. ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ์ปดํจํฐ์์ ์ฌํํ๋ ค๋ฉด ์คํํ๋ ๋ชจ๋ ๋ช ๋ น์ ์ ํํ ๊ธฐ์ตํ๊ณ ์์๋๋ก ๋ค์ ์คํํด์ผ ํฉ๋๋ค.
NixOS์์๋ /etc/nixos/configuration.nix ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ ์ํ๋ฅผ ์ ์ต๋๋ค.
services.nginx = {
enable = true;
virtualHosts."example.com" = {
root = "/var/www/example";
};
};
๊ทธ๋ฆฌ๊ณ nixos-rebuild switch ๋ช
๋ น ํ ๋ฒ์ด๋ฉด, Nix๊ฐ ์ด ์ค์ ์ ํ์ํ ๋ชจ๋ ๊ฒ(ํจํค์ง ์ค์น, ์ค์ ํ์ผ ์์ฑ, ์๋น์ค ํ์ฑํ)์ ์์์ ๊ณ์ฐํด ์์คํ
์ ์ ์ฉํฉ๋๋ค. ์ด ์ค์ ํ์ผ ํ๋๋ง ์์ผ๋ฉด ๋ค๋ฅธ ์ปดํจํฐ์์๋ ์์ ํ ๋์ผํ ์์คํ
์ ๊ทธ๋๋ก ์ฌํํ ์ ์์ต๋๋ค.
Nix ํจํค์ง ๋งค๋์ ์ ํต์ฌ: ๊ฒฉ๋ฆฌ์ ์ฌํ์ฑ
Nix ํจํค์ง ๋งค๋์ ๋ ๋ชจ๋ ํจํค์ง๋ฅผ /nix/store/ํด์๊ฐ-ํจํค์ง์ด๋ฆ ํํ์ ๊ณ ์ ํ ๊ฒฝ๋ก์ ์ ์ฅํฉ๋๋ค. ์ฌ๊ธฐ์ ํด์๊ฐ์ ํจํค์ง์ ์์ค, ๋ฒ์ , ๋น๋ ์ต์
, ์์กด์ฑ์ ๋ชจ๋ ํฌํจํด ๊ณ์ฐ๋๊ธฐ ๋๋ฌธ์, ๊ฐ์ ์ํํธ์จ์ด๋ผ๋ ๋น๋ ์กฐ๊ฑด์ด ๋ค๋ฅด๋ฉด ์์ ํ ๋ค๋ฅธ ๊ฒฝ๋ก์ ๋ณ๋๋ก ์ ์ฅ๋ฉ๋๋ค.
์ด ๊ตฌ์กฐ ๋๋ถ์ ์ป๋ ์ด์ ์ด ํฝ๋๋ค.
- ๋ฒ์ ์ถฉ๋์ด ์์: ๊ฐ์ ํจํค์ง์ ๋ค๋ฅธ ๋ฒ์ ์ด ๋์์ ์์คํ ์ ์กด์ฌํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ A๋ Python 3.9๋ฅผ, ํ๋ก์ ํธ B๋ Python 3.12๋ฅผ ์ฐ๋๋ผ๋ ์๋ก ์ ํ ๊ฐ์ญํ์ง ์์ต๋๋ค.
- ์์ ํ ๋กค๋ฐฑ: ์์คํ
์ ์
๋ฐ์ดํธํด๋ ์ด์ ์ค์ ์ผ๋ก ๋ง๋ค์ด์ง
/nix/store๊ฒฝ๋ก๋ ๊ทธ๋๋ก ๋จ์ ์์ด์, ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ด์ ์ธ๋(generation)๋ก ์ฆ์ ๋ถํ ํ ์ ์์ต๋๋ค. - ์๋ฒฝํ ์ฌํ์ฑ: ๊ฐ์
configuration.nixํ์ผ์ด๋ผ๋ฉด ์ด๋ค ์ปดํจํฐ์์ ๋น๋ํ๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๊ฒ์ ๋ชฉํ๋ก ์ค๊ณ๋์์ต๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ์์์ ํ์ฉ: nix-shell
NixOS์ ์ง๊ฐ๋ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ์์ ๋์ฑ ๋๋๋ฌ์ง๋๋ค. ํ๋ก์ ํธ ๋ฃจํธ์ shell.nix ํ์ผ์ ๋ง๋ค์ด ํ์ํ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ๋ช
์ํด๋๋ฉด, nix-shell ๋ช
๋ น ํ ๋ฒ์ผ๋ก ํด๋น ํ๋ก์ ํธ์ ํ์ํ ์ ํํ ๋ฒ์ ์ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๊ทธ ์๋ฆฌ์์ ๊ตฌ์ฑ๋ฉ๋๋ค. ํ์ ์ ์ฒด๊ฐ ์์ ํ ๋์ผํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ณต์ ํ ์ ์๋ค๋ ๋ป์ด๊ณ , โ๋ด ์ปดํจํฐ์์๋ ๋๋๋ฐโ ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ์ค์ฌ์ค๋๋ค.
์ง์ ์ฅ๋ฒฝ: Nix ์ธ์ด
NixOS๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ๊ฐ์ฅ ํฐ ์ฅ๋ฒฝ์ Nix๋ผ๋ ํจ์ํ ์ค์ ์ธ์ด ์์ฒด์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ ธ ์คํฌ๋ฆฝํธ๋ YAML๊ณผ๋ ๋ฌธ๋ฒ์ด ๋ง์ด ๋ฌ๋ผ์, ์ฒ์์๋ ๊ฐ๋จํ ์ค์ ์ ์์ฑํ๋ ๋ฐ๋ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆฝ๋๋ค. ํ์ง๋ง ๊ณต์ ๋งค๋ด์ผ๊ณผ ์ปค๋ฎค๋ํฐ๊ฐ ๋ง๋ ํ์ต ์๋ฃ(Nix Pills ๋ฑ)๊ฐ ์ ์ ๋ฆฌ๋์ด ์์ด์, ์๊ฐ์ ํฌ์ํ ์์ง๋ง ์๋ค๋ฉด ์ถฉ๋ถํ ๊ทน๋ณต ๊ฐ๋ฅํ ์์ค์ ๋๋ค.
์ด๋ค ์ฌ๋์๊ฒ ์ด์ธ๋ฆด๊น
- ์ฌ๋ฌ ํ๋ก์ ํธ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์๋ฒฝํ๊ฒ ๊ฒฉ๋ฆฌํ๊ณ ์ถ์ ๊ฐ๋ฐ์
- ์์คํ ์ค์ ์ ํ ์คํธ ํ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (Git)์ ์ฌ๋ ค ํ๊ณผ ๊ณต์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ์ฌ๋ฌ ๋์ ์๋ฒ๋ ์ปดํจํฐ์ ๋์ผํ ํ๊ฒฝ์ ์ ํํ ์ฌํํด์ผ ํ๋ ์ธํ๋ผ ์์ง๋์ด
๋ฐ๋๋ก GUI ์์ฃผ์ ์ค์ ๊ณผ ์ฆํฅ์ ์ธ ์์คํ ์ปค์คํฐ๋ง์ด์ง์ ์ ํธํ๋ค๋ฉด NixOS์ ๋ฐฉ์์ด ์คํ๋ ค ๋ถํธํ๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค. ํ์ง๋ง โ์์คํ ์ํ๋ฅผ ์ฝ๋๋ก ๊ด๋ฆฌํ๋คโ๋ ๊ฐ๋ ์์ฒด๋, ํ ๋ฒ ์ตํ๊ณ ๋๋ฉด ๋ค๋ฅธ ๋ฐฐํฌํ์ผ๋ก ๋์๊ฐ๋๋ผ๋ ์ธํ๋ผ๋ฅผ ๋ํ๋ ์ฌ๊ณ ๋ฐฉ์์ ์ค๋ ๋จ๋ ๊ฒฝํ์ด ๋ ๊ฒ์ ๋๋ค.
๋๊ธ
์ฒซ ๋ฒ์งธ ๋๊ธ์ ๋จ๊ฒจ๋ณด์ธ์!
