Fedora 17 セットアップメモ

だいたいのサービスやライブラリは、yumやgemでインストールするだけでOK。
引っかかったところをメモ。

sshで接続できるようにする

ファイアウォールを外す。
http://www.server-world.info/query?os=Fedora_16&p=initial_conf&f=2

デーモンを起動。

systemctl enable sshd.service
systemctl start sshd.service

gem pg のセットアップ

yum install gcc
yum install ruby-devel
yum install postgresql-devel
gem install pg

railsを使うなら

gem install bundler
yum install sqlite
yum install sqlite-devel
yum install gcc-c++

NFSのマウント

マウント情報をfstabに書き込んだ後で、
yum install nfs-utils
systemctl enable rpcbind.service
systemctl start rpcbind.service
mount -a

それだけではアクセス許可がないので、
各ユーザーのuidをNFSサーバと合わせる必要がある

CGIを使えるようにする

/etc/httpd/conf/httpd.conf の
<Directory "/var/www/html">
の近くの
Options に ExecCGI を追加

下記のコメントを解除

AddHandler cgi-script .cgi

SELinuxがうまく設定できなかったので、無効化する(ほんとはよくない)
/etc/selinux/config で

SELINUX=disabled
として再起動

CGIでRubyを使うと、文字コード周りでトラブル

Internal Server Errorが出て、 /var/log/httpd/error_log に、
invalid byte sequence in US-ASCII (ArgumentError)
というログが残る。

/etc/httpd/conf/httpd.conf で、

<Directory "/var/www/html">
の中に以下を追加。
# for Ruby 1.9
SetEnv LC_CTYPE ja_JP.utf8
SetEnv LANG ja_JP.utf8

Passenger (apacheでrailsアプリなどを動かすモジュール)

sudo gem install passenger
sudo /usr/local/bin/passenger-install-apache2-module

足りないものの入れ方を親切に教えてくれるので、言われたとおりやる

/etc/httpd/conf/httpd.conf に下記を追加
(バージョンが変わると思うので、スクリプトの出力からコピペする)

LoadModule passenger_module /usr/local/share/gems/gems/passenger-3.0.13/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/share/gems/gems/passenger-3.0.13
PassengerRuby /usr/bin/ruby

Passengerでのアプリのデプロイ

こちらを参考に
http://www.modrails.com/documentation/Users%20guide%20Apache.html#deploying_rack_to_sub_uri

以下、アプリ名が weekly-report の例

/var/www/webapps/weekly-report にアプリを置く

下記を実行

cd /var/www
ln -s webapps/weekly-report/public weekly-report

/etc/httpd/conf/httpd.conf に下記を追加

<VirtualHost *:80>
    ServerName scraper.hallab.co.jp
    DocumentRoot /var/www
    <Directory /var/www>
        Allow from all
        Options -MultiViews
    </Directory>

    RackBaseURI /weekly-report
    # RailsBaseURI /weekly-report が必要なアプリもあるみたい

    # 2つめ以降のアプリは、この行だけ追加
    # RackBaseURI /weekly-report2
</VirtualHost>

アプリを更新したら (初回デプロイ時も必要)

cd /var/www/webapps/weekly-report
rake db:migrate RAILS_ENV=production
rake assets:precompile RAILS_ENV=production
touch tmp/restart.txt