๋ณธ ๊ฐ์ด๋๋ Discourse ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์๋ง ํด๋น๋ฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์ Discourse๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ํ์ด์ง์ ๋ด์ฉ์ ์ฐธ์กฐํ์ธ์: Install Discourse in production with the official supported instructions
๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ์๋ฌธ ์๋ณธ์ ๋ค์ ํ์ด์ง์ ๋ด์ฉ์ ์ฐธ์กฐํ์ธ์: Set up a local Discourse Development Environment?
๋ณธ ๋ฌธ์๋ Ubuntu ํ๊ฒฝ์์์ ๊ฐ๋ฐ ์ค์ ์๋ง ํด๋น๋ฉ๋๋ค. Discourse๋ Ruby ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ Ruby ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ด Ubuntu์์ ๊ฐ์ฅ ๊ฐ๋จํฉ๋๋ค. ๋ํ Discourse ํ๋ก๋์ ํ๊ฒฝ ์คํ๋ ๊ณต์์ ์ผ๋ก Ubuntu ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค. ๋ฌผ๋ก ์ ํฌ ์ปค๋ฎค๋ํฐ๋ Docker ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ REHL ํ๊ฒฝ์์๋ ๋ฌธ์ ์์ด ์ด์๋๊ณ ์์ง๋ง, Discourse ๊ฐ๋ฐ์ ์ํ์ ๋ค๋ฉด Ubuntu ํ๊ฒฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Windows ์์คํ ์ ์ฌ์ฉ ์ค์ด์๋ผ๋ฉด WSL ํ๊ฒฝ์ ์ค์นํด์ผ ํฉ๋๋ค. WSL์ Windows์์ ์ ๊ณตํ๋ Ubuntu ๊ธฐ๋ฐ ํ๊ฒฝ์ผ๋ก, Windows์์ Linux ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ณธ ๊ธ์ Ubuntu ํ๊ฒฝ์ Ruby/Rails/Postgres/Redis ํ๊ฒฝ์ด ์์ง ์ค์น๋์ด ์์ง ์๋ค๊ณ ๊ฐ์ ํ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ์์ํฉ๋๋ค!
์ด ๊ฐ๋ฐ ๊ฐ์ด๋๋ Ubuntu ๊ฐ๋ฐ ํ๊ฒฝ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ๋ก ํ์ง๋ง, Debian ๊ธฐ๋ฐ์ ๋ชจ๋ Linux ๋ฐฐํฌํ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ณธ ๊ฐ๋ฐ ๊ฐ์ด๋๋ Ubuntu 18์์ ์ถ๊ฐ ๋จ๊ณ ์์ด ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ์๋ฃํ ์ ์์์ ๊ฒ์ฆํ์ต๋๋ค.
Ubuntu/Debian ๊ฐ๋ฐ ํ๊ฒฝ ์ฌ์ฉ์ ๋ฐ๋ผ ์ฐจ์ด๊ฐ ์์ ์ ์์ผ๋ฏ๋ก, Ubuntu/Debian์์ ๊ฐ๋ฐํ ๋ ์๋ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค:
Ubuntu 20.04 ๋ฐ ์ดํ ๋ฒ์ ์์ Discourse ํ ์คํธ ํ๊ฒฝ ์ค์น ๊ด๋ จ ์ ๋ณด
๊ธฐ๋ณธ์ ์ธ Ubuntu 20.04 ๋ฐ ์ดํ ๋ฒ์ ์๋ OpenSSL 3.0.2๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋ฉ๋๋ค. ์ด์ OpenSSL ๋ฒ์ ์์ ์ปดํ์ผํ์ฌ ์ ๋ฒ์ ์ ๋์ฒดํ ํ์๊ฐ ์์ ์ ์์ต๋๋ค(๊ณต์ ๊ถ์ฅ ๋ฒ์ ์ OpenSSL-1.1.1n). ๋ํ ์ค์น๋ Ruby ๋ฒ์ ์ ํ์ธํด์ผ ํ๋ฉฐ, ruby --version ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Ruby ๋ฒ์ ์ ํ์ธํ ์ ์์ต๋๋ค. ํ์ฌ Discourse๋ ์ฌ์ ํ Ruby 2 ๋ฒ์ ์ ์ฌ์ฉํ๋ฏ๋ก, Ruby 3.x ๋๋ ๊ทธ ์ดํ ๋ฒ์ ์ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด Ruby ๋ฒ์ ์ ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค. ๊ณต์์ ์ผ๋ก๋ Ruby ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ ์ ๋ฎ์ถ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ํ์ฌ Discourse ์คํ ํ๊ฒฝ์ ๋ํด ๊ณต์์ ์ผ๋ก ๊ฐ์ฅ ์ ํฉํ Ruby ๋ฒ์ ์ 2.7.6์ผ๋ก ํ๋จ๋ฉ๋๋ค. ๋ ๋ง์ ์ ๋ณด๋ ๋ค์ ํ์ด์ง์ ๋ด์ฉ์ ์ฐธ์กฐํ์ธ์: Notes about Installing Discourse on Ubuntu 20.04 - #2 by SaraDev
Ubuntu 20.04 ์ด์ ๋ฒ์ ์์ Discourse ํ ์คํธ ํ๊ฒฝ ์ค์น ๊ด๋ จ ์ ๋ณด
์๋ ๋ถ๋ถ์ @pfaffman์ด 22.05.16์ ์ถ๊ฐํ ๋ด์ฉ์ผ๋ก, ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ง๋ง ์ฌ์ฉ์์ ๋ฐ๋ผ ๋ฐ์ํ์ง ์์ ์๋ ์์ต๋๋ค.
์ฐธ๊ณ : ๊ด๋ จ ์ ๋ณด๋ ๋ค์ ํ์ด์ง์ ๋ด์ฉ์ ์ฐธ์กฐํ์ธ์: Failed to build ruby 2.7.5 on ubuntu 22.04 ยท rbenv/ruby-build ยท Discussion #1940 ยท GitHub
@pfaffman ์ถ๊ฐ ๋ด์ฉ ๋.
์ฐ๋ฆฌ์ ํ ์คํธ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด, Ubuntu 22 ๋ฒ์ ์์๋ ์ปดํ์ผ ์คํจ ๋๋ ํจํค์ง๋ฅผ ์ฐพ์ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ํ์ฌ๊น์ง ์ฐ๋ฆฌ๋ 20.04์์๋ง ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ์๋ฃํ์ต๋๋ค.
Discourse ์์กด์ฑ ์ค์น
์ผ๋ฐ ์ฌ์ฉ์๋ ์ฝ์์์ ๋ค์ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค: this script. ์ ๋ช ๋ น์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ Rails๋ฅผ ๋น ๋ฅด๊ฒ ์ค์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์คํํ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
์ ๋ช ๋ น์ ๋ก์ปฌ ์์คํ ์ ๋ค์ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค:
- Git
- rbenv
- ruby-build
- Ruby (stable)
- Rails
- PostgreSQL
- SQLite
- Redis
- Bundler
- MailHog
- ImageMagick
๋ก์ปฌ ์ด์์ฒด์ ์ ์ผ๋ถ ์ํํธ์จ์ด๊ฐ ์ด๋ฏธ ์ค์น๋์ด ์๊ฑฐ๋ ๋ชจ๋ ์ํํธ์จ์ด๋ฅผ ์ค์นํ์ง ์์ผ๋ ค๋ฉด script์ ๋ด์ฉ์ ์ฐธ์กฐํ์ฌ ํ์ฌ ์ค์นํ์ง ์์ผ๋ ค๋ ์ํํธ์จ์ด๋ฅผ ์ ํํ์ธ์. ์ ์ค์น ์คํฌ๋ฆฝํธ๋ Discourse ์คํ์ ํ์ํ ๋ชจ๋ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๋ฉฐ, ์ด ์ํํธ์จ์ด๋ค์ Discourse ์คํ์ ์ง์ํฉ๋๋ค.
๋ชจ๋ Discourse ์์กด์ฑ ์ค์น๊ฐ ์๋ฃ๋๋ฉด ์ด์ Discourse๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
์ ๊ทธ๋ฆผ์ Ubuntu์์ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๋ ํ๋ฉด์ ๋ณด์ฌ์ค๋๋ค. ์ํํธ์จ์ด ์ค์น ๊ณผ์ ์ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ๋ฉฐ, ์ฌ์ฉ ์ค์ธ ์์คํ ์ ๋ฐ๋ผ 5๋ถ ์ด์ ์์๋ ์ ์์ต๋๋ค.
Discourse ํด๋ก (clone)
Discourse๋ฅผ ~/discourse ํด๋์ ํด๋ก ํฉ๋๋ค.
git clone https://github.com/discourse/discourse.git ~/discourse
~๋ ํ์ฌ ํ ํด๋๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด๋ Discourse ํ๋ก๊ทธ๋จ์ด ํ ํด๋ ์๋์ ๋ณต์ฌ๋จ์ ์๋ฏธํฉ๋๋ค.
์ฐ๋ฆฌ๋ WSL ์๋ธ์์คํ ์ ์ฌ์ฉํ๋ฏ๋ก, ์ค์ ๋ก๋ ํ์ผ์ D ๋๋ผ์ด๋ธ์ ํด๋ก ํ์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ (Setup)
Ubuntu ์์คํ ์ฌ์ฉ์๋ช ๊ณผ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค:
sudo -u postgres createuser -s "$USER"
์ ๋ช ๋ น์ ์คํํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด:
createuser: error: could not connect to database template1: could not connect to server: No such file or directory
๋ค์ ํ์ด์ง์ ๋ด์ฉ์ ์ฐธ์กฐํ์ธ์: iSharkFly - ้ฃ้ฒจ
Discourse ์์
Discourse ํด๋ก ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค:
cd ~/discourse
ํ์ํ gems๋ฅผ ์ค์นํฉ๋๋ค.
source ~/.bashrc
bundle install
๋์์ ํ์ํ JS ์์กด์ฑ๋ ์ค์นํฉ๋๋ค.
yarn install
์ด ๋จ๊ณ๊น์ง ๋๋ฌํ๋ฉด ํ์ํ ๋ชจ๋ gems์ ์์กด์ฑ์ด ์ค์น๋์์ผ๋ฏ๋ก, ๋ค์ ๋ช ๋ น์ ์คํํด ๋ณด์ธ์:
bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
์คํ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ ์ ์ฅ์์ ๋ด์ฉ์ ์ฐธ์กฐํ์ธ์: iSharkFly - ้ฃ้ฒจ
๋ค์ ๋ช ๋ น์ ์คํํด ๋ณด์ธ์:
bundle exec rake autospec
ํ๋ก์ ํธ๋ ๋ชจ๋ ํ ์คํธ๋ฅผ ํต๊ณผํด์ผ ํฉ๋๋ค.
์ด ํ ์คํธ๋ ๋งค์ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉฐ, ์ํํ์ง ์์๋ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ช ์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค.
์๋ฒ๋ฅผ ์์ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค:
bundle exec rails server
์ ์ค์น ๋จ๊ณ๋ฅผ ์๋ฃํ๋ฉด http://localhost:3000์ ํตํด ๋ก์ปฌ์ ์ค์น๋ Discourse์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค.
Discourse 2.5+๋ถํฐ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ EmberCLI๊ฐ ํ์ ์ต์ ์ด ๋์์ต๋๋ค:
3000 ํฌํธ๋ฅผ ํตํด ์ง์ ์ธํฐํ์ด์ค์ ์ก์ธ์คํ๋ฉด ๋ค์ ํ๋กฌํํธ ํ๋ฉด์ด ํ์๋ฉ๋๋ค:
์ฝ์ ํฐ๋ฏธ๋์์ (
cd ~/discourse) ํด๋๋ก ์ด๋ํ ๋ค์ ๋ค์์ ์คํํฉ๋๋ค:
bin/ember-cli
http://localhost:4200 ์ฃผ์๋ฅผ ํตํด ๋ก์ปฌ Discourse ์ค์น๋ฅผ ํ์ธํ ์ ์์ด์ผ ํฉ๋๋ค.
์ด ๋ ์๋ฒ๋ ๋ชจ๋ ๋์์ ์์๋์ด์ผ ํ๋ค๋ ์ ์ ์ ์ํ์ธ์. ember-cli๋ 3000 ํฌํธ๋ก์ ์ก์ธ์ค๋ฅผ ์ํด ๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋ก์ด ๊ด๋ฆฌ์ ๊ณ์ ์์ฑ
๊ฐ๋ฐ ํ๊ฒฝ์ ๋ก๊ทธ์ธํ๊ธฐ ์ ์ ๊ด๋ฆฌ์ ๊ณ์ ์ ์์ฑํด์ผ ํฉ๋๋ค. ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ์์ฑํฉ๋๋ค:
RAILS_ENV=development bundle exec rake admin:create
๋ช ๋ น ํ๋กฌํํธ์ ์ง์์ ๋ฐ๋ผ ๊ด๋ฆฌ์ ๊ณ์ ์ ์์ฑํ์ธ์.
์ ๋ ฅํด์ผ ํ๋ ์ ๋ณด๋ ์ด๋ฉ์ผ ์ฃผ์์ ๋น๋ฐ๋ฒํธ์ ๋๋ค.
์ด๋ฉ์ผ ๊ตฌ์ฑ
MailHog๋ฅผ ์คํํฉ๋๋ค:
mailhog
์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์๋ฃํ๋ฉด Discourse ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ด ์๋ฃ๋ฉ๋๋ค. ์ด์ ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก Discourse์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
Discourse ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ์ ์ํ์ ๋ค๋ฉด ๋ค์ ํ์ด์ง์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์: Developing Discourse Plugins - Part 1 - Create a basic plugin


