apache2のインストールについて
大体、ここに書いてある通りです。
わからない時は、ここを参考にしてください。
HTTPD - Apache2 Web Server
http://doc.ubuntu.com/ubuntu/serverguide/C/httpd.html
Ubuntuのページにも書いたのですが、server版で作業してます。
Desktop版でもある程度一緒のはずですが、違うところは読み替えてください。(とはいえ、Portable Ubuntu 9.04(coLinux)でも一応は確認しました)
webサイトの確認は、Windowsから行っているのでスクリーンショットがWindowsでも誤解ないようにしてください(; ´д`)
インストール時のSoftware selection に LAMPをセレクトしておくと、インストールされているはずです、また起動時に自動で立ち上がっているはずです。
(以下のコマンドで確認可です。/usr/sbin/apache2 -k start ってのがたくさんあれば、すでにインストールされ起動しています。
ps ax | grep apache
)
インストールしていない場合は以下でインストールする。
sudo aptitude update sudo aptitude install apache2
ラクデスナ
/etc/init.d/apache2 start
で、起動。
デフォルトの設定だと、こんな感じ
また、インストールするだけで起動時に立ち上がるようになります。
設定ファイルは、debianの構成をうけついでいて、
httpd.confを直接弄るようなことはありません。
以下、/etc/apache2/ 内の簡単な説明
apache2.conf ←httpd.confの代わりにこれが読まれる。 ports.conf ←ポート設定 sites-available/ ←仮想ホストの設定はここにファイルを作る mods-available/ ←モジュールの設定はここにファイルを作る conf.d/ ←細かい設定はここにファイルを作る
設定を書き直したら、
/etc/init.d/apache2 force-reload
で設定を読みなおす。
以下で、いろいろやってみてます。
注意点としては、
apache2.conf自体はほとんど編集しません。
細かい設定は、conf.dに一個一個、個別にファイルを置いて設定するのがナウイです。
httpd.confもapache2.confから、読まれるので、httpd.confに一括で全部置く手もありです。
例えば、ローカルネットワーク用やサブネットワーク用のwebサイトで、
ポート80をそのまま使いたくない、なんて場合は、/etc/apache2/ports.conf を弄ります。
例えば、
Listen 8081
などとすると、http://(アドレス):8081/ でアクセスできるようになります。
/etc/apache2/conf.d/directory_settings
などというファイルを作って、共通のディレクトリ設定を置いておきます。
こうしておくと、仮想ホストや、ユーザー別の設定などで、あたかもデフォルトの設定のように共通で使われます。(httpd.confで書いてたころはこっちがデフォだろうけど)
<directory />
Options All # ←CGIとか使えるように
Options -Indexes # ←ディレクトリ一覧表示だけはしないように
AllowOverride All # ←.htaccessで設定上書きできるように
Order allow,deny
allow from all # ←全ホストからアクセス許可
</directory>
サブネット内だけにアクセスを許可するときは、
allow from all の all をサブネットワークアドレスに変更する。
例えば、以下のようにする。
Order allow,deny
allow from 123.456.789.0/24
この辺のアクセス権限の設定は、ミケネコの htaccess リファレンス が詳しいです。htaccess の解説になってますが、そのまま使えます。
/etc/apache2/conf.d/security などというファイルを作って
以下を記述
ServerTokens ProductOnly # Serverヘッダのバージョン番号表記等をなしに ServerSignature Off # サーバーが生成するページでバージョン番号等をなしに
バージョン番号の削除等はこちらが参考になります。
HTTP レスポンスヘッダの Apache バージョンを非表示にする
sudo /etc/init.d/apache2 restart
でapacheを再起動して、wget -Sをしてみて、ヘッダーの"Server" にapacheのバージョン番号などなければOK
wget -S http://(ホストのIPかアドレス)
ここでは、/home/wwwにホームを持つ www用のユーザーさんがいることが前提になっています。
デフォルトの/var/wwwでよいと思う人は飛ばしてください&読み替えてください。/home/wwwにおいているのは、/homeだけ別HDDにしていて取り回しをよくしている、という(うちの)運用のためと、昔からの(うちの)慣例のためです。慣例や運用に納得できないとか、ポリシーに合わない場合はご自分の環境に読み替えていただくとよいかと。
apacheを追加したときに追加されている(たぶん)、ユーザー"www-data" をそのまま使うことにします。
後はhtmlなどを置く /home/www/www と
ログを置く /home/www/log (←デフォルトの/var/logのままでいい人はいらないです)
も作っておきます。
cd /home/ sudo mkdir www sudo mkdir www/www sudo mkdir www/log sudo chown -R www-data:www-data www
後は、vipwでユーザーwww-dataのホームを変更します
sudo vipw
以下のように変更(/var/www→/home/www にするだけ)
- www-data:x:33:33:www-data:/var/www:/bin/sh + www-data:x:33:33:www-data:/home/www:/bin/sh
後は任意で、scpやsftpなどでユーザーwww-dataでファイルをアップロードできるように、
.ssh/authorized_keys を記述するなど、
したい人はやってみてください。
やる場合は ../ssh(sshd)の設定 を参考のこと。
※ユーザーwww-dataにはデフォルトでは、パスワードが設定されていませんが、
sudo su www-data
とすればwww-dataになれますので、
.sshを作ったり .ssh/authorized_keys を生成したりする場合はこれを試してみてください。
(sudo で全部作業すると権限内ディレクトリで補完が効かないなど、けっこう面倒)
注意としては sudoで.sshディレクトリなど作った場合は、最後に
sudo chown -R www-data:www-data (ディレクトリ)
をやっておくことです。
メインのサイトの設定をします。
例えば、こんな感じです。
以下の例では、defaultの設定をコピーして弄っています。
cd /etc/apache2/sites-available/ sudo cp default my_site sudo vi my_site :(設定後) sudo a2dissite default ←defaultの設定を無効に sudo a2ensite my_site ←my_siteの設定を有効に
設定例(/etc/apache2/sites-available/my_site)は、以下のような感じで、
上の「共通のディレクトリ設定」をやっていれば、
ディレクトリの設定は下記のように、書かなくてよいです。
NameVirtualHost *
<VirtualHost *>
ServerAdmin mail@localhost # ←管理者のメールアドレス
DocumentRoot /home/www/www # ←HTMLとか、置く場所
# ↓ログは、/var/logに保存しないようにしている
ErrorLog /home/www/log/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
customlog /home/www/log/access.log combined
</VirtualHost>
適当なHTMLを置いてみる例: index.html
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <META http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>TESTページ</title> </head> <body style="background: #d6dee0"> <h1>Hello, World!!</h1> Hello, hello, my world! </body> </html> |
/etc/apache2/mods-available/userdir.conf
を編集します。
下記の例では、上の「ディレクトリの共通の設定」を使っているので、
ディレクトリ設定をコメントアウトしています。
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<directory /home/*/public_html>
#allowoverride fileinfo authconfig limit
#options multiviews indexes symlinksifownermatch includesnoexec
</directory>
</IfModule>
などとします。
sudo vi /etc/apache2/conf.d/enable_cgi などとして、
中に以下を記述する。
(apache2.confの中身はできるだけ編集しない方向で)
AddHandler cgi-script .cgi
後はapache再起動。
以下は、perlのCGIを動かしてみた例:test.cgi
※実行権限はつけないとInternal Server Errorになりますので注意
1 2 3 4 5 6 | #!/usr/bin/perl $ENV{'TZ'} = "JST-9"; print "Content-type: text/plain\n\n"; print "Hello, CGI!\n"; print `date`; |
URLの書き換えエンジンであるmod-writeを設定する方法。
sudo a2enmod rewrite
あとはapacheの再起動でOK
/etc/init.d/apache2 start時などに、
Starting apache 2.0 web server... apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
などと言われる時。127.0.0.1が代わりに、グローバルアドレスの場合もある。
結論としては、自ホストのIPのDNSの逆引き設定ができていないため。
以下、解決法。
ようは、DNSの逆引き設定をしてやるのだが、やり方は、二通りある。
DNSサーバーの設定はまかせるとして、
/etc/hosts の書き方。
123.456.789.012 moge.moge-hoge.com moge
という風に追加してやる。すでに123.456.789.012の項があったら書き換える。
SSLについてはこちら
ログを置くディレクトリを変更した場合は、
/etc/logrotate.d/apache2 も以下のように変更する。
これをやっておかないとログが1個のファイルに増え続けますので注意。
下記は 新しいログ置き場が、/home/www/log/ にもある場合。
もし、VirtualHostごとにログを作っている場合は、
そのログディレクトリごとにスペース区切りで追加していけばよいと思います。
- /var/log/apache2/*.log {
+ /var/log/apache2/*.log /home/www/log/*.log {
weekly
missingok
logrotateはcronにより1日1回自動で動きますが、
すでにログがたまっているなどして手動でlogrotateを動かしたい場合は以下のようにします。
ちなみに、実際にローテートされるのがいやな場合(設定ファイルの記述ミスのみチェックしたい)は logrotate に -d をつけてください。
$ sudo logrotate -v /etc/logrotate.d/apache2 reading config file /etc/logrotate.d/apache2 reading config info for /var/log/apache2/*.log /home/www/log/*.log Handling 1 logs rotating pattern: /var/log/apache2/*.log /home/www/log/*.log weekly (52 rotations) empty log files are not rotated, old logs are removed considering log /var/log/apache2/access.log log does not need rotating considering log /var/log/apache2/error.log log does not need rotating considering log /home/www/log/access.log log does not need rotating considering log /home/www/log/error.log log does not need rotating not running shared postrotate script, since no logs were rotated
うまくいきました?
Show recent 10 comments. Go to the comment page.