VirtualBox でLAMP

昨日のエラー Building The OpenGL support module [FAILED] は消えていましたが、今度はApache2 のhttpd.conf で、Cannot load /usr/local/apache2/modules/mod_ssl.so  into server: libssl.so.1.0.0 とエラーするので、OpenSSL をソースビルドでいれてみました。

LinuxにApacheとOpenSSLをソースからビルドしてインストールする – Qiita
http://qiita.com/DQNEO/items/3613cc1d87c01121a9e2

それでもエラーがなくならないので、yum から mod_ssl をインストールしたところ解決しました。OpenSSL とmod_ssl の違いが分かりませんが結果オーライということで。

[root@centos ~] yum install openssl-devel 
[root@centos httpd-2.2.31] cd modules/ssl
# /usr/local/apache2/bin/apxs -cia -DHAVE_OPENSSL -I/usr/include/openssl -lssl *.c

PHP は (2015年8月9日現在) 最新版、6.5.11 を./configure make make install して

./configure --with-apxs2=/usr/local/apache2/bin/apxs\
--with-iconv\
--enable-mbstring\
--with-mysql\
--with-libxml-dir=/usr/bin/xml2-config

phpinfo.php 表示できました。

phpinfo

apache2 が消えた

/usr/local/apache2 にApache2.2 をソースからインストールして、httpd.conf を編集中に突然、apache2 ディレクトリが消えました。yum からパッケージでインストールした OSインストール時に入っていた apache のhttpd.conf から書き写しをしていた折、ダウンロード、解凍した wordpress を当該ディレクトリに mv コマンドで移動しようとしていた矢先でした。こんなことってあるんですかね。たまげたなぁ~。誰かにハッキングされて消された、ハッキリ分かんだね。 仕方がないからソースからのインストール、(一日の) やり直しますよ、するするっ!

Apacheのソースは、 Download – The Apache HTTP Server Project http://httpd.apache.org/download.cgi#apache22 から最新版をダウンロード。2015年7月28日現在で、最新版はバージョンはapache2.2.31 (Apache 2.4 はインストールしたことある?)・・・ないです。ふ~ん。あっ(察し)。

ディレクトリ移動して httpd-2.2.x/を解凍したら

# cd /usr/local/src
# wget http://ftp.riken.jp/net/apache//httpd/httpd-2.2.31.tar.gz
# tar zxvf httpd-2.2.31.tar.gz
# cd httpd-2.2.31/

ディレクトリ移動して、以下の呪文を唱えます。 CentOSへApache2.xをソースビルドしてService登録する – Qiita

# ./configure --prefix=/usr/local/apache2 \
 --enable-suexec \
 --enable-cache \
 --enable-disk-cache \
 --enable-mem-cache \
 --enable-logio \
 --enable-header \
 --enable-ssl \
 --enable-rewrite \
 --enable-so \
 --enable-proxy \
 --enable-mods-shared=all

ちなみに私は、zlib がないっ!って怒られました。解決法は以下。仕事で使える魔法のLAMP(15):ライブラリが足りなくてビルドできないときは? – @IT

# yum install zlib zlib-devel

./configure をやり直して、続いて# root 権限で

# make
# make install

これで、/usr/local/apache2 にインストール完了です。このとき、設定ファイル httpd.conf は、パッケージインストール時の
/etc/httpd/conf/httpd.conf ・・・ではなく、/usr/local/apache2/conf/httpd.conf に作られます。ここから Apache HTTP Server の設定をしてゆくわけですが、諸先輩方の詳細な解説をリンクして割愛します。 コロのLinuxサーバー構築 – httpd.conf の設定 また起動コマンドも、パッケージとソースビルドでは異なっており、

# service httpd start (パッケージインストール)
# /usr/local/apache2/bin/apachectl start (ソースビルド)

となっております。 あと、覚えている限りですが PHP のインストールもメモしておきます。ソースからインストールする場合、以下のサイト(2015年7月28日現在、PHPバージョン 5.6.11)かミラーリンクをたどってWindows に保存または、リンクアドレスをコピーして、wget コマンドからダウンロード解凍します。 PHP: Downloads http://php.net/get/php-5.6.11.tar.gz/from/a/mirror

# cd /usr/local/src
# wget http://jp2.php.net/get/php-5.6.11.tar.gz
# tar zxvf php-5.6.11.tar.gz
# cd php-5.6.11/

php-5.x.x/ にディレクトリ移動して以下の呪文を唱えます。

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

すると、apxs がないっ!って怒られました。解決法は以下リンク。 [apache] モジュール追加でapxsが見つからない時の解決方法 | 迷走男子!!

# yum install -y httpd-devel

./configure のやり直し。ところが今度は、libxml2 がないっ!と怒られました。以下のサイトを参考にコマンド入力。 dage.jp » Apache2.2+PHP5.2 完全インストール – part2 – PHPインストール

# yum install -y libxml2 libxml2-devel

./configure のやり直しをします。→ PHP: インストール手順 – Manual

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-libxml-dir=/usr/bin/xml2-config

今度は成功です。

# make
# make install

(追記)PHP の設定を/usr/local/apache2/conf/httpd.conf で有効にするため下記設定を追加

LoadModule php5_module modules/libphp5.so [新規追加]
<IfModule mine_module>
・・・
AddType application/x-httpd-php .php [新規追加]
AddType application/x-httpd-php-source .phps [新規追加]
</IfModule mine_module>

https://www.stuffy.site/wordpress/index.php/2015/08/15/rebuild-php-on-virtualbox/

してhttpd.conf を編集、

・・・
<Directory "/usr/local/apache2/htdocs/wordpress">
     AllowOverride all
 </Directory>
・・・
 Alias /wordpress/ "/usr/local/apache2/htdocs/wordpress/"

WordPress をインストールして

http://ホストネームアドレス/wordpress/wp-admin/install.php

からセットアップ画面表示できました。

install.php

追記)http://ホストネームアドレス/ でアクセスさせたいときは、httpd.conf のDocumentRoot 設定を

・・・
DocumentRoot /usr/local/apache2/htdocs/wordpress

します。

総じて apache もPHPも、./configure make make install !! ./configure make make install !! て感じで・・・。

ホームディレクトリの公開

CentOS6 では、SELinux によりホームディレクトリの公開は制限されていました。apache にアクセス許可させる場合は、SELinux = Permissive にするように、一時避難的に下記の設定が必要でした。

[root@centos ~]# setenforce 0

試みに、httpd_enable_homedirs の論理パラメータを、getsebool コマンドを使って確認すると、

[root@centos ~]# getsebool httpd_enable_homedirs
httpd_enable_homedirs --> off

アクセス禁止になっています。設定を on に変更するには、setsebool コマンドで

# setsebool httpd_enable_homedirs on

にする必要があります。しかし、この設定はシステムを再起動すると元に戻ってしまいます。永続的に設定するには、-P オプションを指定します。

# setsebool -P httpd_enable_homedirs on

SELinux のお勉強もまあ、多少はね。

Linux サーバーセキュリティ 徹底入門 / 中島能和

51jemnVucZL__AA324_PIkin4,BottomRight,-33,22_AA346_SH20_OU09_

/home/*/public_html/ 設定

Apache でユーザーディレクトリごとにwordpress 公開する設定で迷ったのでめも。

参考 Apache/一般ユーザーの$HOME/public_htmlを公開する設定方法

Apache のhttpd.conf の、公開したいユーザーディレクトリを UserDir enabled gusachan と追記

#UserDir Public_html コメントを外す

UserDir disabled
UserDir enabled gusachan
UserDir public_html

/home/*/public_html/ 設定は、デフォルトでOK。しかし、Index.html ファイルがない場合、ディレクトリ一覧を表示する Indexes オプションは – を付けて表示しない設定にしたほうが良いかもです。

<Directory /home/*/public_html>
 AllowOverride FileInfo AuthConfig Limit
 Options MultiViews -Indexes SymLinksIfOwnerMatch IncludesNoExec
 <Limit GET POST OPTIONS>
 Order allow,deny
 Allow from all
 </Limit>
 <LimitExcept GET POST OPTIONS>
 Order deny,allow
 Deny from all
 </LimitExcept>
 </Directory>

ユーザーディレクトリのパーミッションは以下。

[root@centos home]# chmod o+x gusachan

[public_html] ディレクトリ以下に、wordpress/ フォルダをインストールする。所有権を apache グループの apache ユーザーに。

[root@centos public_html]# chown -R apache:apache wordpress/

これで、アドレス http://ホストネーム/~gusachan/wordpress/ でアクセスできました。