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 인증설정 변경이 필요하다. 하단 링크 참조
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