Vuejs History mode 테스트 해보기

Vuejs History mode 테스트 해보기

요즘 Vuejs를 스터디 중입니다.
그래서 간단히 Vuejs 문서를 읽어 가면서 스터디 내용을 정리하던 중에 Vuejs history mode를 직접 테스트 해보고 싶어졌습니다.
읽어보다보니 history mode는 필수라고 생각 되었거든요.

HTML5 History 모드 · vue-router
위 문서 참조.

Vuejs history mode를 테스트 해보기 위해서는 서버 설정이 필요한데,
간단한 기본 껍데기만 만들어서 테스트 해보고 싶었으나(webpack 설정 없이..), node 알못npm project settings 알못 인 관계로 간단한 서버(backend)위에 vuejs(frontend) 를 얻는 방법을 못찾아서 결국 포기…

그냥 express 프로젝트에 vuejs를 연동하기로 마음 먹었습니다. (webpack을 이용해서)

express와 vue를 이용한 개발 환경 구성 살펴보기 – Vue.js 한국 사용자 모임

이 페이지를 참고하여 구성해보았습니다.

관심 있으신 분은 GitHub – 9to6/vue-router-express: Vuejs + Vue-router + express 여기 소스 및 REAMDE를 참고 해주세요.

결론

만들어 놓고 보니 backend 와 연동하기 위해 vuejs를 컴파일해서 index.html을 얻어내야하는 불편함이…
물론 vuejs 코드만을 테스트 하려면 npm run dev로 가능하겠지만…

이제 history mode테스트도 해봤으니, 본격 vuejs를 이용한 프로젝트에 착수할 수 있으려나…

CentOS7에 Discourse 설치 및 서비스 시작하기

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