UNIXやLinux: 2012年5月アーカイブ

自社サーバの話。

現在稼働中の Apache 2.2.19 が、mod_rewrite や mod_proxy を使えるように make してなかったので、再インストールするついでにバージョン上げとくか・・・と軽く考えたのが失敗だった(^^;

2.2系から、2.4系ってけっこう大幅に変更がかかってんのね・・・

インストール自体は今までの Apache 同様にすぐ終わったんだけど(ソースからコンパイルした)、httpd.conf とか、2.2系のものをそのまま使うのって無理なんじゃね。
まあ、そのへんは既に有名な話みたいで、「Apache 使い」なら知っていて当然のようなんだが、ここのところ Apache のセットアップ案件ってなかったし、別件で忙しくて、その手の話題を全然追っかけてなかったんだわ・・・と言い訳しとく(笑)
もっとも、大事なサーバの Apache なら、2.4系にするなんてことせんけどね。2.2系の最新の 2.2.22 にしてたわな。

新しく設定ファイルを全部書きなおすんなら問題ないんだけど、ただ、うちのサーバも、テスト用に色々 VirtualHost 立ててるし、https サーバも動いてるし、出来ればそのまま 2.2.19 で使ってた設定ファイル使いたいのよ。

ちゅーことで、以下のような対応をして、取り敢えず BASIC 認証かけてるサイト以外は CGI や PHP も含めて動くようになった。

・機能がモジュールに切りだされていて、ちゃんと LoadModule しないとエラーになるもの多数。
 例えば、unixd_module をロードしておかないと Invalid command 'User' になるとか、mime_module をロードしておかないと、Invalid command 'AddHandler' になるとか。
 結局、うちの設定だと、以下のようなモジュールのロードが必要だった。

LoadModule unixd_module modules/mod_unixd.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule mime_module modules/mod_mime.so
LoadModule alias_module modules/mod_alias.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule cgid_module modules/mod_cgid.so

・Ignoring deprecated use of DefaultType なエラーになるので、httpd.conf から DefaultType text/plain の行は削除。

・NameVirtualHost has no effect and will be removed in the next release なエラーが出るので、extra/httpd-vhosts.conf から該当行を削除。

・extra/httpd-ssl.conf の SSLMutex 行は、Mutex default ssl-cache に変更。

まあ、こう書くと簡単なんだけど、実際には Invalid command になったディレクティブがどのモジュールに関係しているかとか、なかなかそのものズバリの資料がなくて苦労したわ。

後は、BASIC 認証のためのアクセスコントロール設定の記述が、

Order allow,deny
Allow from all

であれば、

Require all granted

のように修正しないといかんらしい。

いっぱいあるよ、そういう記述。全部直すのか。やれやれ。(ま、このサーバで公開しているのは、ごく内輪のメンバー向けサイトかテストサイトだけなので、気楽に修正していくけどねぇ~)

<追記>
BASIC 認証がうまくいってなかったのは、単純にまだ必要なモジュールがロードされてなかっただけだった。
オープンソースな統合図書館管理システムである「Next-L Enju Leaf」の検証をしたかったので、自宅の FreeBSD 機に入れてみた。

wiki に install マニュアルがあるのだが、Linux と Mac OS X 向けの説明である。
ただ、FreeBSD も Linux と同じ UNIX 系の OS(FreeBSD は本物の UNIX。Linux は UNIX ライクな OS・・・なのだが、まあ、その辺の話は割愛)なので、このマニュアルで十分使える。

以下、非情に個人的なそのインストールメモ。

まず、必要なソフトウェアをインストール。
(もちろん、環境によってはこれ以外にも細々したものが必要になるかもしれない)

・Ruby 1.9.2以上推奨
 Ruby 1.9.3p194 (2012-04-20 revision 35410) をソースからインストール

・Ruby on Rails 3.2
 Rails 3.2.3 を gem install

・Java SE 6
 java version "1.6.0_07"
 Diablo Java SE Runtime Environment (build 1.6.0_07-b02) を ports インストール
 (SUN が、FreeBSD 向けのバイナリを提供してないんでね)

・PostgreSQL 8.4以上推奨
 元々、9.0.1 がインストールされている。
 が、Enju のインストールで古いと言われたので、9.1.3 をソースからインストール
 (本当は gem の問題で、9.0.1のままでも大丈夫だったのが後ほど発覚(^^;)

・memcached
 memcached 1.4.13 を ports インストール

・ImageMagick
 ImageMagick 6.7.5.10 を ports インストール

・node.js
 node v0.6.9 をソースからインストール

・Apache Solr 3.5.0以上
 Solr 3.6.0 を ports インストール

・Git
 「必要なソフトの一覧」に載ってないが、Git(分散型バージョン管理システム)も必要なのでインストールする。
 Git 1.7.10.1 を ports インストール。

この後、Enju Leaf のインストール。

うちの FreeBSD には sudo は入れてないので、root 権限が必要な作業は root になって行なう。(一般ユーザは、一応、enjuuser というのを作っている)

まず enju ファイルの取得と展開。
(ちなみに、以下の作業は、sh または bash 等の B シェル系で行なうこと)

# gem install bundler
# su enjuuser
% cd /vol1/usr/local/enju
% git clone git://github.com/nabeta/enju_leaf.git
% cd enju_leaf
% git checkout 1.0

PostgreSQL の初期データ作成。専用の PostgreSQL ユーザを作ってね。
(DB を新規に作れる権限を与えるのを忘れちゃ駄目だぞ!)

% su - postgres
% createuser enju
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE
% psql
Welcome to psql 8.2.17 (server 9.1.3), the PostgreSQL interactive terminal.

ALTER で enju ユーザのパスワードを設定。

postgres=# ALTER USER enju PASSWORD 'enjupassword';
ALTER ROLE
postgres=# \q
% exit

DB アクセスファイルを新しいユーザ用に編集。

% cp config/database.yml config/database_20120512.yml
% vi config/database.yml
% diff config/database.yml config/database_20120512.yml
17c17
<   password: enjupassword
---
>   password:
43c43
<   password: enjupassword
---
>   password:
51c51
<   password: enjupassword
---
>   password:

Enju Leaf本体のインストールを続ける。ここから root でね。
(別のエントリで詳細は書こうと思うが、俺のサーバの環境では取りあえず pg パッケージの最新バージョンが入らないので、バージョン '0.12.0' を使うよう Gemfile を予め修正しておく)

# cp Gemfile Gemfile_20120515
# vi Gemfile
# diff Gemfile Gemfile_20120515
31c31
<   gem 'pg', '0.12.0'
---
>   gem 'pg'
# bundle

DB の作成を。

# rake db:create:all
# rake db:migrate RAILS_ENV=production

これで、

enju_development
enju_production
enju_test

という3つの DB が作成される。

続けて DB アクセス時の暗号化に使う設定ファイルを作成。
secret_token.rb の EnjuLeaf::Application.config.secret_token を修正するが、セットするトークンは 30文字以上で。

# rake secret
# vi config/initializers/secret_token.rb

諸々のサーバを起動しておく。
(memcached は、/usr/local/etc/rc.d の下に実行ファイルが出来ている。/etc/rc.conf の編集も必要なので注意)

# rake sunspot:solr:start RAILS_ENV=production
# vi /etc/rc.conf

memcached_enable="YES"
を追加。

# /usr/local/etc/rc.d/memcached start

初期データの追加(管理ユーザのアカウント情報とかね)
それと、アセットパイプライン(JavaScript や CSS を結合することで、ブラウザからのリクエスト回数を減らす仕組み)のためのプリコンパイル済みのアセットを作成。

# rake db:seed RAILS_ENV=production
# rake assets:precompile RAILS_ENV=production

バッチ処理を cron に登録。

# vi config/schedule.rb

set :path, '/usr/local/enju/enju_leaf'
に変更

# whenever --update-crontab

そして、やっとこさサーバの起動。
(その前に PID ファイルを作成する tmp ディレクトリを作っておくのを忘れるな!)

# mkdir /usr/local/enju/enju_leaf/tmp
# chmod 777 /usr/local/enju/enju_leaf/tmp
# cd /usr/local/enju/enju_leaf
# RAILS_ENV=production script/delayed_job start
# rails server -e production

ようこそ!Enju Leaf の世界へ。

別のパソコンから http://192.168.XXX.XXX:3000/ にアクセスすれば、Enju Leaf のトップ画面が。

つーか、実際のところはこんなにすんなりとは行きませんでした(^^;
個々の苦労話は別のエントリーにて(^^;

20120517_enju.jpg

このアーカイブについて

このページには、2012年5月以降に書かれたブログ記事のうちUNIXやLinuxカテゴリに属しているものが含まれています。

前のアーカイブはUNIXやLinux: 2012年3月です。

次のアーカイブはUNIXやLinux: 2012年7月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら