これは自宅のUbuntu11.10にLAMP環境を構築したときの,自分用のメモです.
まずは,Apacheを入れる,のだがSSLを使う可能性を考慮して,OpenSSLを入れた.
ここから「openssl-0.9.8g.tar.gz」を落としてきて,解凍,makeしてinstallするだけ.
この辺は特につまづくこともなく完了.
# vi /etc/ld.so.conf.d/openssl.conf
ここに「/usr/local/ssl/lib」を追記する.
で,/sbin/ldconfigの設定ファイルにこのライブラリディレクトリを追加する.
# /sbin/ldconfig -p | grep /usr/local/ssl
libssl.so.0.9.8 (libc6) => /usr/local/ssl/lib/libssl.so.0.9.8
libssl.so (libc6) => /usr/local/ssl/lib/libssl.so
libcrypto.so.0.9.8 (libc6) => /usr/local/ssl/lib/libcrypto.so.0.9.8
libcrypto.so (libc6) => /usr/local/ssl/lib/libcrypto.so
本題のApache.
管理用のアカウントを作成しておく.
$ sudo groupadd -r apache
$ sudo useradd -r -g apache -s /bin/false -d /nonexistent apache
落としてきたaprファイル,.tar.bz2ファイルを解凍し,
$ ./configure
$ make
$ sudo make install
同じくapr-utilファイルも落としてきて,インストールする.
$ ./configure --with-apr=/usr/local/apr/bin/apr-1-config
$ make
$ sudo make install
httpdも同じく,tar.bz2ファイルを解凍し,インストールする.
configureのオプションがいろいろあるのだが,今回は
--enable-rewrite
--enable-proxy
--enable-userdir
を有効にした.
ちょっとまだ調べていないのだが,セキュリティの観点から以下のファイルは削除しておいた方が良い(らしい).
/usr/local/apache2/cgi-bin/printenv
/usr/local/apache2/cgi-bin/test-cgi
Apacheのインストールなどは,Windowsでも結構やったので,この先は楽々だ.
いつも通り,httpd.confの中身を少しいじって,サービスを開始してやればいい.
ちなみにhttpd.confは,「/usr/local/apache2/conf/httpd.conf」にある.
$ sudo /usr/local/apache2/bin/apachectl start
これでデーモンが起動する.あとは,httpd.confの中で設定したIPアドレスとポートを打ち込んで,ブラウザから確認できればいい.
■PHP
こちらも慣れっこである.
configureのオプションとして,
--with-apxs2=/usr/local/apache2/bin/apx2
--enable-mbstring
--with-mcrypt
--with-gd
とした.足らないモノがあった(libmcrypt,libxml2)が,とりあえず,ちゃんと警告してくれたので,調べてインストールすれば問題ない.
先ほどのhttpd.confにphp5のモジュールが追記されているはずである.
この先もWindowsの時と同様,php.ini-developmentもしくはphp.ini-productionを/usr/local/lib/php.iniにコピーする.
httpd.confに以下の行を追加.
<FilesMatch "\.ph(p|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
あとは,bodyタグ内にphpinfo();を呼び出すphpを記述したhtmlファイルを作成し,それをブラウザ側から呼び出せれば問題ない.
ついでに拡張モジュールもインストールした.
こちらは,tar.bz2を解凍したときに作られるファイル内の,/ext/xsl/の中に入っている.
$ phpize
$ ./configure
$ make
$ sudo make install
拡張モジュールがインストールされるフォルダは,make installすると表示されるので,そのディレクトリをphp.iniに追記する.
extension_dir = "
extension=xsl.so
で,拡張モジュールが有効になっていることを確認できる.
いよいよラストである.こいつが大物で,かなり苦労しました.
なにに苦労したかって,ソースからコンパイルしてもインストールできなかった.
ここまでソースからコンパイルして入れてきたけど,まずMySQLに関してはソースがどこで配布されているかがわかりにくい.
一応,公式サイトのOS選択から選べば,下の方にある.
http://www-jp.mysql.com/downloads/mysql/#downloads
で,初めに諦めて,apt-getからインストールしちゃったんですよね.
実はこれで全然問題ないと思うんですが,これを再インストールするときにちょっと注意.
インストールは,
$ sudo apt-get install php5-mysql mysql-server
とすればよかった.で,消すときは,
$ sudo apt-get remove php5-mysql mysql-server*
とやればいいはずなんですけどね,設定ファイルが残るんですよ.
mysql-commonも消さないといけない.
なので,
$ sudo apt-get remove --purge php5-mysql mysql-server* mysql-common
とします.ちなみに,大事な設定ファイルも消える可能性があるので,まずはシミュレーションしてみましょう.上記のapt-getのオプションに「-s」を追記します.
これで消えるので,あとはもう一度インストールするだけです.
ちなみに,ソースからやってみたんですけど,どうにも失敗する.
足らないモノがあるとかいう話ではなくて,mysqldがエラーで入らない.
MySQLだけパッケージからのインストールで,問題が発生するとすれば,phpからmysqlを呼び出すときに,参照するディレクトリが違うために接続できなかったりするかもしれない.
それは,どちらかの設定ファイルを書き換えればいいんだけど,やってみないと何とも言えない.
ただ,現状はまともに動いているので,ここにメモして満足することにします.
少し賢くなったこと:
initスクリプトの配置が必要だったので,やってみました.それ自体はどうでもいいんですが,Ubuntuには,/etc/rc.d/init.d/というディレクトリはない.
手動起動するデーモンのinitスクリプトは/etc/init.d/に置こう.
RHEL系は,/etc/rc.d/init.d/が/etc/init.d/にシンボリックしてるから,どっちに置いてもいいらしいんだけどね.