since 2010-08
正式には apache httpd server。
Ubuntu 9.04 における作業記録。どこかのホスティングで何かをするための調査。
いわゆる LAMP 環境(ここではMySQL, PHP)を構築してみる。
バーチャルホスト(ネームベース)で wordpress を動かしてみることを目標にする。
ひとつのサーバで複数のドメインを運用し、さらにそれぞれのドメインで複数のサブドメインを運用する。
$ sudo aptitude update $ sudo aptitude install apache2 php5-mysql
これで /var/www/index.html が見える。
phpinfo.php を作って <?php phpinfo() ?> などとやれば、 ブラウザでサーバの情報が得られる。
サイト設定 /etc/apache2/sites-enabled/000-default
<VirtualHost *:80> # 以下略
の設定が書かれている。(このファイルはシンボリックリンク。実体は ../sites-available/default である)
同じディレクトリには default-ssl もあるが、https は動いていない。
このホストを hoge.net とする。
a.hoge.net が同じアドレスを指すように DNS を設定する。
/etc/apache2/sites-available/hogenet_a というファイルを作る。
<VirtualHost *:80> <Directory /home/username/htdocs/hogenet/a/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ServerName a.hoge.net DocumentRoot "/home/username/htdocs/hogenet/a" </VirtualHost>
これを sites-enabled からリンクする。
本当は a2ensite でやる。
$ sudo /usr/sbin/a2ensite hogenet_a
手でリンクする場合。
$ cd /etc/apache2/sites-enabled $ sudo ln -s ../sites-available/hogenet_a 100-hogenet_a
実体は /home/username/htdocs/hogenet/a/index.html など作る。
テスト:
$ sudo apache2ctl configtest
有効化する
$ sudo /etc/init.d/apache2 restart
これでブラウザから h ttp:/ /a.hoge.net を叩いて確認。
apache2 の再起動時に "apache2: Could not reliably determine the server's fully qualified domain name, … " が出るのを黙らせる。
$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 servername.topdomain servername
/var/log/apache2/*.log が巨大化するので、週ごとにファイル分割:
$ sudo apt-get install logrotate
設定変更するには /etc/logrotate.conf および /etc/logrotate.d/* を編集。
wordpress で ?p=1 でない parmalink を使えるようにする。
/etc/apache2/sites-available/the_subdomain で AllowOverride None を無効化
<Directory /home/username/htdocs/the_subdomain/> Options Indexes FollowSymLinks MultiViews => # AllowOverride None
$ sudo a2enmod rewrite Enabling module rewrite. Run '/etc/init.d/apache2 restart' to activate new configuration! $ sudo /etc/init.d/apache2 restart
ユーザ権限で CGI が動くようにする。
http://d.hatena.ne.jp/magicalhat/20081226/1230220014
$ sudo aptitude install apache2-suexec-custom $ sudo a2enmod suexec $ sudo /etc/init.d/apache2 restart
現状 phpinfo によると
APACHE_RUN_GROUP www-data APACHE_RUN_USER www-data
だが apache2handler の項目をみると mod_suexec が有効化している。
http://www.suphp.org/Home.html
PHPファイルを所有者の権限で動かす機能。
使うべきかどうかわからないが試してみた。
入れると ubuntu のパッケージに不具合が生じる可能性がある。phpmyadmin など。
$ sudo aptitude install libapache2-mod-suphp
phpinfo によると
Loaded Modules: ... mod_suphp
これで /etc/apache2/sites-available/the_subdomain を修正
User username Group groupname <VirtualHost *:80> <Directory /home/username/htdocs/the_subdomain/> Options Indexes FollowSymLinks MultiViews # AllowOverride None Order allow,deny allow from all </Directory> ServerName the_subdomain.domain.topdomain DocumentRoot "/home/username/htdocs/the_subdomain/" SuexecUserGroup username groupname </VirtualHost>
phpinfo で
Server API Apache 2.0 Handler
になっているのは mod_php5 が使われているということらしい。
apache2handler はこんどは
User/Group: username(1xxx)/1000
になった。
since 2010-12-08
/usr/local/apache2 にインストールした apache 2.0.64 にて。
configure オプションには –enable-proxy=shared を追加。
httpd.conf は下記:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
postfix 参照
別のページに移動する予定
$ sudo aptitude install mysql-server
パスワードをつけろと言われる。
root (mysql-passwd)
since 2010-12-06
古いバージョンの Linux 環境で新しい php を動かしたい。
http://httpd.apache.org/docs/2.0/install.html
検討中:
$ cd httpd-2.0.64/ $ sh configure --prefix=/usr/local/apache2 --enable-rewrite=shared --enable-proxy=shared --enable-so $ make $ su # make install
試験運用のためポート 8000 を使う。
# emacs -nw /usr/local/apache2/conf/httpd.conf Listen 8000
動かす:
# /usr/local/apache2/bin/apachectl start
http: / / server:8000/ が見える。
ログは下記:
$ lv /usr/local/apache2/logs/error_log
とめておく:
# /usr/local/apache2/bin/apachectl stop
php はここに:
http://www.php.net/manual/en/install.unix.apache2.php
configure で expr のエラーが出るときは:
$ cd php-5.3.3 $ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --enable-mbstring --with-iconv $ make $ su # make install # cp php.ini-development /usr/local/lib/php.ini
確認:
$ grep php5 /usr/local/apache2/conf/httpd.conf LoadModule php5_module modules/libphp5.so
その下に下記を追加:
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
phpinfo ファイルを作る:
$ cd /usr/local/apache2/htdocs/ $ sudo sh -c 'echo "<?php phpinfo() ?>" > phpinfo.php'
apachectl start して サーバー:8000/phpinfo.php を確認。
"/~username" を見えるようにしたいなら、httpd.conf で下記を:
<Directory /home/*/public_html> #AllowOverride FileInfo AuthConfig Limit Indexes AllowOverride All # omitted </Directory>