2013年10月19日土曜日

joruriGWをubuntu+ruby2.0+nginx+unicornで動かす

Ruby on Rails上で動くOSSのグループウェア,joruriGwをubuntu上で動かす手順を説明します。当然のことですが,joruriGwは,ubuntu上でも動きます。

joruriGwについては,公式ページ(http://joruri.org/)を参照してください。

このポストは,joruriGwに付属してたCentOS用のinstallマニュアルをubuntu用に書き換えたものです。

環境

OS:ubuntu 12.04.03 LTS
webサーバ:nginx
ruby:ruby 2.0.0p247
アプリサーバ:unicorn
DB:mysql
jorurigwのパス:home/joruri/jorurigw

ライブラリのインストール


sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate libxslt1.1 libxslt1-dev libxml2-dev libyaml-dev libjpeg-dev libpng12-dev librsvg2-dev libgs-dev imagemagick libmagick++-dev libcurl4-openssl-dev nkf libldap2-dev libsasl2-dev shared-mime-info libevent libevent-dev

rubyのinstall


mkdir /tmp/ruby && cd /tmp/ruby curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz cd ruby-2.0.0-p247
./configure
make
sudo make install

bundlerのインストール


sudo gem install bundler --no-ri --no-rdoc

RubyGemsを更新


sudo gem update –system

joruri実行ユーザをOSに作成

joruriユーザではログインできないようにする。操作は,sudo -u joruri -H で行う。(gitlabのインストールマニュアルのマネ)


sudo adduser --disabled-login --gecos 'Joruri' joruri
cd /home/joruri

memcachedのinstall


sudo apt-get install memcached

mysqlサーバのインストールとユーザの作成


sudo apt-get install mysql-server

インストール中にrootのパスワードを設定する。

ついでに,rubyのライブラリmysql2 (0.3.11) のインストールに必要なパッケージもインストールしておく。


sudo apt-get install libmysqlclient-dev

続いて,joruriGwが使うmysqlのユーザを作成する。とりあえずここでは,ユーザ:joruri password:passwordとする(←ちゃんと変えてください。)


mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO joruri@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit

nginxのインストール


sudo apt-get install nginx

nginxの設定

新しく書くのはめんどいし,ミスりがちなので,gitlabのnginx用の設定ファイルを修正して使う。


sudo nano /etc/nginx/sites-available/jorurigw

jorurigwに,gitlabのnginx用の設定ファイル(lib/support/nginx/gitlab)をコピーして修正して保存。

sites-available/に作った設定ファイルのリンクを,sites-enable/に貼る。


sudo ln /etc/nginx/sites-available/jorurigw /etc/nginx/sites-enable/jorurigw

joruriGWのダウンロードと展開


cd /home/joruri
sudo -u joruri -H wget http://joruri.org/download/jorurigw/jorurigw-2.1.1.tar.gz
sudo -u joruri -H tar xvzf jorurigw-2.1.1.tar.gz

joruriGwのコードは,/home/joruri/jorurigwに展開。

joruriGWの設定

ユーザjoruriが,jorurigwの下のlog/とtmp/にアクセスできるようにパーミッションを修正。


cd /home/joruri/jorurigw
sudo -u joruri -H mkdir tmp
sudo chown -R joruri log/
sudo chown -R joruri tmp/
sudo chmod -R u+rwX  log/
sudo chmod -R u+rwX  tmp/

tmp/socketsとtmp//pidsにjoruriユーザがアクセス出来るようにパーミッションを設定


cd /home/joruri/jorurigw
sudo -u joruri -H mkdir tmp/pids/
sudo -u joruri -H mkdir tmp/sockets/
sudo chmod -R u+rwX  tmp/pids/
sudo chmod -R u+rwX  tmp/sockets/

gemファイルの設定

bundlerがunicornをインストールするように,gemファイルを修正する。

本来は,Gemfile.localを作成して,そこに書き込む方が良いのだが,joruriGwが配布するgemfileがgemfile.localを読み込む設定になっていないので,Gemfileに直接書き込む。

sudo -u joruri -H nano Gemfile

コメントアウトされている,gem 'unicorn'を有効にする。joruriGwの開発側は,unicorn上での動作も想定に入れているのかしら…

gemのインストール

joruriGwの動作に必要なrubyのライブラリをインストールします。


cd /home/joruri/jorurigw
bundle install

データベースの設定

注意点は,config/databases.ymlに,production以外にも,dev_jgw_gwとgwsubの設定も必要なこと。どうしてこうなっているのかはなぞ。

config/database.ymlの設定


production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: production_jgw_core
  pool: 5
username: joruri #←mysqlに設定したユーザ名に合わせる。 password: "password" #mysqlに設定したパスワードに合わせる。
host: localhost ========(中略)============= dev_jgw_gw: adapter: mysql2 encoding: utf8 reconnect: false database: <%= env_prefix %>_jgw_gw pool: 5 username: joruri #productionと同様に password: "password" #productionと同様に host: localhost socket: /var/lib/mysql/mysql.sock gwsub: adapter: mysql2 encoding: utf8 reconnect: false database: <%= env_prefix %>_jgw_gw_pref pool: 5
username: joruri #productionと同様に password: "joruri" #productionと同様に host: localhost socket: /var/lib/mysql/mysql.sock

セキュリティのために,database.ymlをjoruriユーザ以外が読めないようにする。


sudo -u joruri -H chmod o-rwx config/database.yml

データベースに初期データを作成する

joruriGwのインストールマニュアルは,development環境での設定方法を書いてあるので,気をつけてください。通常のrailsのアプリケーションと違って,rakeでDBの設定が出来ないので,sql文を手打ちします。

最初にデータベースを作成します。


mysql -u root -p -e "create database production_jgw_core"
mysql -u root -p -e "create database production_jgw_gw"
mysql -u root -p -e "create database production_jgw_gw_pref"
mysql -u root -p -e "create database production_jgw_bbs_000001"

続いて,テーブルを作成します。


mysql -u root -p production_jgw_core < ./db/development_jgw_core_schema.sql
mysql -u root -p production_jgw_gw < ./db/development_jgw_gw_schema.sql
mysql -u root -p production_jgw_gw_pref < ./db/development_jgw_gw_pref_schema.sql
mysql -u root -p production_jgw_bbs_000001 < ./db/development_jgw_bbs_000001_schema.sql

初期データを登録します。


mysql -u root -p production_jgw_core < ./db/development_jgw_core_init.sql
mysql -u root -p production_jgw_gw < ./db/development_jgw_gw_init.sql
mysql -u root -p production_jgw_gw_pref < ./db/development_jgw_gw_pref_init.sql
mysql -u root -p production_jgw_bbs_000001 < ./db/development_jgw_bbs_000001_init.sql

さらに環境設定のために次のSQL文を実行してください。


mysql -u root -p -e "UPDATE production_jgw_gw.gwbbs_controls SET dbname = 'production_jgw_bbs_000001' WHERE gwbbs_controls.id =1;"

joruri GWの起動


cd /home/joruri/jorurigw
bundle exec unicorn_rails -c config/unicorn.rb -E production -D

ブラウザでアクセスしてログイン画面が表示されればjoruriGwのインストールは成功です。初期設定では,admin/adminで管理者権限でログインできます。unicornを自動起動する方法は,http://mudanakaigi.blogspot.com/2013/10/unicorn_15.htmlを御覧ください。

httpsで動かす方法などは,気が向いたら別途書くかもです。今は,艦これのイベントで忙しいので,後回しにします。

0 件のコメント:

コメントを投稿