๐Ÿ‡จ๐Ÿ‡ณ Ubuntu์— Discourse ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์น˜ํ•˜๊ธฐ

:warning: ๋ณธ ๊ฐ€์ด๋“œ๋Š” Discourse ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— Discourse๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”: Install Discourse in production with the official supported instructions

:information_source: ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์˜ ์˜๋ฌธ ์›๋ณธ์€ ๋‹ค์Œ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”: 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์—์„œ ์ถ”๊ฐ€ ๋‹จ๊ณ„ ์—†์ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Œ์„ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.

:exclamation: 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)

์œ„ ๋ช…๋ น์€ ๋กœ์ปฌ ์‹œ์Šคํ…œ์— ๋‹ค์Œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

๋กœ์ปฌ ์šด์˜์ฒด์ œ์— ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด 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 ์„ค์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

:warning: ์ด ๋‘ ์„œ๋ฒ„๋Š” ๋ชจ๋‘ ๋™์‹œ์— ์‹œ์ž‘๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. 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


2๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š”, ubuntu ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ์–ด๋–ค ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฑด์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ง์ ‘ ์ฐพ์œผ์‹ค ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ $USER๋ฅผ ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์žฅ์€ ์ด ๋ช…๋ น์–ด๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

๋„ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋œป์ด ๋งž์Šต๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

๋„ค, ์ธ๋‚ด์‹ฌ ์žˆ๋Š” ๋‹ต๋ณ€์— ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ค‘๋ฌธ์„ ๋ฒˆ์—ญํ•ด ์ฃผ์…จ๋„ค์š”. ์ •๋ง ๋งˆ์Œ์— ๋“ค์–ด์„œ ํŠน๋ณ„ํžˆ ์นญ์ฐฌํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.