๋ณธ ๋ฌธ์๋ discourse/docs/INSTALL-cloud.md at main ยท discourse/discourse ยท GitHub ํ์ด์ง์ ๋ด์ฉ์ ๋ฒ์ญํ ๊ฒ์ ๋๋ค.
๋ฒ์ญ ์๋ฌธ์ Discourse ไบๅนณๅฐๅฎ่ฃ - Discourse - iSharkFly ์ ๊ฒ์๋์์ต๋๋ค. ํ ๋ก ์ ์ฐธ์ฌํด ์ฃผ์ธ์.
ํด๋ผ์ฐ๋ ํ๋ซํผ ์ค์น
ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋ซํผ์์์ Discourse ์ค์น์๋ ๋ณดํต 30๋ถ์ด ์ฑ ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค. Rails๋ Linux ์ ธ์ ๋ํ ์ง์์ด ์ ํ ์์ด๋ ์ค์น๋ฅผ้กบๅฉๅฎๆํ ์ ์์ต๋๋ค. ์๋์์๋ DigitalOcean ์๋น์ค ์ ๊ณต์๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ๋ ์๋ฅผ ๋ค์์ง๋ง, ๋ชจ๋ ์ค์น ๋จ๊ณ๋ Docker์ ํธํ๋๋ ๋ชจ๋ ํด๋ผ์ฐ๋ ์ปดํจํ ํ๋ซํผ์์ ์ํํ ์ ์์ผ๋ฉฐ, ๋ก์ปฌ ์๋ฒ์์๋ ์ค์น๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
30๋ถ๋ ์๊ฐ์ด ์ ๋์๋์? Discourse ์ปค๋ฎค๋ํฐ์ ์ฐ๋ฝํ์ฌ ์ค์น๋ฅผ ๋์๋ฌ๋ผ๊ณ ์์ฒญํ ์ ์์ต๋๋ค. Discourse ์ปค๋ฎค๋ํฐ๋ ์ผํ์ฑ $150(๋ฏธ๊ตญ ๋ฌ๋ฌ)์ ๋น์ฉ์ ๋ถ๊ณผํฉ๋๋ค. ์ด ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ์๋น์ค๋ฅผ ๊ตฌ๋งคํ์ธ์ .
์์ ์ ์ค๋น ์ฌํญ
๋๋ฉ์ธ
Discourse๋ IP ์ฃผ์๋ก๋ ์๋ํ์ง ์์ต๋๋ค. ์ค์นํ๋ ค๋ฉด ๋๋ฉ์ธ ๋๋ ์๋ธ๋๋ฉ์ธ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด
example.com๋ฑ.
- ์ด๋ฏธ ๋๋ฉ์ธ์ ๋ณด์ ํ๊ณ ์๋ค๋ฉด,
discourse.example.com๋๋talk.example.com๋๋forum.example.com๊ณผ ๊ฐ์ ์๋ธ๋๋ฉ์ธ ์ค ํ๋๋ฅผ ์ ํํ์ฌ Discourse ์ธ์คํด์ค๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. - ๋๋ฉ์ธ์ด ์๋ค๋ฉด, NameCheap ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ํ๋ ๋๋ฉ์ธ์ ๊ฒ์ํ๊ฑฐ๋, Google์์ great domain name registrars๋ฅผ ๊ฒ์ํ์ฌ ๋ง์์ ๋๋ ๋๋ฉ์ธ ๋ฑ๋ก์ฌ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- DNS ์ฝ์์ ์ ๊ทผํ ์ ์์ด์ผ ํฉ๋๋ค. ๋๋ฉ์ธ์ ๊ตฌ๋งคํ ํ์๋ DNS ์ค์ ์ ์ ๊ทผํ์ฌ DNS๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ค์นํ๋ ค๋ Discourse ์น์ฌ์ดํธ์ ๋ํด DNS๋ฅผ ํตํด
A๋ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ์ด A ๋ ์ฝ๋๋ ์ค์นํ๋ ค๋ ๋๋ฉ์ธ์ ํน์ IP ์ฃผ์๋ก ๊ฐ๋ฆฌํค๋๋ก ํด์ผ ํฉ๋๋ค. ์ด IP ์ฃผ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ๊ตฌ๋งคํ ์๋ฒ์ IP ์ฃผ์์ ๋๋ค.
์ด๋ฉ์ผ
์ด๋ฉ์ผ ์์คํ ์ Discourse์ ์ฌ์ฉ์ ์์ฑ ๊ณผ์ ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. Discourse ์ค์น ์ ์ ์ด๋ฉ์ผ SMTP ์๋ฒ๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด, ์ค์นํ Discourse์ ์ ๊ทผํ๊ฑฐ๋ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค(์ฌ์ดํธ๊ฐ ๊นจ์ง ์ํ)!*
- ์ด๋ฏธ ์์ฒด SMTP ๋ฉ์ผ ์๋ฒ๊ฐ ์๋ค๋ฉด, ๊ธฐ์กด ๋ฉ์ผ ์๋ฒ ์ค์ ์ ๋ณด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฉ์ผ ์๋ฒ๊ฐ ์๋ค๋ฉด, Discourse์์ ๊ถ์ฅํ๋ ๋ฉ์ผ ์๋ฒ๋ฅผ ๋ฐฉ๋ฌธํ์ธ์.
- ์ด๋ฉ์ผ์ด ์ ์์ ์ผ๋ก ์ ๋ฌ๋๋๋ก ํ๋ ค๋ฉด DNS์ ์ ํจํ SPF ๋ฐ DKIM ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ฉ์ผ ์๋น์ค ์ ๊ณต์ ์ฒด์ ๋ฌธ์์์ ์ด ์ ๋ณด ์ค์ ๋ฐฉ๋ฒ์ ํ์ธํ์ธ์.
์ค์ ์ฌ์ฉ ๊ฒฝํ์ ๋ฐํ์ผ๋ก, Discourse ์ค์น์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๋ฉ์ธ๊ณผ ๋ฉ์ผ ์๋ฒ ์ค์ ์ด ํ์์ ๋๋ค. ์ค๊ตญ ๋ณธํ ์ ๊ฒฝ์ฐ, ์๋ฆฌ๋ฐ๋ฐ ํด๋ผ์ฐ๋ ๋๋ ํ ์ผํธ ํด๋ผ์ฐ๋์์ ์ ๊ณตํ๋ ๊ธฐ์ ์ฉ ๋ฉ์ผํจ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํด์ธ ๋ฉ์ผ ์๋ฒ, ์๋ฅผ ๋ค์ด AWS SES๋ MailGun๊ณผ ๊ฐ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๊ตญ์ ์ ์ฉ์นด๋๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์ด ๋จ๊ณ๋ ํ์์ด๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด Discourse ์ค์น๋ฅผ ์๋ฃํ ์ ์์ต๋๋ค.
์ค์น
์ ํด๋ผ์ฐ๋ ์๋ฒ ์์ฑ
์๋ก์ด ํด๋ผ์ฐ๋ ์๋ฒ, ์๋ฅผ ๋ค์ด DigitalOcean์ ์์ฑํ์ธ์. ๋ฌผ๋ก ๋ค๋ฅธ ํ๋ซํผ์์ ์ ๊ณตํ๋ ์๋ฒ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์ค๊ตญ ๋ณธํ ๋ด์ ์์นํ ์๋ฒ๋ฅผ ์ ํํ๋ค๋ฉด ๋คํธ์ํฌ ๋ฌธ์ ๋ฅผ ๊ฒช์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด ๋ฒ์ญ๋ณธ์๋ ๋คํธ์ํฌ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์น์ ์ด ์ถ๊ฐ๋ก ํฌํจ๋์ด ์์ต๋๋ค.
- ๊ธฐ๋ณธ ๊ตฌ์ฑ์ธ ํ์ฌ ๋ฒ์ ์ LTS Ubuntu ์ด์ ์ฒด์ ๊ฐ ์ ์๋ํฉ๋๋ค. ์ต์ํ 64๋นํธ Linux ์ด์ ์ฒด์ ๊ฐ ํ์ํ๋ฉฐ, ์ด ์ด์ ์ฒด์ ์ ์ปค๋์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์ด ์์ด์ผ ํฉ๋๋ค.
- ๊ธฐ๋ณธ ๊ตฌ์ฑ์ธ 1 GB์ ๋ฉ๋ชจ๋ฆฌ๋ ์์ ๊ท๋ชจ์ Discourse ์ปค๋ฎค๋ํฐ์์๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์๋ํฉ๋๋ค. ํ์ง๋ง ๋๊ท๋ชจ ์ปค๋ฎค๋ํฐ๋ฅผ ์ํด 2 GB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
- ๊ธฐ๋ณธ ๊ตฌ์ฑ์ธ ๋ด์ ๋ฐ์ดํฐ ์ผํฐ๋ ๋ถ๋ฏธ์ ์ ๋ฝ ๋ชจ๋์๊ฒ ์ข์ ์ง๋ฆฌ์ ์์ญ์ ๋๋ค. Discourse ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ ์๋ ๊ฒฝ์ฐ, ์กฐ๊ธ ๋ ๊ฐ๊น์ด ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- DigitalOcean์์ Droplet์ ์์ฑํ๋ ค๋ฉด ๋๋ฉ์ธ
discourse.example.com์ ์ ๋ ฅํ์ธ์ (Droplet์ DigitalOcean์ด ์ ์ํ ์๋ฒ ์ด๋ฆ์ ๋๋ค). ๋ฌผ๋ก ์์ฒด ๋๋ฉ์ธ์ ๊ตฌ๋งคํ์ฌ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Discourse ์ค์น์๋ ์ค์ ๋๋ฉ์ธ์ด ํ์ํ๋ฉฐ IP ์ฃผ์๋ก๋ ์ค์นํ ์ ์์ผ๋ฏ๋ก, ๋จผ์ ๋๋ฉ์ธ์ ๊ตฌ๋งคํ๊ฑฐ๋ ๊ธฐ์กด ๋๋ฉ์ธ์ ์๋ธ๋๋ฉ์ธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์๋ก์ด Droplet์ ์์ฑํ๋ ๊ณผ์ ์ DigitalOcean์์ ์๋ฒ๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋ซํผ์์ VPS๋ ์๋ฒ๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ๋ ๋์ผํฉ๋๋ค. ์์ฑ์ด ์๋ฃ๋๋ฉด Root ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๊ฐ ํฌํจ๋ ์ด๋ฉ์ผ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์๋ฒ ์ ๊ทผ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด SSH ํค ์ฌ์ฉ ์ค์ ์ ๊ถ์ฅํฉ๋๋ค.
ํด๋ผ์ฐ๋ ์๋ฒ์ ์ ๊ทผํ๊ธฐ
IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ SSH๋ฅผ ํตํด ์์ฑํ ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ ์ ๊ทผํ๊ฑฐ๋, Windows ํ๋ซํผ์ ๊ฒฝ์ฐ Putty๋ฅผ ์ค์นํ ํ ์๋ ๋ช ๋ น์ ์คํํ์ฌ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค:
ssh root@192.168.1.1
SSH ํค๋ฅผ ์ค์ ํ์ง ์์๋ค๋ฉด, DigitalOcean์์ ๋ณด๋ธ ์ด๋ฉ์ผ์ ํฌํจ๋ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธํ๊ฑฐ๋, ๋ก์ปฌ SSH ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
Docker / Git ์ค์น (์ ํ ์ฌํญ)
sudo apt install docker.io
sudo apt install git
์์ฒด Docker ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์ด์ ์๋ก ์ค์ ํ ์๋ฒ์ ์ค์นํ ์ ์์ต๋๋ค. ์๋ฒ์ Docker๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ์์ง ์์ผ๋ฉด discourse-setup์ด get.docker.com์์ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ์ฌ ์ค์นํฉ๋๋ค.
Discourse ์ค์น
๊ณต์ Discourse Docker ์ค์น ์ ์ฅ์์์ ์ฝ๋๋ฅผ ๋ก์ปฌ ์ปดํจํฐ์ /var/discourse ๋๋ ํฐ๋ฆฌ๋ก ํด๋ก ํฉ๋๋ค.
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
์ ๋ช ๋ น์ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. Discourse ์ค์น ๊ณผ์ ์๋ root ๊ถํ์ด ํ์ํฉ๋๋ค.
Docker ๋ฏธ๋ฌ ์ถ๊ฐ (์ค๊ตญ ๋ณธํ ์๋ฒ ์ ์ฉ)
์๋ฒ๊ฐ ์ค๊ตญ ๋ณธํ ์ ์์นํด ์๋ค๋ฉด, ์๋ ๋จ๊ณ์์ docker ๋จ๊ณ์์ ๋งํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. Docker ๋ฏธ๋ฌ๋ฅผ ์ถ๊ฐํด ๋ณด์ธ์.
ํ
์ผํธ ํด๋ผ์ฐ๋๋ฅผ ์๋ก ๋ค๋ฉด, ์ข์ํ๋ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ linux์ /etc/docker/daemon.json์ ํธ์งํ๊ณ ์๋ ๋ด์ฉ์ ์ถ๊ฐํ์ธ์. https://mirror.ccs.tencentyun.com์ ํด๋ผ์ฐ๋ ์๋ฒ ์ ๊ณต์
์ฒด๊ฐ ์ ๊ณตํ๋ docker ๋ฏธ๋ฌ URL๋ก ๋ณ๊ฒฝํด ๋ณผ ์ ์์ต๋๋ค:
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
docker ๋ฏธ๋ฌ๋ฅผ ์ถ๊ฐํ ํ, sudo systemctl restart docker๋ฅผ ์ฌ์ฉํ์ฌ docker ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์์ํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ์ธ์.
Discourse ์ค์ ํธ์ง
์๋ ๋ช ๋ น์ ์คํํ์ฌ ์ค์ ๋๊ตฌ๋ฅผ ์คํํฉ๋๋ค.
./discourse-setup
์๋ ํ๋กฌํํธ์ ๋ฐ๋ผ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค:
Hostname for your Discourse? [discourse.example.com]:
Email address for admin account(s)? [me@example.com,you@example.com]:
SMTP server address? [smtp.example.com]:
SMTP port? [587]:
SMTP user name? [user@example.com]:
SMTP password? [pa$word]:
Let's Encrypt account email? (ENTER to skip) [me@example.com]:
์ ์
๋ ฅ ๋ฐ์ดํฐ๋ Discourse ์ธ์คํด์ค๋ฅผ ์ํ app.yml ํ์ผ์ ์์ฑํฉ๋๋ค. ์ด ํ์ผ์ ์ค์น ์งํ ํ Discourse ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ ์ฒด ์ค์น ์์ ๊ณผ์ ์ Discourse ๊ตฌ์ฑ์ 2~8๋ถ์ด ์์๋ ์ ์์ต๋๋ค. ์ค์น ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ค์น ์๋ฃ ํ์๋ ๊ตฌ์ฑ์ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ, ./discourse-setup ๋ช
๋ น์ ๋ค์ ์คํํ ์ ์์ต๋๋ค(์ด ๋ช
๋ น์ ๊ธฐ์กด app.yml ํ์ผ์ ๋ค์ ๋ก๋ํฉ๋๋ค). ๋๋ /containers/app.yml ํ์ผ์ ๋ด์ฉ์ ์ง์ ์๋์ผ๋ก ํธ์งํ ํ ./launcher rebuild app๋ฅผ ๋ค์ ์คํํ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
์ค๊ตญ ๋คํธ์ํฌ ํ๊ฒฝ ์ต์ ํ
ํด๋ผ์ฐ๋ ์๋ฒ๊ฐ ์ค๊ตญ ๋ณธํ ์ ์์นํด ์๋ค๋ฉด, ./discourse-setup ๋๋ ./launcher rebuild app๋ฅผ ์คํํ๋ ๊ณผ์ ์์ ๋คํธ์ํฌ ๋ฌธ์ ๋ฅผ ๊ฒช์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. Discourse๋ docker๋ฅผ ์ ์ธํ ๋ฏธ๋ฌ ์๋น์ค๋ฅผ ์ด๋ฏธ ์์ฑํด ๋์์ผ๋ฉฐ, containers/app.yml์ ์ฌ๊ธฐ ํ ์ค์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.china.template.yml" # ์ด ์ค์ ์ถ๊ฐํ์ฌ npm, rubygems ๋ฑ ํจํค์ง ๋งค๋์ ์ ๋ฏธ๋ฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค
์ด๋ ๊ฒ ํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.
Discourse ์์
์ด๊ธฐ ์ค์น ๊ตฌ์ฑ์ด ์๋ฃ๋๋ฉด, ๊ตฌ์ฑํ ๋๋ฉ์ธ discourse.example.com์ ํตํด ๋ธ๋ผ์ฐ์ ์์ Discourse ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์์ด์ผ ํฉ๋๋ค.
์ค๊ตญ ๋ณธํ ์ ์์นํ ์๋ฒ์ ๊ฒฝ์ฐ, ํด๋ผ์ฐ๋ ์๋ฒ ์ ๊ณต์ ์ฒด์ ์๋ด์ ๋ฐ๋ผ ๋จผ์ ํต์ง(ๅคๆก)๋ฅผ ์งํํด์ผ ๋ค์ ๋จ๊ณ๋ฅผ ์งํํ ์ ์์ ์ ์์ต๋๋ค.
์ ๊ด๋ฆฌ์ ๊ณ์ ๋ฑ๋ก
์์ ๊ตฌ์ฑ ๊ณผ์ ์์ ์ ๋ ฅํ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ฑ๋กํฉ๋๋ค.
(๊ด๋ฆฌ์ ๊ณ์ (Admin)์ ๋ฑ๋กํ ์ ์๋ค๋ฉด, ๊ฒฝ๋ก /var/discourse/shared/standalone/log/rails/production.log๋ฅผ ํตํด ๋ก๊ทธ๋ฅผ ํ์ธํ๊ฑฐ๋ ์ด๋ฉ์ผ ๋ฌธ์ ์ ๊ฒ ๋ชฉ๋ก์ ๋ฐฉ๋ฌธํ์ธ์.)
๊ด๋ฆฌ์ ๊ณ์ ๋ฑ๋ก์ ์๋ฃํ๋ฉด, ์ค์ ๋ง๋ฒ์ฌ๊ฐ ์์๋์ด Discourse ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ๋๋ก ์๋ดํฉ๋๋ค.
๋ชจ๋ ์ค์ ๋ง๋ฒ์ฌ๋ฅผ ์๋ฃํ๋ฉด, ์คํํ ํ ํฝ(Staff topics)๊ณผ READ ME FIRST: Admin Quick Start Guide๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ ๋ง๋ฒ์ฌ์๋ ํ์ ๊ตฌ์ฑ์ ๋ํ ๊ถ์ฅ ์ฌํญ๊ณผ Discourse ์ค์น ์ธ์คํด์ค๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ค์น ํ ์ ์ง ๊ด๋ฆฌ
- ์ด์ ์ฒด์ ์ ๋ณด์ ์๋ ์
๋ฐ์ดํธ๋ฅผ ์ผ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. Ubuntu์์๋
dpkg-reconfigure -plow unattended-upgrades๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. CentOS/RHEL์์๋yum-cronํจํค์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. - SSH ํค ๋์ ๋น๋ฐ๋ฒํธ๋ก ์ด์ ์ฒด์ ์ ๋ก๊ทธ์ธํ๋ ๊ฒฝ์ฐ, ๊ฐ๋ ฅํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ๋์ง ํ์ธํ์ธ์. Ubuntu์์๋
apt-get install libpam-cracklibํจํค์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค.fail2ban์ฌ์ฉ์ ๊ถ์ฅํ๋ฉฐ, ์ด๋ 3ํ ๋ก๊ทธ์ธ ์คํจ ์ IP ์ฃผ์๋ฅผ 10๋ถ ๋์ ์ฐจ๋จํฉ๋๋ค.- Ubuntu:
apt-get install fail2ban - CentOS/RHEL:
sudo yum install fail2ban(EPEL ํ์)
- Ubuntu:
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฉํ๋ฒฝ์ ์ค์นํ๋ ค๋ฉด, Ubuntu์ ๊ฒฝ์ฐ ufw ํ์ฑํ ๋๋ CentOS/RHEL 7 ๋ฐ ์ดํ ๋ฒ์ ์ ๊ฒฝ์ฐ
firewalld๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Discourse์ ์๋ก์ด ๋ฒ์ ์ด ์
๋ฐ์ดํธ๋๋ฉด, ์ด๋ฉ์ผ ์ฃผ์๋ก ์
๋ฐ์ดํธ ์๋ฆผ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๋ชจ๋ ๋ณด์ ๋ฌธ์ ๊ฐ ์์ ๋๋๋ก Discourse ์ธ์คํด์ค๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํด ์ฃผ์ธ์. Discourse์ ์๋ก์ด ๋ฒ์ ์ด ์ถ์๋๋ฉด ์ด๋ฉ์ผ ์๋ฆผ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ต์ ๊ธฐ๋ฅ๊ณผ ๋ณด์ ์์ ์ฌํญ์ ๋ฐ๊ธฐ ์ํด ์ต์ ์ํ๋ฅผ ์ ์งํด ์ฃผ์ธ์. Discourse๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ ค๋ฉด, ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด /admin/upgrade์ ์ ๊ทผํ ํ ์
๋ฐ์ดํธ ๋ฒํผ์ ํด๋ฆญํ์ธ์.
/var/discourse ๋๋ ํฐ๋ฆฌ์ launcher ๋ช
๋ น์ ์์คํ
์์ค์ ์ ์ง ๊ด๋ฆฌ๋ฅผ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค:
Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commands:
start: Start/initialize a container (์ปจํ
์ด๋ ์์/์ด๊ธฐํ)
stop: Stop a running container (์คํ ์ค์ธ ์ปจํ
์ด๋ ์ค์ง)
restart: Restart a container (์ปจํ
์ด๋ ์ฌ์์)
destroy: Stop and remove a container (์ปจํ
์ด๋ ์ค์ง ๋ฐ ์ญ์ )
enter: Use nsenter to get a shell into a container (nsenter๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋ ๋ด๋ถ ์
ธ์ ์ ๊ทผ)
logs: View the Docker logs for a container (์ปจํ
์ด๋์ Docker ๋ก๊ทธ ๋ณด๊ธฐ)
bootstrap: Bootstrap a container for the config based on a template (ํ
ํ๋ฆฟ ๊ธฐ๋ฐ ๊ตฌ์ฑ์ผ๋ก ์ปจํ
์ด๋ ๋ถํธ์คํธ๋ฉ)
rebuild: Rebuild a container (destroy old, bootstrap, start new) (์ปจํ
์ด๋ ์ฌ๊ตฌ์ถ: ๊ธฐ์กด ์ปจํ
์ด๋ ์ญ์ , ์ด๊ธฐํ, ์ ์ปจํ
์ด๋ ์์)
cleanup: Remove all containers that have stopped for > 24 hours (24์๊ฐ ์ด์ ์ค์ง๋ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์ )
Options:
--skip-prereqs Don't check launcher prerequisites (๋ฐ์ฒ ์ฌ์ ์๊ตฌ ์ฌํญ ๊ฒ์ฌ ๊ฑด๋๋ฐ๊ธฐ)
--docker-args Extra arguments to pass when running docker (docker ์คํ ์ ์ ๋ฌํ ์ถ๊ฐ ์ธ์)





