オープンソースSNS「OpenPNE」「SKIP」をCent OS 6にインストール
オープンソースのSNSを評価したいというお客さんからの要望があって、Cent OS 6にPHP製のSNS「OpenPNE」と、Ruby on Rails製のSNS「SKIP」の環境構築を行いました。結構色々と苦戦したので、忘れないようにメモメモ。
「OpenPNE」は株式会社手嶋屋、「SKIP」は株式会社ソニックガーデンという、どちらも日本の会社が開発・公開しています。ドキュメントが日本語でサポートも受け易い、というのがチョイスのポイントでした。ちなみに、調査するにあたって以下の様なまとめも作っています。
ビジネス利用できる?国内外SNSまとめ - NAVER まとめ
なお、以下の前提条件は「OSインストールしたてでまっさらな状態のCent OS 6.x」です。
あと、以下の作業は全てスーパーユーザーで操作する事も前提とします。「root」というユーザーで操作し、「/root/work」というワークディレクトリで作業の殆どを行うと思って下さい。
本当はコンソールに表示された内容とかもメモっておけば良かったんですが、なんか知らんけどコピペが全くできない環境での構築だったので、やむなく断念。OSの細かいバージョンもメモし忘れました。重ね重ね申し訳ないです。
1.CD-ROM(isoファイル)のマウント
# mkdir /mnt/cdrom # mount /dev/cdrom /mnt/cdrom
この作業自体はSNSのインストールに全く関係無いんですが、OSしたてのまっさらな環境、ということで一応。
2.yumの最新化
# yum update
3.SELINUXの設定変更
# vi /etc/selinux/config
# reboot
アクセス制限が掛かっている場合に無効化します。コマンドで一時的に解除することもできますが、面倒なので永続的に変更しておきましょう。設定ファイル変更後、サーバの再起動を行うことで反映されます。
4.gcc関連ライブラリのインストール
# yum -y install gcc* compat-gcc* compat-lib*
yumコマンドに「-y」オプションを付けると、「インストールを続行するか?」という問いに対して必ず「y」と返答してくれます。必須ではありません。
5.wgetのインストール
# yum -y install wget
「yum list」コマンドを用いるとインストーラーの有無が確認出来ます。また、インストール後に「which wget」の様にwhichコマンドでインストールしたコマンドを指定すると「/usr/bin/wget」といったようにインストールされたディレクトリを返してくれます。
6.makeのインストール
# yum -y install make
7.gettextのインストール
# yum -y install gettext-2.0.4
gettextコマンドはバージョン指定しないで
# yum -y install gettext
とインストールしてもいいんですが、SKIPインストール時にバージョンが合わずインストールし直す事になるかもしれないので要注意。オレは最初バージョン指定無しでインストールして、後から入れ直すハメになりました。
8.rpm-buildのインストール
# yum -y install rpm-build
9.checkinstallのインストール
# wget http://asic-linux.com.mx/~izto/checkinstall/files/rpm/checkinstall-1.6.1-1.i386.rpm # rpm -ivh checkinstall-1.6.1-1.i386.rpm
checkinstallはyumではインストール出来ません。最新バージョンは1.6.2なんですが、rpm無しでインストールするとめんどくさい(オレは何故かmakeに失敗した)ので、rpmが存在する1.6.1でインストールする方がラクチンだと思います。
10.httpd(Apache)のインストール
# yum -y install httpd
※必要に応じてサーバ名を変更しておいて下さい。
# vi /etc/httpd/conf/httpd.conf
変更を反映させるにはhttpdを再起動しましょう。
# /etc/init.d/httpd restart
11.MySQLインストール
# yum -y install mysql-server
13.Ruby と関連のパッケージをインストール
# yum -y install ruby ruby-devel ruby-docs ruby-irb ruby-libs ruby-mode ruby-rdoc ruby-tcltk rubygems mysql-devel
「yum install」コマンドに対して複数のパッケージを同時に指定する事で、一斉にインストールする事も出来ます。慎重派は別々にやって逐次目視で確認して行った方が良いでしょう。
14. RubyGemsのインストール
# gem sources -a http://gems.github.com/ # gem sources -a http://rubygems.org/ # gem install rails -v2.3.5 # gem install openskip-skip_embedded -v 0.9.19 # gem install will_paginate -v 2.3.12 # gem install fastercsv -v 1.5.1 # gem install json -v 1.2.0 # gem install mysql maedana-ar_mailer ruby-openid # gem install gettext_rails -v 2.0.4 # gem install gettext_activerecord -v 2.0.4 # gem install locale_rails -v 2.0.4 # gem install feed-normalizer -v 1.5.2 # gem install searchlogic -v 2.4.7 # gem install nokogiri -v 1.4.1 # gem install sanitize -v 1.2.0 # gem install diff-lcs -v 1.1.2 # gem install httpclient -v 2.1.5.2
Rubyの関連パッケージを「gem」コマンドでインストールして行きます。
ここで要注意!SKIPは指定されたバージョン以外は一切許容しません。複数のバージョンをインストールしていたり、バージョンが異なっていたりすると、この後の「19.データベースの作成」作業でエラーが出て全く前に進まなくなります。
「gem list XXXX(パッケージ名)」コマンドでインストール済バージョンを確認し、バージョン番号が食い違っていないことを確認しましょう。必要以外のヴァージョンが存在していた場合には「gem uninstall XXXXX(パッケージ名 -v X.X.X(バージョン番号)」でアンインストールし、必要なパッケージのみインストールしてある状態を保って下さい。
また、「i18n」がインストールしてあるとやはり失敗するので、これもアンインストールしておいた方が無難です。アンインストールはデータベース作成に失敗してからでも間に合いますけどね。
同様に、「locale」と「gettext」は、今回オレが環境構築を行った際、バージョンの食い違いでエラーが発生したことから、インストールし直したものです。SKIPの環境構築のガイドにこれらをインストールしろ、とは書いてないんですが、必要に応じて入れ直しが必要でしょう。
# gem install locale -v 2.0.4 # gem install gettext -v 2.0.4
15.libxslt、libxslt-devel、libxml2-develのインストール
# yum -y install libxml2-devel # yum -y install libxslt # yum -y install libxslt-devel
16.SKIPのダウンロードと解答
http://www.openskip.org/download
上記URL先を開くと、アンケートが表示され、回答するとダウンロードページが表示されます。オレは今回はZIP形式を選びました。
17. SKIPのファイル解凍(tarファイルをダウンロードした場合のみ)
# unzip openskip-skip-xxxxxxx.zip # cd openskip-xxxxxxx
以降の作業は解凍して出来たSKIPディレクトリに移動して作業します。
18. 設定ファイルの準備・編集
# cp config/initial_settings.yml.sample config/initial_settings.yml # cp config/database.yml.sample config/database.yml # cp config/common_menus.yml.sample config/common_menus.yml
失敗しても良いように、オリジナルはそのまま残し、使用する設定ファイルをコピーして作ります。この後このタイミングで作ったconfig/initial_settings.yml、config/database.yml、config/common_menus.ymlを編集します。が、最低以下の2箇所だけ追記すればとりあえず動かす事は可能です。
initial_settings.yml
config/initial_settings.yml 39行目
変更前:host_and_port:
→変更後:host_and_port: localhost:3000
config/initial_settings.yml 40行目
変更前:protocol:
→変更後:protocol: http://
19.データベースの作成
# RAILS_ENV=production rake db:create # RAILS_ENV=production rake db:migrate
MySQLが起動済みの状態で作業を行って下さい。
前述の「14. RubyGemsのインストール」作業でインストールしたパッケージが正しいバージョンではない場合、migrate実行時にエラーが発生します。ネットで調べてみると大抵の人がここでつまずくみたいですね。
20.初期データの登録
# RAILS_ENV=production rake skip:load_default_data
実行に成功すると「Select language: ja,en [ja]」と聞いてきますので、「jaと入力しましょう。
21.初期管理者ユーザ登録URLの生成
# RAILS_ENV=production ruby lib/create_new_admin_url.rb --code
実行に成功すると初期管理者ユーザ登録画面のURLが出力されます。起動時に表示はされますが、出来ればこのタイミングで忘れずにメモしておきましょう。結構間違え易い複雑なURLなので、コピペかスクリーンショットを撮っておくことをオススメします。
あと、SKIPの環境構築のガイドだと、この後「ar_sendmailの起動」を行いますが、メール機能を利用する場合のみ必要なのでとりあえず無視します。
22.SKIPサーバ起動
# ruby ./script/server -p [initial_settings.ymlで指定したSKIP起動ポート] -e production
実行すると先ほど取得したSKIP初期管理者ユーザ登録画面にアクセス出来るようになります。SKIPサーバ起動中はそのコンソールは占有されます。サーバを停止させるにはCtrl+Cを実行しましょう。
23.初期管理者ユーザの作成&利用開始
「19.初期管理者ユーザ登録URLの生成」で表示されたURLにブラウザでアクセスして、最初の運営者となるユーザを登録してください。
24.PHP、pecl、pearのインストール
# yum -y install php # yum -y install php-mbstring # yum -y install php-devel # yum -y install php-pdo # yum -y install php-pear # yum -y install php-gd # yum -y install php-mcrypt # yum -y install pcre-devel # yum -y install httpd-devel # yum -y install APC # pecl install pdo_mysql
PDOはPHPからDBを扱い易くするツールなんですが、それぞれのDB用(上記だとMySQL)ではなくまとめて「pecl install pdo」とやるとまるっと大抵のDBをサポート出来るようになります。…が、オレがPDOをインストールしようとすると何故かmakeで失敗してしまい、断念。
「pecl」コマンドでインストールされたpdo_mysql.soは「chmod」コマンドでアクセス権限を変えておかないと、後からPHPから見て見つからない場合があります。
25.PHPの設定変更
/etc/php.iniに以下を追加。場所はどこでもOKですが、最後の辺りに書くのが分かり易いんじゃないかと勝手に思ってます。
# vi etc/php.ini
記述内容
extension=pdo.so
extension=pdo_msql.so
# /etc/rc.d/init.d/httpd restart
もしくは
# service httpd restart
26.OpenPNE3のソースコードの入手と展開
# wget https://nodeload.github.com/openpne/OpenPNE3/zipball/OpenPNE-3.6.3 # unzip OpenPNE-3.6.3 # mv OpenPNE3 /var/www
27.設定ファイルをコピー
# cd /var/www/OpenPNE3
# cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php
# cp config/OpenPNE.yml.sample config/OpenPNE.yml
SKIPの時と同様に設定ファイルのオリジナルは残し、コピーしたものを変更します。OpenPNE.ymlの「base_url」と「mail_domain」を環境に合わせて変更します。
7行目
変更前:base_url: "http://example.com"
→変更後:base_url: "http://localhost"
15行目
変更前:mail_domain: "example.com"
→変更後:mail_domain: "(活用したいメールアドレスのドメイン)"
28.インストールコマンド(DBデータ作成)の実行
# ./symfony openpne:install
インストールコマンドを実行するとDBの設定について聞かれます。
データベースへの接続用ユーザ名
→ root
データベースへの接続用パスワード(未入力可)
→ (未入力)
データベース名
→ mysql
以上の事項について入力をおこなうと、インストール作業が自動でおこなわれます。エラーが出なければインストールは成功。
29..htaccessを変更
# vi .web/.htaccess
一行目をコメントアウト(先頭に「#」を付ける)し、
# RewriteBase /
→RewiteBase /
OpenPNEのドキュメントルートを指定します。ついでにhttpd.confも書き換えておきましょう。
# vi /etc/httpd/conf/httpd.conf
ー変更前ー
DocumentRoot /var/www/html
ー変更後ー
DocumentRoot /var/www/OpenPNE3/web
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
変更を反映させるにはhttpdを再起動しましょう。
# /etc/init.d/httpd restart
30./var/lib/php/sessionのpermissionを変更
# chmod 777 /var/lib/php/session # chown apache /var/lib/php/session
これをやっておかないと、ログイン画面は表示出来ても、実際にログインするとログイン出来ない、という事態が起こります。
31.OpenPNEのソースコードを修正
# vi .//lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql.php
ー変更前ー
public function connect()
{
$connected = parent::connect();
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
return $connected;
}
ー変更後ー
public function connect()
{
$connected = parent::connect();
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$this->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
return $connected;
}
OpenPNEのバグらしくて、上記の様にPDO:: MYSQL_ATTR_USE_BUFFERED_QUERY を追加してやる必要があります。最後に念の為httpdを再起動させておきましょう。
起動して「http://(指定したサーバ名、もしくはIPアドレス)/」にアクセスし、OpenPNEが正常起動していることを確認して下さい。
「SKIP」「OpenPNE」2種類のSNSを同時にインストールすることはまず無いでしょうが、良かったら参考にしてみてください。