状況
さくらVPS上のapacheで独自ドメイン(http://example.com)のWebサイトを運営しており、その下にぶら下げる形で(http://example.com/hogerails)Railsアプリを動かしたい。
Railsアプリはローカルで作成し、rails serverでは起動する状態。
やったこと
Railsアプリの設置
公開するにあたり、Railsアプリをサーバーの然るべき場所に設置します。
アップロード
適当にsftpとか使ってフォルダごとアップロードします。
tar zcvf railsapp.tar.gz railsapp |< とかして圧縮するといいでしょう。 ***設置 既にWebページを独自ドメインで運営している状況なので、/etc/httpd/conf/httpd.confを見て、そのDocumentRootを調べます。 ここでは >|| /var/www/example/public_html
だとします。
アップロードしたrailsappを
mv railsapp /var/www/example/public_html/
します。
http://example.com/hogerailsというURLで、Railsアプリであるrailsappを指定するためにシンボリックリンクを設定します。
cd /var/www/example/public_html ln -s railsapp/public hogerails
Apacheの設定
passenger-install-apache2-module
した時のメッセージにあったようにhttpd.confを弄ります。
ファイルの一番下の方だと思います。
NameVirtualHost *:80 # 行頭の"#"を消す # http://example.comの設定 <VirtualHost *:80> DocumentRoot /var/www/example/public_html ServerName example.com ServerAlias www.example.com <Dirctory "/var/www/example/public_html"> Options ExecCGI FollowSymLinks -Indexes order deny, allow allow from ALL AllowOverride all </Directory> </VirturalHost> # その下に置くRailsアプリの設定 <VirtualHost *:80> DocumentRoot /var/www/example/public_html ServerName example.com ServerAlias www.example.com RailsBaseURI /hogerails # 重要 <Dirctory "/var/www/example/public_html/railsapp/public"> order deny, allow allow from ALL AllowOverride all </Directory> </VirturalHost>
ApacheのVirtualHostを利用し、同じServerNameにRailsBaseURIを指定します。
これでhttpd.confの設定は終わりです。
Passengerの設定
passenger-install-apache2-module
をした後に更新した/etc/httpd/conf.d/passenger.confに
PassengerMaxPoolSize 3 # インスタンス最大数 RailsEnv production # 本番環境 RailsBaseURI /hogerails
を書き足します。
開発環境でとりあえず試したいといった場合には
RailsEnv development
とすれば出来ます。
Railsの設定
とりあえずGemfileに
gem "therubyracer" # javascriptを動かすのに必要なはず
を書き加えて
bundle install --path vendor/bundle rake db:migrate rake assets:precompile
これで必要なgemのインストールとCSSファイルやJavaScriptファイルを圧縮とDBの作成を行います。
DBについてはconfig/database.ymlを自分の環境に合わせて設定してください。
config/enviroments/production.rbの各項目についてはわかってないので、ここでは言及しません。
ここまでで
とりあえず動くはずです。
sudo service httpd restart
してアクセスして確認しましょう。
sudo passenger-status
でRailsアプリの状態を確認できます。
bootstrapのiconのためのassetsについて
bootstrapの利用
bootstrapのテーマを変更するのに便利なbootswatchの利用はbootswatchをRailsで使うを参考にしました。
iconが表示されない
<i class="icon-ok"></i>
とかでいい感じのアイコンを表示出来るのですが、アイコンの場所の指定が合っておらず、アイコンが表示されない問題があります。
これは
app/assets/stylesheets/bootstrap_and_overrides.css.less
を
// @fontAwesomeEotPath: asset-path("fontawesome-webfont.eot"); // @fontAwesomeEotPath_iefix: asset-path("fontawesome-webfont.eot#iefix"); // @fontAwesomeWoffPath: asset-path("fontawesome-webfont.woff"); // @fontAwesomeTtfPath: asset-path("fontawesome-webfont.ttf"); // @fontAwesomeSvgPath: asset-path("fontawesome-webfont.svg"); @fontAwesomeEotPath: "fontawesome-webfont.eot"; @fontAwesomeEotPath_iefix: "fontawesome-webfont.eot#iefix"; @fontAwesomeWoffPath: "fontawesome-webfont.woff"; @fontAwesomeTtfPath: "fontawesome-webfont.ttf"; @fontAwesomeSvgPath: "fontawesome-webfont.svg";
このように変更すると直りました。