1. redis install
$> sudo yum install -y epel-release
$> sudo rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$> sudo yum --enablerepo=remi update remi-release
$> sudo systemctl start redis.service
$> sudo systemctl enable redis.service
$> sudo systemctl status redis.service
status 실행 후
● redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
└─limit.conf
Active: active (running) since Thu 2016-06-30 16:31:27 KST; 1 weeks 3 days ago
위처럼 active 상태가 나타나면 정상 동작 중이다.
2. postgresql 설치
$> sudo yum install -y postgresql-server postgresql-contrib postgresql-libs postgresql-devel
$> sudo postgresql-setup initdb
$> sudo systemctl start postgresql
$> sudo systemctl enable postgresql
$> sudo systemctl status postgresql
postresql 도 위의 redis와 마찬가지로 active 상태가 나오면 정상동작 중이다.
3. rvm install for multi users
루비 설치가 필요하다. 상세 내용은 예전 포스팅을 참조한다.
http://weeppp.com/?p=93
$> sudo gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$> sudo curl -sSL https://get.rvm.io | sudo bash -s stable
rvm 그룹에 자신의 user id를 추가한다.
$> sudo vi /etc/group
...
rvm:x:505:user,user2,user3
logout 후 재접속 한다. 환경 설정 리로드를 위함
# restart
$> type rvm | head -n 1
rvm is a function
위의 내용이 출력되면 정상 설치
$> rvm install 2.3.1
$> rvm use 2.3.1@newgemset --create --default
$> gem update
$> gem install bundler
4. Node install
$> curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
# exit the terminal and open it again
logout 후에 다시 재접속한다.
$> nvm install 6.2.0
$> nvm alias default 6.2.0
$> npm install -g svgo phantomjs-prebuilt
5. discourse install
하단 링크 참조
https://github.com/discourse/discourse/blob/master/docs/DEVELOPER-ADVANCED.md
필요한 라이브러리들 설치
$> sudo yum install -y expect git-core ImageMagick* advancecomp gifsicle jhead jpegoptim optipng pngcrush pngquant
db 설정
여기서는 development, production database를 모두 만든다.
하단 ‘password’ 부분에 원하는 암호를 입력한다.
$> whoami > /tmp/username
$> sudo su postgres
$> createuser --createdb --superuser -Upostgres $(cat /tmp/username)
$> psql -c "ALTER USER $(cat /tmp/username) WITH PASSWORD 'password';"
$> psql -c "create database discourse_development owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
$> psql -c "create database discourse_test owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
$> psql -c "create database discourse owner $(cat /tmp/username) encoding 'UTF8' TEMPLATE template0;"
$> psql -d discourse_development -c "CREATE EXTENSION hstore;"
$> psql -d discourse_development -c "CREATE EXTENSION pg_trgm;"
$> psql -d discourse -c "CREATE EXTENSION hstore;"
$> psql -d discourse -c "CREATE EXTENSION pg_trgm;"
$> exit
discourse 설치
$> git clone https://github.com/discourse/discourse.git ~/discourse
$> cd ~/discourse
$> bundle install
$> bundle exec rake db:create db:migrate db:test:prepare
개발 모드로 실행 확인
$> bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml
$> thin start
이제 배포판을 설치해보려고 한다.
실제 이 포스팅은 production 모드 설치를 위해 쓰고 있는 것이므로 지금부터가 진짜다;;
설정 파일 생성
$> cd $(discourse_home)/config
$> cp discourse_defaults.conf discourse.conf
설정파일 수정
$> vi discourse.conf
# username accessing database
db_username = user_id
# password used to access the db
db_password = password
...
# hostname running the forum
hostname = "weeppp.com"
...
# enable if you really need to serve assets in prd
serve_static_assets = true
sidekiq 설정
$> vi sidekiq.yml
---
:pidfile: tmp/pids/sidekiq.pid
staging:
:concurrency: 10
production:
:concurrency: 20
development:
:concurrency: 10
:queues:
- [critical,4]
- [default, 2]
- [low]
production mode db생성
$> cd ~/discourse
$> RAILS_ENV=production bundle exec rake db:create db:migrate db:test:prepare
nil:class 에러가 나오던데 별 문제는 아니었던 것 같다.
관련 포스트가 meta.discourse.org 에 있었던 것 같으니 찾아보길 바란다.
sidekiq production mode 실행
$> bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production
관리자 테스트 계정 생성
$> cd ~/discourse
$> cp db/api_test_seeds.rb db/seeds.rb
$> RAILS_ENV=production bundle exec rake db:seed
$> RAILS_ENV=production rails c
> u = User.last
> u.activate
> u.save
> quit
80포트로 실행하기 위해서는 root 권한이 필요한데 이때 postgresql 인증 문제가 발생한다.
postgresql 인증설정 변경이 필요하다. 하단 링크 참조
http://stackoverflow.com/questions/18664074/getting-error-peer-authentication-failed-for-user-postgres-when-trying-to-ge
postgresql 설정 변경
$> sudo /var/lib/pgsql/data/pg_hba.conf
local all postgres peer
Should be
local all postgres md5
$> sudo systemctl restart postgresql
에셋 빌드
$> RAILS_ENV=production bundle exec rake assets:precompile
thin 서버 실행
$> rvmsudo rails server thin -b 0.0.0.0 -p 80 -e production