2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

俺の日記帳 第二冊目

1 :login:Penguin:2007/05/03(木) 12:29:53 ID:CbgoHqlv.net
批判は受け付けない。

451 :カミナリ桃@代理レス:2011/02/03(木) 08:07:02 ID:NWv1k8lC.net
rubyをローカルのテスト環境にインスコ中なんだが…
さすがにaptに全て投げるわけにはいかない様子。

現在の作業をレッツメモメモ
・Ubuntu 10.04にて作業、rvmでrubyを複数バージョンを入れちゃうYO!
・ひとまずruby自体をaptでインスコ
# sudo aptitude install ruby ri rdoc

・gemは手動でインスコ
# wget http://rubyforge.org/frs/download.php/74140/rubygems-1.5.0.tgz
# tar zxvf rubygems-1.5.0.tgz
# cd rubygems-1.5.0
# sudo ruby ./setup.rb
# sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

・rvmをgitでゲットしてインスコ
# sudo aptitude install git-core curl libreadline-dev
# mkdir -p ~/.rvm/src
# cd ~/.rvm/src
# bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

・パスを通す
# vim ~/.bashrc #末尾に追加
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

・rvmで必要なソフトウェアを入れる
# rvm package install zlib
# rvm package install readline
# rvm package install openssl



452 :カミナリ桃@代理レス:2011/02/03(木) 08:07:43 ID:NWv1k8lC.net
・rvmで1.9.2の最新を入れる
# rvm install 1.9.2 -C --with-zlib-dir=$HOME/.rvm/usr,--with-readline-dir=$HOME/.rvm/usr, --with-openssl-dir=$HOME/.rvm/usr

・1.9.2を使ってみる
# rvm use 1.9.2

・システムのrubyに戻す
# rvm reset

453 :login:Penguin:2011/02/03(木) 22:59:53 ID:5BqFtC6U.net
rubyのパッケージ管理はカオス

454 :カミナリ桃@代行:2011/02/06(日) 00:40:07 ID:ZC7zQ+r5.net
>>453
何よりgem先生がドSというか鬼畜すぎる
Ubuntuでgemが古いからsudo gem update --system したら
gemのディレクトリが変わるとかどういう仕様だよwww
鳥の方で頑張って新しいgemを用意してくれYO!
sudo aptitude safe-upgradeさせてくれよ><
そんなわけで鳥のgemは最初から入れずに公式のgem先生を入れてます。
でも公式のgem先生アンインストールしたいときとかどうするんだ…

前回の続き。
rvm入れたけどrvmに頼るとruby周りの管理が煩雑になりそうなので、
結局rvm resetしてaptitudeで普通にインスコ出来る1.8.7を使うことにしました。
てかrvm公式サイトに「これdevelopment用だから!」的なドキュメントを見たのが主な原因だけど…(−−;

さて、本来の目的であるrails環境を整えることを考える。
rvmやらgemやらいじってたら時間がかかって涙目。

・構成:Apache + Passenger(mod_rails)
 ・Mongrelさんを入れたくないです…
  昔JavaでTomcatの面倒を見てた経験があるんだけど、
  アプリケーションサーバは色々と手間がかかるので正直鯖に入れたくない…
 ・てか普通にPassengerの方が軽くね?
  アレなバグが無いならこれでよくね?

455 :カミナリ桃@代行:2011/02/06(日) 00:40:26 ID:ZC7zQ+r5.net
・手元のUbuntu@VMWareで試してみた
# sudo aptitude install ruby1.8-dev
# sudo gem install passenger

# passenger-install-apache2-module
passenger-install-apache2-module を実行した際にインスコに必須のツールが無い場合、
必要なツールのapt-getでのパッケージ名まで出してくれる。
そいつらをsudo aptitude install してやる
※CentOSだとyumでのパッケージ名が出るらしい

インスコ後、「Apacheにこんな感じで設定してね★」ってメッセージが出るのでメモ。
自分は/etc/apache2の既存の設定を参考に以下のようにしてみた。
# sudo vim /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so

# sudo vim /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby1.8
</IfModule>

# sudo a2enmod passenger
※この後、バーチャルホストの設定でrailsのpublicディレクトリを指定すればおk

456 :カミナリ桃@代行:2011/02/06(日) 00:40:42 ID:ZC7zQ+r5.net
通常はこれでApacheを再起動すればおk
自分はAppArmorをぶっ込んでて影響が出たので、一旦停止させた
# cd /etc/apparmor.d/
# sudo aa-complain usr.lib.apache2.mpm-prefork.apache2
# sudo service apparmor restart
# sudo service apache restart

なお、passengerは標準ではproductionモードになっている
なのでproduction用のDB作成&マイグレーションを忘れないこと

※後でやることリスト
・rails用のapparmorの設定作り
・.htaccessでBASIC認証かけられるかどうかの確認

一時的に身内向けアプリを作成して身内のみに公開する予定なので、
basic認証+apparmorが必須。

457 :カミナリ桃● ◆hzkudVaLnM :2011/02/06(日) 15:46:05 ID:occzWThI.net
うぐぐ、規制でここに直接書き込めないから●買ってしまったよ…
なんかうちのプロバイダが永久規制らしい。
モリタポとかニダーランとかマンドクセ…
悔しいけど頑張って日記書き込んじゃうYO!(;ω;`)

AppArmor+Passengerな暫定設定が出来たYO!
何気にはまりポイントがあったので大変だったよ…(−−;

今回のポイント
現象:
通常新たなWebアプリケーションをApacheに配置する場合、
/etc/apparmor.d/apache2.d 以下に設定を記述する。
ところがそこに設定を書いてもpassengerが立ち上がらない。

詳細:
上記の通常設定はサイト訪問者が訪れたタイミングでAppArmorがアクセス制限を行う。
しかし今回はapache起動時にpassengerを立ち上げられず死んでいる。

原因:
passengerはApacheのモジュールである。
つまり、passengerを入れたことにより、Apache自体のAppArmor設定を修正する必要があった。

458 :カミナリ桃● ◆hzkudVaLnM :2011/02/06(日) 15:51:31 ID:occzWThI.net
対処 (暫定です。一部問題を残してるYO!):
# sudo vim /etc/apparmor.d/usr.lib.apache2.mpm-prefork.apache2
capability chown,
capability dac_override,
capability dac_read_search,
capability fowner,
capability fsetid,
capability sys_ptrace,
capability sys_resource,
※上記の内容を既存のcapability設定の下に追加しました

# sudo vim /etc/apparmor.d/apache2.d/rails_app
^rails {
#include <abstractions/apache2-common>
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/ruby>
#include <abstractions/user-tmp>

/home/www/test_rails/hello/ r,
/home/www/test_rails/hello/* r,
/home/www/test_rails/hello/** r,
/home/www/test_rails/hello/log/* w,
/home/www/test_rails/hello/tmp/* rw,
/home/www/test_rails/hello/tmp/** rw,
/var/log/apache2/rails_access.log w,
/var/log/apache2/rails_error.log w,

/var/log/apache2/* w,
# ↑最後の行、動作確認のために/var/log/apache2以下の全ファイルに書き込みを許可してます。
# 本当は必要なファイルにのみ書き込み権限を与えるべきです。
}

459 :カミナリ桃● ◆hzkudVaLnM :2011/02/06(日) 15:58:50 ID:occzWThI.net
# sudo vim /etc/apache2/sites-enabled/rails_test
<VirtualHost *:80>
ServerAdmin webmaster@localhost

ServerName 192.168.11.20
DocumentRoot /home/www/test_rails/hello/public
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www/test_rails/hello>
AAHatName rails
</Directory>
<Directory /home/www/test_rails/hello/public>
Options -MultiViews
AllowOverride All
</Directory>

ErrorLog /var/log/apache2/rails_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/rails_access.log combined
</VirtualHost>
#RailsEnv development

※あくまでローカル環境にpassenger + AppArmorを有効にしただけの設定です。
※参考にする場合は適宜自分の環境にあうよう書き換えて下さい。

460 :カミナリ桃● ◆hzkudVaLnM :2011/02/06(日) 16:19:08 ID:occzWThI.net
>>458 >>459
※Janeで↑のレスをポップアップ表示したらインデントが表示されて分かりやすいはず

「そもそもcapabilityって何よ」って方は以下のページが参考になります。
http://www.atmarkit.co.jp/fsecurity/rensai/lids03/lids01.html

疑問・課題:
・capabilityについて
Apacheのエラーログ、及びaa-complain と aa-logprofを使ってで必要なcapabilityを導きだしたワケですが、
上記記載のcapabilityが本当に全てapache自体のAppArmorの設定ファイルに必要かどうかは疑問。
もしかしたら一部のcapabilityはWebアプリ用のAppArmor設定に記載すれば良いのかもしれない。

・Railsアプリ用のAppArmor設定について
基本はプロジェクトディレクトリの読み込みを全部許可、
railsで書き込みが行われるtmpとlogディレクトリは書き込みも許可にしてみました。
ただ、自分はRailsの知識があんまり持ってないので、過不足があるかもしれません。

補足:
・/home/www/test_railsディレクトリ内に、テストとして「hello」という名称のRailsアプリを作成/設置しました。
・Passengerはデフォルトの挙動でProductionとして動きます。
 DBはProduction用のモノを作成し、マイグレーションしておきましょう。
>>459の最後に「#RailsEnv development」とコメントアウトしてますが、
 このコメントを解除するとdevelopmentモードで動きます。


総レス数 984
445 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★