さくらのVPS を改めて使いはじめる 9 - Ruby、Redmine、Subversion
さくらのVPS(v3) 2GB プランへの環境構築メモ 9。今回は Ruby、Redmime、Subversion のセットアップとデータ移行について書く。
-
2012/5/20 追記 :
- この記事を書いた数日後に Redmine 2.0 がリリースされ更新したので覚え書きをRedmine のバージョン更新として追加
Ruby
前に借りていた VPS 環境 (さくらのVPS 512MB) では Ruby Enterprise Edition 上で Redmine を動かしていたのだが Redmine 1.4 から Ruby 1.9 系に正式対応された。そこで今回は Ruby + Passenger の組み合わせを採用。Ruby 自体も最新のものを利用する。
まず Ruby をコンパイルするために必要なパッケージと関連ツールをまとめてインストールする。
$ sudo yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel mysql-devel httpd-devel ImageMagick ImageMagick-devel
余談だが、さくらのVPS(v3) の CentOS 6.2 環境だと EPEL リポジトリがはじめから有効らしい。バージョンの新旧さえ気にしなければ有名どころのパッケージはたいてい揃うのでありがたい。
次に Ruby 本体の最新版ソースを入手する。公式ページのダウンロードから HTTP ミラーへゆき、ソースを固めたファイルの URL を調べておく。
現時点の最新版ソースは ruby-1.9.3-p194 らしいので、これをユーザー HOME へダウンロード & 展開。
$ cd
$ wget http://core.ring.gr.jp/archives/lang/ruby/1.9/ruby-1.9.3-p194.tar.gz
$ tar zxvf ruby-1.9.3-p194.tar.gz
$ rm ruby-1.9.3-p194.tar.gz
展開した Ruby のソースをコンパイルする。RPM 化するのでインストールは実行せず make
までにしておくこと。
$ cd ruby-1.9.3-p194
$ ./configure
$ make
Ruby をコンパイルできたら前回セットアップした checkinstall を使って RPM 化する。
途中で「それらをパッケージから除外しますか?」というメッセージが表示されたら n を入力して Enter キーを押す。下記のコマンド例にも書いているが RPM 化の途中で 1 時間ぐらい待たさせる。その間は特にすることはないので放置してもよい。
$ sudo checkinstall --fstrans=no
Some of the files created by the installation are inside the home directory: /home
You probably don't want them to be included in the package.
それらを表示しますか? [n]:
それらをパッケージから除外しますか?(yesと答えることをおすすめします) [n]: n
tempディレクトリにファイルをコピー..
... 中略 ( ↑のメッセージで 1 時間ぐらい待たされた )
**********************************************************************
Done. The new package has been saved to
/root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm
You can install it in your system anytime using:
rpm -i ruby-1.9.3-p194-1.x86_64.rpm
**********************************************************************
RPM 化が終わると生成されたファイルのパスが表示される。それを参考にしてインストールを実行する。
$ sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm
準備中... ########################################### [100%]
1:ruby-1.9.3 ########################################### [100%]
インストールされたことを確認するために Ruby のバージョンを表示。
$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
RPM パッケージの詳細情報も確認しておく。
$ sudo rpm -qi ruby-1.9.3
Name : ruby-1.9.3 Relocations: (not relocatable)
Version : p194 Vendor: (none)
Release : 1 Build Date: 2012年04月30日 11時16分49秒
Install Date: 2012年04月30日 13時31分41秒 Build Host: akabeko.me
Group : Applications/System Source RPM: ruby-1.9.3-p194-1.src.rpm
Size : 475428049 License: GPL
Signature : (none)
Packager : checkinstall-1.6.3
Summary : Package created with checkinstall 1.6.3
Description :
Package created with checkinstall 1.6.3
きちんとインストールされてるので不要になった Ruby のソースを消しておく。
$ cd
$ rm -rf ruby-1.9.3-p194
これにて Ruby のセットアップは完了。
Bundler と Passenger
Redmine を動作させるために必要な Ruby Gem モジュールをセットアップする。
はじめに Bundler を入れる。これは Redmine のような Ruby on Rails アプリのための Gem 管理ツール。Redmine 1.4 からアプリの Gem 依存管理で使用されるようになった。
$ sudo gem install bundler --no-rdoc --no-ri
Fetching: bundler-1.1.3.gem (100%)
Successfully installed bundler-1.1.3
1 gem installed
つぎは Phusion Passenger。これは Apache や Nginx 上で Rails アプリを動かすために使用する。
$ sudo gem install passenger --no-rdoc --no-ri
Fetching: fastthread-1.0.7.gem (100%)
Building native extensions. This could take a while...
Fetching: daemon_controller-1.0.0.gem (100%)
Fetching: rack-1.4.1.gem (100%)
Fetching: passenger-3.0.12.gem (100%)
Successfully installed fastthread-1.0.7
Successfully installed daemon_controller-1.0.0
Successfully installed rack-1.4.1
Successfully installed passenger-3.0.12
4 gems installed
Passenger の Apache 用モジュールをインストール。
$ sudo passenger-install-apache2-module
... 中略 ...
--------------------------------------------
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/local/bin/ruby
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Press ENTER to continue.
--------------------------------------------
Deploying a Ruby on Rails application: an example
Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:
<VirtualHost *:80>
ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>
And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:
/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/doc/Users guide Apache.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.
最後の方に Apache 用の設定が表示されるのでメモしておく。この内容は Apache の httpd.conf 本体に書くのではなく専用ファイルを用意する。今回は passenger.conf
という名前で作成することにした。
$ sudo vi /etc/httpd/conf.d/passenger.conf
passenger.conf にさきほどの Apache 用設定を記述。ついでに Redmine を公開するときのディレクトリ設定も加えて保存。今回は http://ホスト名/projects
へ公開するため以下のようになる。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/local/bin/ruby
RailsBaseURI /projects
前の VPS では redmine というサブディレクトリにしていたが今回はサービス名を用いず projects
という汎用な名前にした。このようにすることで管理を他のサービスに変更したくなった場合でもサブ ディレクトリまでなら URL を維持できる。
Apache の設定チェックと再起動をおこない passenger.conf を読ませる。
$ sudo apachectl configtest
Syntax OK
$ sudo service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
これで Redmine を動作させるための環境が整った。
Redmine
Redmine をセットアップしてゆく。
はじめに MySQL 上へ Redmine 専用のデータベースとユーザーを作成。XXXXXXXXXXXXXXXX
部分はパスワードになる。あるていど複雑な文字列を指定すること。ユーザーは redmine@localhost にした。
$ mysql -u root -p
mysql> CREATE DATABASE redmine DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO redmine@localhost IDENTIFIED BY 'XXXXXXXXXXXXXXXX';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Redmine をインストールする。現時点の最新版は 1.4.1。イメージは RubyForge の Redmine プロジェクトに公開されているので最新版の tar.gz の URL をメモしておく。ここから入手したものを /var/lib/redmine に移動する。
$ cd
$ wget http://rubyforge.org/frs/download.php/76033/redmine-1.4.1.tar.gz
$ tar zxvf redmine-1.4.1.tar.gz
$ rm redmine-1.4.1.tar.gz
$ sudo mv redmine-1.4.1 /var/lib/redmine
Redmine をインストールしたディレクトリに移動。Bundler を使って必要な Gem を入れる。PostgreSQL や SQLite などは利用しないので without
オプションをつけて除外している。
$ cd /var/lib/redmine
$ sudo bundle install --without development test postgresql sqlite
Fetching gem metadata from http://rubygems.org/.......
Using rake (0.9.2.2)
Installing activesupport (2.3.14)
Installing rack (1.1.3)
Installing actionpack (2.3.14)
Installing actionmailer (2.3.14)
Installing activerecord (2.3.14)
Installing activeresource (2.3.14)
Installing coderay (1.0.6)
Installing i18n (0.4.2)
Installing mysql2 (0.2.18) with native extensions
Installing net-ldap (0.3.1)
Installing rails (2.3.14)
Installing rmagick (2.13.1) with native extensions
Installing ruby-openid (2.1.8)
Installing tzinfo (0.3.33)
Using bundler (1.1.3)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
これまでのバージョンだと ImageMagick と rmagick で互換や設定のトラブルが起きたものだが今回は特に問題なく終了。ほっとした。
次は Redmine のデータベース接続に関する設定。これは database.yml
というファイルに対しておこなう。初期状態では database.yml.example というサンプル ファイルが置かれているのでこれをコピーして編集する。
$ cd /var/lib/redmine/config/
$ cp database.yml.example database.yml
$ vi database.yml
このファイルを以下のように編集して保存する。adapter は mysql ではなく mysql2 になるので注意する。username (ユーザー名) と password (パスワード) はさきほど MySQL 上へ設定した内容になる。
# Default setup is given for MySQL with ruby1.8\. If you're running Redmine
# with MySQL and ruby1.9, replace the adapter name with `mysql2`.
# Examples for PostgreSQL and SQLite3 can be found at the end.
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: XXXXXXXXXXXXXXXX
encoding: utf8
セッション管理用の秘密鍵を生成する。これがないと Redmine の起動でエラーが発生する。
$ rake generate_session_store
(in /var/lib/redmine)
データベースを初期化。
$ rake db:migrate RAILS_ENV=production
(in /var/lib/redmine)
必要な gem が足りなかったり database.yml の設定を間違えた状態、例えば adapter が mysql2 ではなく mysql になっているとかだとエラーになるのでメッセージをよく読み修正すること。
これで Redmine のセットアップは完了。さっそく Apache の DocumentRoot 以下にシンボリックリンクを作成して Web に公開してみる。
$ sudo ln -s /var/lib/redmine/public /var/www/html/projects
ブラウザから http://ホスト名/projects
にアクセスすると Redmine のホーム画面が表示されるはず。
初期状態は admin ユーザーのパスワードが admin になっており非常に危険なのですぐに admin でログインしてパスワードを変更すること。
Subversion
Subversion をセットアップする。まずはインストールされていることを確認。
$ svn --version
svn, バージョン 1.6.11 (r934486)
コンパイル日時: Sep 27 2011, 15:29:25
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
入っているのでリポジトリのルートになるディレクトリを作成。
$ sudo mkdir /var/lib/svn
次にリポジトリをひとつ作成してみる。ここでは仮に example という名前にしておく。
$ sudo svnadmin create /var/lib/svn/example
sudo
経由で作成したディレクトリとファイルの所有者は root になるのだが Apache 経由でリポジトリにアクセスしたいので所有者を変更。確認のために中身を表示してみる。
$ sudo chown -R apache:apache /var/lib/svn/example
$ ls -l /var/lib/svn/example
合計 24
-rw-r--r-- 1 apache apache 229 4月 30 16:47 2012 README.txt
drwxr-xr-x 2 apache apache 4096 4月 30 16:47 2012 conf
drwxr-sr-x 6 apache apache 4096 4月 30 16:47 2012 db
-r--r--r-- 1 apache apache 2 4月 30 16:47 2012 format
drwxr-xr-x 2 apache apache 4096 4月 30 16:47 2012 hooks
drwxr-xr-x 2 apache apache 4096 4月 30 16:47 2012 locks
mod_dav_svn をインストールする。これを利用すると Apache 経由で Subversion のリポジトリを操作できる。Subversion 専用のポートを開放する必要がなくなり便利。
$ sudo yum install mod_dav_svn
... 中略 ...
Installed:
mod_dav_svn.x86_64 0:1.6.11-2.el6_1.4
Complete!
mod_dav_svn は Apache 用のモジュールなので /etc/httpd/conf.d に専用の設定ファイルを追加する。
$ sudo vi /etc/httpd/conf.d/svn.conf
以下のように編集して保存する。
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthType Digest
AuthName "Subversion Repository"
AuthUserFile /etc/httpd/conf.d/svn_auth
Require valid-user
</Location>
Location
ディレクティブにはリポジトリのルートを指定し、DAV も同様としている。
この指定だと全リポジトリに同じ設定が適用される。リポジトリを追加した場合でも conf ファイルの変更や Apache の再起動が不要なので便利。リポジトリごとに設定を分ける場合はディレクティブの指定を /svn/リポジトリ名
として SVNParentPath
の代りに SVNPath
、内容はリポジトリへのパスとする。
AuthType
以降はダイジェスト認証に関する設定。これをおこなっておくことで Web ブラウザや Subversion クライアントからリポジトリにアクセスしたとき、ユーザーとパスワードによる保護をおこなえる。
次は認証用ファイルを作成する。
前述の svn.conf の AuthUserFile
で指定したディレクトリに touch
コマンドでファイルを用意してパスワードを設定。USERNAME の部分は SVN のリポジトリにアクセスするユーザーとなる。
Redmine プロジェクトからリポジトリ参照するときこの設定が必要となる。Redmine にユーザーを作成済みならば、そのユーザーとパスワードを指定することで Redmine のログイン情報を利用したリポジトリ参照がおこなえて便利である。
$ sudo htdigest -c /etc/httpd/conf.d/svn_auth "Subversion Repository" XXXX
Adding password for XXXX in realm Subversion Repository.
New password:
Re-type new password:
最後に Apache の設定チェックと再起動をおこない、svn.conf を読ませる。
$ sudo apachectl configtest
Syntax OK
$ sudo service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
セットアップが完了したので Web ブラウザからアクセスしてみる。
さきほど作成した example リポジトリの場合、URL は http://ホスト名/svn/example
になる。ここにアクセスするとダイジェスト認証によってユーザーとパスワードを問い合わせられるはず。正しい内容を入力すればリポジトリの内容が表示される。
リポジトリと Redmine の関連付けについては以下の説明がわかりやすい。
環境の移行
既に運用されている Redmine から、新環境へ移行する場合の手順を書く。対象は Redmine と Subversion リポジトリ。まずは Redmine のデータベースを保存。出力先はユーザー HOME にしておく。ユーザー名が XXXX でデータベースが redmine なら以下のようになる。出力されるファイル名は redmine.sql
とした。
$ cd
$ mysqldump -u XXXX -p redmine > redmine.sql
今回はデータベースの移行だけ取り上げるが添付ファイルなどがあるならそれらも保存しておく。バックアップ対象となりえる構成物については以下を参照のこと。
つぎに Subversion のリポジトリを出力する。こちらも同様にユーザー HOME へ保存。出力はリポジトリ単位になるのでファイル名はリポジトリ.svndumpとしておく。XXXX
部分がリポジトリ名になる。
$ cd
$ svnadmin dump /var/lib/svn/XXXX > XXXX.svndump
出力されたファイルを新環境に送る。旧環境サーバーから直接 SCP コマンドで送信してもよいが手元に保存しておきたいのでローカルにダウンロード。その後 Tera Term や WinSCP などで新環境へ送る。以降はこれらのファイルが新環境のユーザー HOME 直下に置かれていると仮定して話を進める。
はじめに新環境の Redmine を非公開にする。
この記事の手順で環境構築したなら Redmine はシンボリックリンクで公開されているため、これを消すだけで非公開になる。本来ならメンテナンス用のページ (作業中です...とか表示しておく) を用意して移行が終わるまでそちらにリンクさせるほうが望ましいのだが、今回はやらない。
$ sudo rm -rf /var/www/html/projects
次に Redmine のデータベースを移行。念のため新環境で稼働中のデータベースを redmine-current.sql という名前でバックアップしておく。
$ mysqldump -u XXXX -p redmine > redmine-current.sql
データベースを作成し直す。redmine が空の状態になる。
$ mysql -uroot -p
mysql> DROP DATABASE redmine;
mysql> CREATE DATABASE redmine DEFAULT CHARACTER SET utf8;
mysql> exit;
旧環境から持ってきたバックアップを新環境のデータベースに取り込む。
$ cd
$ mysql -u redmine -p redmine < redmine.sql
Redmine のインストール先ディレクトリに移動してからデータベースのマイグレートを実行。
$ cd /var/lib/redmine/
$ rake db:migrate RAILS_ENV=production
(in /var/lib/redmine)
テーマやプラグイン、添付ファイルなどがあれば、それらも移行しておくこと。
Redmine 側の作業が終わったら Subversion のリポジトリを移行する。先に移行先リポジトリを用意して旧環境で出力したファイルを読みこむ。
$ cd
$ sudo svnadmin create /var/lib/svn/XXXX
$ svnadmin load /var/lib/svn/XXXX < XXXX.svndump
$ sudo chown -R apache:apache /var/lib/svn/XXXX
以上で移行は完了。シンボリックリンクを張り直して Redmine を公開する。
$ sudo ln -s /var/lib/redmine/public /var/www/html/projects
ブラウザでアクセスして Redmine の移行に成功していることを確認。
上記のスクリーンショットで使用しているテーマは A1 theme - Redmine plugins である。かっこよくて見やすい。かなりオススメ。
Redmine のバージョン更新
この記事を書いた後に Redmine 2.0 がリリースされたので 1.4.1 から更新した時の手順を記録しておく。はじめに Redmine を非公開にする。前述の環境移行と同様にシンボリックを消すだけでよい。
$ sudo rm -rf /var/www/html/projects
次に RubyForge の Redmine プロジェクトから最新版の tar.gz の URL をメモ。ここから wget コマンドでユーザー HOME にダウンロードし展開。その後 /var/lib/redmine-new
へ移動させる。
$ cd
$ wget http://rubyforge.org/frs/download.php/76134/redmine-2.0.0.tar.gz
$ tar zxvf redmine-2.0.0.tar.gz
$ sudo mv redmine-2.0.0 /var/lib/redmine-new
$ rm -rf redmine-2.0.0.tar.gz
これで /var/lib
以下に現行の redmine と最新の redmine-new
が格納された状態になったので以下のコマンドにより設定を引き継ぐ。
$ cd /var/lib
$ cp redmine/config/database.yml redmine-new/config/database.yml
$ cp -r redmine/config/email.yml redmine-new/config/email.yml
$ cp -r redmine/files/ redmine-new/
もしプラグインを追加インストールしていたならば Redmine 以下の vendor/plugins
もコピーしておく。重複するものが多いので plugins
ディレクトリではなく個別でコピーしたほうが、古いもので上書きする危険を避けられる。
ちなみに Redmine 2.0 ではプラグインのディレクトリが vendor/plugins
から Redmine のインストール ディレクトリ直下の plugins
へ変更されているので移行の際は注意すること。
引き継ぎが完了したらディレクトリ名を以下のように変更。
$ cd /var/lib
$ sudo mv redmine redmine-old
$ sudo mv redmine-new redmine
あと /var/lib/redmine/public
内に plugin_assets
ディレクトリが存在しない場合、Redmine の管理画面の情報に表示される Plugin assetsディレクトリに書き込み可能がエラーになるので作成しておく。
$ cd /var/lib/redmine/public
$ mkdir plugin_assets
Redmine のインストール ディレクトリに移動。必要な Gem を Bundler で一括インストールする。Redmine 2.0 では Rails 3 に対応したそうでインストールされる Rails は 3.2.3 になっていた。
$ cd /var/lib/redmine
$ bundle install --without development test postgresql sqlite
Fetching gem metadata from http://rubygems.org/.......
Using rake (0.9.2.2)
Installing i18n (0.6.0)
Installing multi_json (1.3.5)
Installing activesupport (3.2.3)
Installing builder (3.0.0)
Installing activemodel (3.2.3)
Installing erubis (2.7.0)
Installing journey (1.0.3)
Using rack (1.4.1)
Installing rack-cache (1.2)
Installing rack-test (0.6.1)
Installing hike (1.2.1)
Installing tilt (1.3.3)
Installing sprockets (2.1.3)
Installing actionpack (3.2.3)
Installing mime-types (1.18)
Installing polyglot (0.3.3)
Installing treetop (1.4.10)
Installing mail (2.4.4)
Installing actionmailer (3.2.3)
Installing arel (3.0.2)
Using tzinfo (0.3.33)
Installing activerecord (3.2.3)
Installing activeresource (3.2.3)
Using bundler (1.1.3)
Using coderay (1.0.6)
Installing json (1.7.3) with native extensions
Installing mysql2 (0.3.11) with native extensions
Using net-ldap (0.3.1)
Installing rack-ssl (1.3.2)
Installing rdoc (3.12)
Installing thor (0.14.6)
Installing railties (3.2.3)
Installing rails (3.2.3)
Installing prototype-rails (3.2.1)
Using ruby-openid (2.1.8)
Installing rack-openid (1.3.1)
Using rmagick (2.13.1)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:
<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
- 修正 2012/9/23
- これまで
bundle install
をsudo
経由で実行していたが、本日 Redmine 2.1 へ更新したときに改めて試したところsudo
は不要だった - むしろつけると command not found になるし permission 周りで厄介なことになるため内容を修正
- これまで
セッション管理用の鍵を初期化し、データベースをマイグレートする。
$ cd /var/lib/redmine
$ rake generate_secret_token
$ rake db:migrate RAILS_ENV="production"
$ rake db:migrate:upgrade_plugin_migrations RAILS_ENV=production
$ rake db:migrate_plugins RAILS_ENV=production
$ rake tmp:cache:clear
$ rake tmp:sessions:clear
- 修正 2012/6/9
- session_store.rb の生成コマンドに誤りがあったので修正
- 前は
rake config/initializers/session_store.rb
としていたが Redmine 2.0 以降はrake generate_secret_token
が正しい - 前のコマンドではエラーが発生する
- 2.0 以前で使用した
rake session_store.rb
を実行すると以下のように警告してくれる。 Note: The rake task generate_session_store has been deprecated, please use the replacement version generate_secret_token
これで更新完了。シンボリックリンクを張り直して Redmine を再公開する。
$ sudo ln -s /var/lib/redmine/public /var/www/html/projects
Redmine にログインしてバージョンなどを確認。
ばっちり。
...今回はここまで。次回の内容はとくに決めていない。phpMyAdmin か Git について書くかもしれない。
Comments from WordPress
- m.i 2012-07-16T10:01:09Z
Twitter覧のhatenaquestion さんのhttp://q.hatena.ne.jp/1339827568
と同じ現象が私もでました。
上のRubyの説明の
--- top -----------------------------
$ cd
$ rm -rf ruby-1.9.3-p194
--- end -----------------------------
がうまくいかない。エラーが出る。
私の場合、
1."cd"の問題は作業用ユーザーのディレクトリパーミッションが700になぜかなっていましたので
755に直す事により解決できました。
以下のurlを参考にさせて頂きました。
http://piyopi-yo.info/tori_wp/?p=107
2."rm -rf ruby-1.9.3-p194"も権限が無いとおこられてしまうので、
"sudo rm -rf ruby-1.9.3-p194"
で解決しました。
参考になればと思い報告までです。
- akabeko 2012-07-16T11:21:56Z
m.i さん、こんばんは。
ユーザー ディレクトリのパーミッションですが、このシリーズの手順でユーザー作成した場合、700 になります。これは「所有者のみ Read、Write、eXecute 可能」という意味になります。一方、755 は「所有者と同一グループに属するユーザー」と「他のユーザー」に Read を許可します。
すでに問題解決されたとのことですが、Read のみとはいえ、他人にユーザー ディレクトリへのアクセスを許可するのはセキュリティ上、好ましくない状態ですので、パーミッションを 700 へ戻すことをオススメします。
もしパーミッション関係で問題が出たら、ユーザー ディレクトリやシステムが予め用意しているディレクトリに対して操作するのではなく、問題の起きているファイルとディレクトリのパーミッションを確認 & 変更するほうが安全です。
- m.i 2012-07-17T11:43:17Z
akabeko さんご指摘ありがとうございます。
本日再度、該当の作業用ユーザーのホームディレクトリを確認したところ
所有者、所属グループともにrootになっておりました。
なので、こちらを作業ユーザーへchownコマンドにて変更しさらにパーミッションを700に変更しなおしました。結果、teratermからの接続も適切に行えました。
つまり、Rubyをインストールすると、作業用ユーザーのホームディレクトリの所有者、グループともに
変更される仕様なんでしょうか...ちょっと気持ち悪いですね。私以外にも同様の症状が2人ほどいるみたいなので間違いないような気がします。
- akabeko 2012-07-17T13:14:36Z
m.i さん、こんばんは。
Ruby のインストールでパーミッション変更されるのは考えにくいので、私の書いた手順のなかでミスを誘発しやすい箇所があるのかもしれません。たとえば chown/chmod を実行するとき、カレント ディレクトリが想定外の場所を指していて、偶然、ユーザー HOME に対する操作になってしまった、など。
logwatch を導入し、メールでログ送信しているなら、sudo 経由で実行したコマンドが記録されるので、そこから調べれば、原因の範囲を絞り込めそうな気がします。
とはいえ、問題は解決済みであること、問題発生から解決に至るまでの内容をコメントされていることから、ここまでのやりとりだけでも、既に有用な記録といえますね。
- m.i 2012-07-23T07:42:45Z
sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm
を実行すると、作業ユーザーのホームディレクトリの所有者、所属グループがrootになる事が判明しました。
以下に同様の障害が発生した方と対策が書かれています。
「$HOMEのアクセス権が変わる問題」というタイトルの箇所です。
http://blog.ao-oni.net/sakura-vps-006/
私自身は、今回checkinstallからrpmを作成する事をやめrpmbuildのコマンドにて地味にrpmを作成+インストールを行ったところ今回の問題は発生しなかったのでそのようにしました。
参考になればと思い報告までです。
- akabeko 2012-07-23T23:19:00Z
m.i さん、情報提供ありがとうございます。
いただいた情報を元に、ユーザー HOME のアクセス権が変更される問題について、週末あたり、この記事に追記を書く予定です。
私や、この記事を元に Ruby をインストールした知人の環境などでは問題に遭遇していなかったのでレアケースなのだと思っていたのですが、実は多くのユーザーの環境で発生していたのかもしれませんね。
- nashirox 2012-09-04T00:23:01Z
セッション管理用の秘密鍵生成コマンドですが、Redmine2.0から変わったようです。
↓に引用いたします。
http://sakamoto-san.com/redmine2-0_install_on_centos6-2.html
Redmine1.4の時と異なり、「セッションデータ暗号化用鍵の生成とテーブル作成を行います。」の最初のコマンドは、
rake generate_session_store
ではなく
(Note: The rake task generate_session_store has been deprecated, please use the replacement version generate_secret_token のエラーが出る)、 rake generate_secret_token
に変更となっています(普通は[変更点]としてマークアップするべきなのですが、Redmine屋もだらしないと思います。)
- a.y 2012-09-21T06:24:03Z
お世話になっています
手順通り進めてきて、rubyのインストール完了まで行きました。 次のコマンドを実行したら、エラーとなりました。
$ sudo gem install bundler --no-rdoc --no-ri sudo: gem: command not found
何か必要だったのでしょうか? もしくはどこかでミスしているのでしょうか?
※ちなみに、ホームのアクセス権限変更はこちらでも発生しました。 ※ご報告まで
- a.y 2012-09-21T07:18:31Z
※その後のご報告 ユーザをrootに変更したらコマンドが実行できました。