ロシア製のWebサーバ/リバースプロキシで、同時にIMAP/POP3プロキシなのか。
消費リソースが少ない、設定が容易というのが魅力を感じる。
nginxのインストール
※passengerをインストールしてコマンドでnginxもインストールされるのでこの作業は行わなくて良い。
パッケージであるようだ
$ sudo apt-get install nginxインストールされた。この後は何をしたら良いか分からないけど、
ドキュメントルーとを見つけて静的ファイルを表示してみよう。
$ man nginxバージョンは-vで調べられる。
$ nginx -v nginx version: nginx/0.7.67-hでヘルプを見てみる。
うーん。-Vでコンフィグのオプションが見れるのか。
設定方法とかは分からないので、ネットで調べる。
blogをいくつか見たけど、どれが新しい情報か分からないので、
manに出ていた本家サイトを見る。
http://nginx.net/
情報はほとんど無くて、代わりに下記のリンクがある。
http://nginx.org/
!バージョンは1.0.4が最新のstableなのか。。。パッケージでインストールしたのは0.7.67。。。
ドキュメントを見る
virtual hostみたいに設定するのか。
0.8.21よる古いのはデフォルトサーバの指定はdefault_serverではなくてdefaultにすると。
指定していないサーバのアクセスをエラーにする場合は、server_nameが_をデフォルトにしておく。
IPベースのバーチャルサーバーが作れる。
ドキュメントルートはrootで指定するのかな。
設定の方法はなんとなく分かった。設定ファイルはどこにあるんだろう?
wikiに書いてある
http://wiki.nginx.org/GettingStarted/usr/local/nginx/conf/nginx.conf
というファイルがあるのか。
Ubuntuで見てみたけどない。
$ find /usr/ -name nignx.confを実行してみたけど見つからない。
http://articles.slicehost.com/2008/5/15/ubuntu-hardy-nginx-configuration//etc/nginx/nginx.conf
にあった。見てみる
$ less /etc/nginx/nginx.confserverブロックはない。
includeしているファイルで/etc/nginx/conf.d/*.confになにかあるか見てみたけど何もない。
$ ls /etc/nginx/sites-enabled/*も見てみる。
$ less /etc/nginx/sites-enabled/defaultにserverの記述があった。
localhostで/var/wwwがルート。
index.htmlがあるのかな。
サーバの起動は
http://wiki.nginx.org/NginxCommandLine
nginxで良いみたい。
$ nginx [alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2011/06/02 21:18:06 [warn] 27302#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:12011/06/02 21:18:06 [emerg] 27302#0: mkdir() "/var/lib/nginx/body" failed (13: Permission denied)sudoで実行してみる。
$ sudo nginx sudo: cannot get working directoryパスワードをいれたけど、反応がない。
起動しているのかな?
http://localhost/
にアクセスすると403 Forbidden
http://localhost/index.html
は404 Not Found
動いている事は動いているみたい。
$ ps ax | grep nginx 26719 pts/13 S+ 0:00 man nginx 27317 ? Ss 0:00 nginx: master process nginx 27318 ? S 0:00 nginx: worker process 27342 pts/7 S+ 0:00 grep --color=auto nginxmaster process nginx、worker processというのが起動している。
$ less /var/www/nginx-default/index.html見ると、welcom to nginx!って出るはずなのだけれど。
/var/wwwにコピーしてみる。
$ sudo cp /var/www/nginx-default/index.html/var/www/ sudo: cannot get working directoryコピーされているけど、このcannot get working directoryって何だろう?
再起動はしないでアクセスしたら表示された!
/var/www/hoge.html
を作成してアクセスしてみたら、きちんと表示された。
http://localhost/nginx-default/index.html
にアクセスしたところ、Welcome to nginx!が表示された。
他のwebサーバのように、ファイルを置いたりディレクトリを作るとそのままアクセスできる。よし。
Redmineをインストール
http://redmine.jp/
1.2がリリースされているので、ダウンロード。
nginxとPassengerの連携はここを見る。
http://doruby.kbmj.com/8y/20100628/Redmine_nginx_Passenger_
解凍して移動
$ cd ~/Download $ zxvf redmine-1.2.0.tar.gz $ sudo mv redmine-1.2.0 /var/www/
ImageMagickはインストールしない。
Passengerのインストール
rvmを切り替えようと思ったけど、Rubyのバージョンは1.8系じゃないとだめらしい。
http://redmine.jp/guide/RedmineInstall/
Ruby 1.8.7をインストール
$ rvm install 1.8.7
インストールしている間にDBをインストール
DBはMySQLを使う。
MySQLのインストール
Synapticパッケージ・マネージャで
mysql-server-core-5.1をインストール
間違った。。。
mysql-server
というパッケージがあったので改めてそっちもインストール。
clientとかもインストールされる。
おっ、インストール中にmysqlのrootパスワードを聞かれるのか。
Ruby1.8.7のインストールが終わったので、gemでPassengerをインストール。どのgemからも利用したいと思うので、globalにインストールする
$ rvm use 1.8.7 $ rvm gemset use global $ gem install passenger ERROR: Loading command: install (LoadError) no such file to load -- zlib ERROR: While executing gem ... (NameError) uninitialized constant Gem::Commands::InstallCommand
またこれ系か。
Ubuntuにインストールしてしまえば良いのかもしれないけど、rvmで出きることはrvmで対処する。
zlib、opensslは必要なのでインストールしておく。
irbが文字化けするといやなのでreadlineもインストール
$ rvm package install zlib openssl readline
...3つインストールされると思ったら先頭のzlibだけ。
1つづつインストール
$ rvm package install openssl
インストールしている途中にMySQLのインストールが終わった。
確認。
$ mysql -u root -p mysql > show databases;
redmine用にユーザを作っておく。
create database redmine character set utf8; create user 'redmine'@'localhost' identified by 'my_password'; grant all privileges on redmine.* to 'redmine'@'localhost'; exit確認ok。
opensslのインストールがまだ終わらない。
$ rvm package install readline
zlibやopensslをインストールした後は、Rubyもインストールしなおす必要があるのかな?面倒だからそのままにしてPassengerをインストール
$ gem install passenger ERROR: Loading command: install (LoadError) no such file to load -- zlib ERROR: While executing gem ... (NameError) uninitialized constant Gem::Commands::InstallCommandやっぱり駄目か。
Rubyをインストールしなおす。
$ rvm install 1.8.7 --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-readline-dir=$rvm_path/usr
インストール完了
passengerのインストールを再開
$ gem install passenger
あれ?インストール後にヒントって出てこないのか。
インストール先の確認
$ passenger-config --root /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/gems/passenger-3.0.7
と、ここまで来て、まずはRedmineをwebricで動かしてみる。
$ cd /var/www/redmine-1.2.0/ $ mv config/database.yml.example config/database.yml $ vi config/database.yml
端末のパス部分が長い。
今更ながらbashのプロンプトを変更する。
.bashrcのrvmの設定の上に、下記を記述。
PS1="[\W]\$ "
$ vi ~/.bashrc $ source ~/.bashrc
変わった。
引き続きRedmine
$ rake config/initializers/session_store.rb (in /var/www/redmine-1.2.0) Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`
いやなエラーだな。i18nはgemを新しく作ってそっちを使うようにしよう。
[redmine-1.2.0]$ rvm gemset create redmine 'redmine' gemset created (/home/k10i/.rvm/gems/ruby-1.8.7-p334@redmine). [redmine-1.2.0]$ rvm gemset use redmine [redmine-1.2.0]$ gem install -v=0.4.2 i18n
端末のプロンプト部分を変えてからコピーしやすい。というか、表示されていても良い事にする。
インストール後にRedmineの続き
[redmine-1.2.0]$ rake config/initializers/session_store.rb (in /var/www/redmine-1.2.0) [redmine-1.2.0]$ rake db:migrate RAILS_ENV="production" (in /var/www/redmine-1.2.0) rake aborted! RubyGem version error: rack(1.3.0 not ~> 1.1.0)
読み方を忘れた。これは、1.1.0じゃないと駄目って事じゃないはずだった気がするけど、1.1.0をインストールしておけば間違いないはず。
[redmine-1.2.0]$ gem install rack -v 1.1.0再度migration
[redmine-1.2.0]$ rake db:migrate RAILS_ENV="production" (in /var/www/redmine-1.2.0) rake aborted! /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/md5.so: undefined symbol: rb_Digest_MD5_Init - /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/md5.so
rb_Digest_MD5が無いっていわれてる。
そういえば、rubyのMySQL APIはインストールしていない。
MySQL APIはglobalにインストールする。
[redmine-1.2.0]$ rvm gemset use global [redmine-1.2.0]$ gem install mysql Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
エラーがでた。ヘッダーファイルがない。devはインストールしていないはず。
エラーを見ると、lmsqlclientがnoになっているので、
libmysqlclient-devをSynapticパッケージ・マネージャからインストール
インストール後に再度MySQL APIインストール
$ gem install mysql完了。
再度migration
[redmine-1.2.0]$ rvm gemset use redmine [redmine-1.2.0]$ rake db:migrate RAILS_ENV="production" /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/md5.so: undefined symbol: rb_Digest_MD5_Init - /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/md5.so
あれ?また同じエラーだ。
MySQL APIは必ず必要だからインストールして問題ないけど、何が足りないのだろう?調べる。
http://stackoverflow.com/questions/3545118/faulty-ruby-compilation-with-rvm-getting-undefined-symbol-rb-digest-md5-init
$ sudo apt-get install zlib1g-dev libreadline5-dev libssl-dev libxml2-dev
rvmで解決出きるのであれば解決したい。
rvmのopensslがうまくインストールされていないのかな?
[redmine-1.2.0]$ ls /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/ bubblebabble.so md5.so rmd160.so sha1.so sha2.so
ファイルがあるけど、見れていないっぽいから、
rubyのインストールで--enable-sharedをつけた方が良かったのかな?
再度つけてインストールしてみる。
http://www.loveruby.net/ja//rhg/cd/build.html
$ rvm install 1.8.7 --enable-shared --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-readline-dir=$rvm_path/usr
再度migration
[ruby-1.8.7-p334]$ rake db:migrate RAILS_ENV="production" rake aborted! No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb) /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/gems/rake-0.8.7/lib/rake.rb:2377:in `raw_load_rakefile'
お、進んだけどまた違うエラー。パスを変更したのを戻していなかった。
[redmine-1.2.0]$ rake db:migrate RAILS_ENV="production" (in /var/www/redmine-1.2.0) rake aborted! /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/md5.so: undefined symbol: rb_Digest_MD5_Init - /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux/digest/md5.so
やっぱり同じエラーが出てしまう。参ったな。。。
rvmでのインストールは一度削除しないと駄目なのかな?
やってみる。
$ rvm remove 1.8.7 $ rvm install 1.8.7 --enable-shared --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-readline-dir=$rvm_path/usr $ rvm gemset use redmine $ rake db:migrate RAILS_ENV="production"
!!!うまくインストールできた。最初からremoveしておけば--enable-sharedは必要なかったのかな?もしかして先日のlibxml2もそうなのだろうか。。。
削除しようと思ったのは、
http://blesseddlo.wordpress.com/2010/07/30/install-redmine-on-centos5rhel5/
を見て。
進む。
$ mkdir tmp public/plugin_assets mkdir: ディレクトリ `tmp' を作成できません: ファイルが存在します mkdir: ディレクトリ `public/plugin_assets' を作成できません: ファイルが存在します
よしとしよう。。。
$ sudo useradd redmine $ sudo passwd redmine $ sudo chown -R redmine:redmine files log tmp public/plugin_assets $ sudo chmod -R 755 files log tmp public/plugin_assets $ ruby script/server webrick -e production /home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/fileutils.rb:243:in `mkdir': Permission denied - /var/www/redmine-1.2.0/tmp/pids (Errno::EACCES)
あれ?パーミッションがない。そうだよな...redmineユーザじゃないし。。。
元に戻そう。
$ sudo chown -R k10i:k10i files log tmp public/plugin_assets $ ruby script/server webrick -e production
http://127.0.0.1:3000/
admin/admin
アクセスできた。言語は日本語させておこう。
右上のMyAccountで、言語のリストボックスから日本語を選択して保存。
日本語になりました。
Redmineのインストールは完了。
それにしてもVM/UbuntuのせいなのWebricのせいなのか分からないけどサイトが凄く遅い。
nginxをwebサーバにしてRedmineを表示させる
webricはCtrl+cで落としておく
http://www.modrails.com/install.html
$ passenger-install-nginx-moduleおぉ、見慣れた最初の設定が出てきた。
足りないライブラリを教えてくれる。
gccもインストールされていなかったのね。。。
opensslとかzlibとかインストールの必要が出てきた。
rvmでいれたのは使えないのかな?(オプションとかあるのかも知れないけど)もうUbuntuでインストールしよう。
$ sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev zlib1g-dev E: ロック /var/lib/dpkg/lock が取得できませんでした - open (11: リソースが一時的に利用できません) E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。これを使う別のプロセスが動いていませんか?
Synapticパッケージ・マネージャが起動しているのか。一度閉じてインストールコマンドを実行。
インストール後に再度実行
$ passenger-install-nginx-moduleおぉ。nginxはここでインストール出きるのか。パッケージでインストールする必要なかったな。恐らくカスタムでインストールしようとするとオプションとか指定しないといけないんだろうな。
ここはダウンロードしてNginxをインストール。recommendedとなっているし。
Permission problems This installer must be able to write to the following directory: /opt/nginx But it can't do that, because you're running the installer as k10i. Please re-run this installer as root....sudoで実行しないとだめか。
$ sudo passenger-install-nginx-module sudo: passenger-install-nginx-module: command not foundあれ?コマンドがない。
$ which passenger-install-nginx-module /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/bin/passenger-install-nginx-module $ sudo /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/bin/passenger-install-nginx-module Could not find RubyGem passenger (>= 0)これは駄目か。
調べる
http://www.postal-code.com/binarycode/2008/05/21/installing-passenger-mod_rails-command-not-found/
直接実行すれば大丈夫なのか。
gemのロードパスを追加してみよう。
$ export GEM_PATH=/home/k10i/.rvm/gems/ruby-1.8.7-p334@redmine:/home/k10i/.rvm/gems/ruby-1.8.7-p334@global $ export PATH=${GEM_PATH}/bin:$PATH $ sudo /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/bin/passenger-install-nginx-module/home/k10i/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/site_ruby/1.8/rubygems.rb:900:in `report_activate_error': Could not find RubyGem passenger (>= 0) (Gem::LoadError)
駄目か。rvmにpassengerをインストールするものでも無いのかな。
! rvmsudoというコマンドがあった。
http://www.blog.bridgeutopiaweb.com/post/install-rvm-passenger-nginx-and-rails-3-on-ubuntu-lucid-lynx/
$ rvmsudo passenger-install-nginx-moduleインストールできた!インストール後のコメントは下記。
Nginx with Passenger support was successfully installed. The Nginx configuration file (/opt/nginx/conf/nginx.conf) must contain the correct configuration options in order for Phusion Passenger to function correctly. This installer has already modified the configuration file for you! The following configuration snippet was inserted: http { ... passenger_root /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/gems/passenger-3.0.7; passenger_ruby /home/k10i/.rvm/wrappers/ruby-1.8.7-p334@redmine/ruby; ... } After you start Nginx, you are ready to deploy any number of Ruby on Rails applications on Nginx. Press ENTER to continue. -------------------------------------------- Deploying a Ruby on Rails application: an example Suppose you have a Ruby on Rails application in /somewhere. Add a server block to your Nginx configuration file, set its root to /somewhere/public, and set 'passenger_enabled on', like this: server { listen 80; server_name www.yourhost.com; root /somewhere/public; # <--- be sure to point to 'public'! passenger_enabled on; } And that's it! You may also want to check the Users Guide for security and optimization tips and other useful information: /home/k10i/.rvm/gems/ruby-1.8.7-p334@global/gems/passenger-3.0.7/doc/Users guide Nginx.html Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-) http://www.modrails.com/ Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
パッケージでインストールしたnginxが起動しているのでストップさせる。
[redmine-1.2.0]$ ps ax | grep nginx 22467 pts/7 S+ 0:00 grep --color=auto nginx 27317 ? Ss 0:00 nginx: master process nginx 27318 ? S 0:00 nginx: worker process [redmine-1.2.0]$ sudo nginx -s stop起動
[redmine-1.2.0]$ sudo /opt/nginx/sbin/nginxhttp://localhost
にアクセス。
Welcome to nginx!が表示された。
Redmineのドキュメントルートを設定する。
passenger_enabled onとrootを設定 server { listen 80; server_name localhost; passenger_enabled on; root /var/www/redmine-1.2.0/public; #charset koi8-r; . . . $ sudo /opt/nginx/sbin/nginx -s stop $ sudo /opt/nginx/sbin/nginx
アクセスしてみる。
あれ?変わらない。指定した場所が悪いのかな。
locationのrootをコメントアウトしてみる。
$ sudo vi /opt/nginx/conf/nginx.conf location / { # root html; index index.html index.htm; }403 Forbidden
…
.rvmrcを書いてみる。
[redmine-1.2.0]$ vi .rvmrc rvm use 1.8.7@redmine [redmine-1.2.0]$ cd . $ sudo /opt/nginx/sbin/nginx -s stop $ sudo /opt/nginx/sbin/nginx
403 Forbidden
...
publicにおいてみる
[redmine-1.2.0]$ cp .rvmrc public/.rvmrc [public]$ cd public/ $ sudo /opt/nginx/sbin/nginx -s stop $ sudo /opt/nginx/sbin/nginx
403 Forbidden
...
$ rvm 1.8.7 --passenger $ sudo /opt/nginx/sbin/nginx -s stop $ sudo /opt/nginx/sbin/nginx
403 Forbidden
...
うーん。passengerはrvmでインストールしなくても良かったな。。。
でも勉強。
$ sudo rebootリブートしてみる。
なんか、凄く早くなった。
$ sudo /opt/nginx/sbin/nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] still could not bind()パッケージでインストールしたのが自動起動している。
$ sudo nginx -s stop $ sudo /opt/nginx/sbin/nginx403 Forbidden
...
変わらない。やっぱり設定が悪いんだろうな。
一日経った。再開。
落ち着いてやっていこう。
403って事はアクセス権がないのかな。
調べる。
ログには何か出ているかな。
$ tail -f /opt/nginx/logs/access.logアクセスすると、きちんとアクセスログは書き込まれる。
$ tail -f /opt/nginx/logs/error.log 2011/06/03 19:33:19 [error] 2233#0: *3 directory index of "/var/www/redmine-1.2.0/public/" is forbidden, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost"エラーログにも書き込まれている。
rootでの指定された箇所は参照されている。
ただしforbidden。
publicがrootになっているので、public/500.htmlにアクセスしてみる。
http://localhost/500.html
おっ、Internal errorのページが表示された。これはファイルどおりなのかな。
試しに、hoge.htmlを作ってアクセス。
きちんとアクセスできた。
ファイルが無いときはどんなエラーだろう。fuga.htmlにアクセス
404 Not Foundか。
indexの読み込みができていないよう。
public/index.htmlを作成してみる。
これはきちんと表示される。
redmineのコントローラーを確認。
webricでもう一度起動。
$ cd /var/www/redmine-1.2.0 $ rails server プログラム 'rails' はまだインストールされていません。 次のように入力することでインストールできます
あれ?Railsがインストールされていない。
そっか。Rails2か。
$ script/server /var/www/redmine-1.2.0/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:620:in `real_connect': Access denied for user 'root'@'localhost' (using password: NO) (Mysql::Error)おっ、MySQLが起動していない。再起動させたからだろう。
起動はどうやってするんだろう。調べる。Redhat系のserviceがあるはず。
serviceコマンドがあった。
$ sudo service mysql start start: Job is already running: mysqlあれ?起動しているのかな。
$ ps ax | grep mysql 1019 ? Ssl 0:01 /usr/sbin/mysqldなにか動いてる。
再度Redmineを起動と思ったら、-eがぬけているじゃないか。
$ script/server webrick -e production起動した。
http://127.0.0.1:3000/
にアクセスしてみる。
あれ?index.htmlって表示されている。nginxで書いたのが表示されている。テスト用で書いたpublic/index.htmlは削除。
Ctrl+zでwebricをバックグラウンドに移動させて
$ rm public/index.html
fgでフォアグラウンドに戻す。
アクセス。普通のredmineの画面。
ログインのページは
/loginなのか。
nginxでアクセスしてみよう。
http://http://localhost/login
404 Not Found
おっ、passengerを経由できていないっぽいぞ。
rvm+Nnginxでの記事があった。
https://rvm.beginrescueend.com/integration/passenger/
passengerのバージョンは3がインストールされている
$ passenger -v Phusion Passenger version 3.0.7.rvmrcに追加するのか。
どこのだろう。public以下に作るのかな?
昨日、試しに作ったのが残っているので、そちらを編集。
$ vi public/.rvmrc if [[ -s "/Users/k10i/.rvm/environments/ruby-1.8.7-p334@redmine" ]] ; then . "/Users/k10i/.rvm/environments/ruby-1.8.7-p334@redmine" else rvm --create use "ruby-1.8.7-p334@redmine" fi
config/setup_load_paths.rbを追加 if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm') begin rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME'])) rvm_lib_path = File.join(rvm_path, 'lib') $LOAD_PATH.unshift rvm_lib_path require 'rvm' RVM.use_from_path! File.dirname(File.dirname(__FILE__)) rescue LoadError # RVM is unavailable at this point. raise "RVM ruby lib is currently unavailable." end end
アクセスしてみよう。
403のまま。再起動が必要かな。
[redmine-1.2.0]$ sudo /opt/nginx/sbin/nginx -s stop [sudo] password for k10i: [redmine-1.2.0]$ sudo /opt/nginx/sbin/nginx
うーん。403のままだ。
passengerはglobalにインストールしたから.rvmrcではglobalを読み込んでみる。
念のため再起動。
駄目だった。。。
publicじゃなくて、rootに置いても駄目だった。うーん。
redmine(Rails2)は諦めて、rails3で動かしてみる。
$ cd ~/Desktop/hoge Using /home/k10i/.rvm/gems/ruby-1.9.2-p180 with gemset fwiffer $ gem install passenger $ sudo vi /opt/nginx/conf/nginx.conf passenger_root /home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/bin/passenger; passenger_ruby /home/k10i/.rvm/rubies/ruby-1.9.2-p180/bin/ruby; root /home/k10i/Desktop/hoge/public;
$ sudo /opt/nginx/sbin/nginx セグメンテーション違反です
なんだこれ。passenger_rootが悪いみたい。
うーん。もう一度passengerのコマンドを実行してみる。
$ rvmsudo passenger-install-nginx-module
passenger_root /home/k10i/.rvm/gems/ruby-1.9.2-p180@fwiffer/gems/passenger-3.0.7;と記述する必要があるのか。
さっきは、which passengerでのパスを書いた。
修正してnginxを起動
おぉ!動いた。Rails3には、publicの下に.rvmrcとか置いていない。ただnginx.confを修正しただけ。
うーん。
あれ?
http://localhost
ではRailsのトップが表示されるけど、
http://localhost/posts
にアクセスすると404 Not Foundだって。
production環境はmigrationしていなかったからかな?
$ rake db:migrate RAILS_ENV=production $ touch tmp.restart.txt
関係ないか。そもそも動いていたのかな?
[hoge]$ rails server -e production
http://127.0.0.1:3000/
Routing Error
...何これ。
nginxからはアクセスできたのじゃなかったのかな?
http://127.0.0.1:3000/users
こっちはアクセスできる。
productionだと、index.htmlは読み込まないのか。
[hoge]$ rails serverだと、
http://127.0.0.1:3000/
でアクセスできた。
passengerが動作していないような感じだよな。
おぉ!
passenger_enabled on;
をserverの下ではなくて、
location /
の下に記述したらエラーが変わった。
no such file to load -- bundler
bundlerが読み込めていない。
@fwifferがパスに出ているということはきちんとgemは読み込まれていると思うのだけれど。
https://rvm.beginrescueend.com/integration/passenger/
config/setup_load_paths.rb
を作成。(.rvmrcは記述していない)
作成後、
$ touch tmp/restart.txt
して再度アクセス。
no such file to load -- rack
おっ、進んでいるのかな?
config/setup_load_paths.rbの
下記のコメントを外して再度アクセス(今度はrestartしない)
# ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
# require 'bundler/setup
no such file to load -- bundler/setup
また変わった。
でもこれは違うと思うので、rackのエラーまで戻す。
先ほどのページの下部に
For Nginx users, replace the passenger_ruby line with:
passenger_ruby /home/wayne/.rvm/bin/passenger_ruby;
と書いてあったので、書き換えてnginxを再起動。
Cannot spawn application '/home/k10i/Desktop/hoge': Could not read from the spawn server: Connection reset by peer (104)
エラーが変わった。なんだろう。
nginxのエラーログを見ると、
Passenger ERROR (ext/common/ApplicationPool/../SpawnManager.h:220): Could not start the spawn server: /home/wayne/.rvm/bin/passenger_ruby: No such file or directoryそれはそうだ。wayneのままだ。
修正して再起動。
。。。エラーが変わった。
The given ruby environment requires ruby-1.9.2-p180 (versus ruby-1.8.7-p334) (RVM::IncompatibleRubyError)
...できた!
http://beginrescueend.com/integration/passenger/
を見て、--passengerを実行。
$ rvm 1.9.2 --passenger $ rrvm wrapper 1.9.2@fwiffer passenger
整理しないと駄目だな。
凄く時間がかかりました。
これ、redmineも動くかな。
動きました。
nginx.confで、
passenger_root
と
rootを変更。
passenger_rubyはそのまま。
それで、
$ rvm 1.8.7 --passengerを実行してniginxを再起動。
なるほど。そうしたらsetup_load_paths.rbや、.rvmrcは必要なのかな?
新しくRails3アプリを作って実験
$ cd ~/Desktop $ rvm use 1.9.2@fwiffer $ rails new fuganginx.confのpassenger_rootとrootを変更
nginxを再起動。
アクセスして、About your application’s environmentをクリック。
no such file to load -- bundler
と表示される。
setup_load_paths.rbが必要なのか。
[fuga]$ cp ../hoge/config/setup_load_paths.rb config/再起動はしないで、再度確認。
no such file to load -- bundler/setup
始めてのエラーだ。
.rvmrcもコピー
再起動はしない。
The rvmrc located in '/home/k10i/Desktop/fuga' could not be loaded, likely due to trust mechanisms. Please run 'rvm rvmrc {trust,untrust} "/home/k10i/Desktop/fuga"' to continue, or set rvm_trust_rvmrcs_flag to 1.
なるほど。一度有効にする必要があるのか。
[fuga]$ cd .再起動はしない
The given ruby environment requires ruby-1.9.2-p180 (versus ruby-1.8.7-p334)
nginxを再起動してみよう。
駄目だ。
このエラーは
rvm x.x.x --passenger
を実行すれば大丈夫なはず
$ rvm 1.9.2 --passengernginxを再起動
うまく表示できた。
rvm+passenger+Railsは、
setup_load_paths.rbも.rvmrcも必要。
0 件のコメント:
コメントを投稿