aptosid LAMPセット

LAMPというのはダイナミックなウェッブサーバーとしてよく一緒に使われているフリーソフトウェアの頭文字からついた呼び名です
Linux, オペレーションシステム
Apache, ウェッブサーバー
MySQL, データベースマネージメントシステム (データベースサーバー)
Perl, PHP, または Python, スクリプト言語

警告: 毎日使っているデスクトップPCを同時にインターネット上のウェッブサーバーとして使うことは絶対に避けるべきです。 ウェッブサーバーは専用のPCを使い、それ以外のどんな役目も兼ねないようにするべきです!

サーバーの使い方いろいろ:
a) (ネットからのアクセスを前提としない)ウェッブのデザインのためのローカルサーバー、ここで取り扱うのはこのケースです;
b) ネットから接続できる個人の"押入れ"サーバー;
c) ネットから接続できて一般に公表されている個人用ウェッブサーバー
d) 業務用のウェッブサーバー, これについてはマニュアルの範疇に収まらないのでここでは取り上げません

最低限の必要条件

最低でも256MBのRAMを。 mySQLのサーバーは多くのメモリを必要とするためこれ以下だといろいろな問題が起こります。 mySQLはメモリー不足になると"cannot connect to mysql.sock"(ソケットに接続できません)というエラーメッセージを表示します。

インストールが必要なパッケージ:

apache2
apache2-utils
apache2-mpm-prefork
php5 php5-common
mysql-server
mysql-common
libapache2-mod-php5
php5-mysql
phpmyadmin

警告

apt-get remove --purge splashy

スプラッシーがあるとmySQLに問題が起こります

Apacheの設定ファイルは/etc/apache2/apache2.confにあります。 webフォルダは/var/wwwです。

phpが正しくインストールされ正常に作動しているのを確認するには /var/www/ に下記の内容の test.php というファイルを作り、phpinfo() を実行します。

mcedit /var/www/test.php

# test.php
<?  phpinfo(); ?>

そしてブラウザで

http://localhost/test.php
または
http://あなたのIPアドレス:80/test.php

を開きます

を開くとそこにPHPの設定とデフォルト設定が表示されるはずです。

Apacheの設定ファイルで設定値を変えたり仮想ドメインを設定したりできます。

インストールがうまくいったかテストするにはブラウザに次のようにタイプします

http://あなたのIPアドレス/apache2-default/

インストールは正しく行われていれば、welcomeメッセージが表示されます。

Apache2のドキュメントルートの場所はデフォルトで /var/wwwです。 これを次のコマンド:

mkdir /home/myself/www
ln -s /home/myself/www /var/www

でホームディレクトリからシンボリックリンクすると、普通のユーザーとしてウェッブサイトを編集できるようになります。

FTPクライアント

まずSSHとセキュリティ のページを注意深く読んでSSHを使いましょう。 aptosidに含まれるKonquerorをFTPクライアントとして使うこともできます。

ウェッブサーバーのセキュリティ設定

Firewalls

あなたのサーバーにfirewallがないとしたら、まったくセキュリティがないのと同じです。 原則として*すべて*をブロックして、どうしても必要なものだけブロックを解除し、必要が済んだらまたブロックすることです!

21 (ftp)
22 (SSH)
25 110 (email)
443 (SSL http or https)
993 (imap ssl)
995 (pop3 ssl)
80 (http)
許されるのはこれだけです! 

デフォルトとしてサーバーのファイルを保護する

Apacheのデフォルトアクセスについてよく誤解があります。 ウェッブマスターが設定を変えない限り、通常のURLのマッピングルールに基づいてサーバーがアクセスできるファイルはウェッブのクライアントに送ってしまいます。

たとえば次の例を見てみましょう:

 1. # cd /; ln -s / public_html
 2. Accessing http://localhost/~root/

これでクライアントはファイルシステム全体が読めるようになってしまいました! このような事態を避けるためサーバー設定に次のようなブロックを入れます:

<Directory />
   Order Deny,Allow
   Deny from all
</Directory>

これでファイルシステムへのデフォルトアクセスを禁止できます。 ほかの<ディレクトリ>も同様にブロックしてアクセスが望まれるところだけが残るようにします。 一例:

<Directory /usr/users/*/public_html>
    Order Deny,Allow
    Allow from all
</Directory>
<Directory /usr/local/httpd>
    Order Deny,Allow
    Allow from all
 </Directory>

特に<Location>と<Directory>の関係について細心の注意を払いましょう。 たとえ<Directory /> がアクセスを許さなくてもその後の <Location /> がそれを無効にしてしまうこともあります。

同様にUserDirで遊ぶのも避けたほうが無難です。 もし"./"のようにセットされていると最初の例と同じことになってしまいます。 もしApacheの1.3以降を使っている場合、サーバー設定ファイルに次のような一行を入れることを強く勧めます。

UserDir disabled root

SSL

“apache2-ssl-certificate”スクリプトを実行します

# apache2-ssl-certificate

必要な項目を入力するため次のような画面が現れます。

Creating self-signed certificate
replace it with one signed by a certification authority (CA) enter your ServerName at the Common Name prompt. If you want your certificate to expire after x days call this programm
with -days x
-----
Generating a 1024 bit RSA private key
--------
writing new private key to '/etc/apache2/ssl/apache.pem'
--------
You are about to be asked to enter information that will be incorporated into your certificate request.
-----------
What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value,
----------
If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]:                   (国名コード 2文字)

State or Province Name (full name) [Some-State]:     (州または地方の名)

Locality Name (eg, city) []:                         (市町村名)

Organization Name (eg, company; recommended) []:     (組織名 会社名など)

Organizational Unit Name (eg, section) []:           (部課名)

server name (eg. ssl.domain.tld; required!!!) []:    (サーバー名)

Email Address []:                                    (Eメールアドレス)

“a2enmod ssl”スクリプトを実行する

 # a2enmod ssl

このスクリプトは自動的にmods- availableとmods – enabled の間にシンボリックリンクを作くります

/etc/apache2/sites-available/ の default というファイルのコピーを作ります

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

この新しい設定ファイルへのシンボリックリンクを作ります

#  ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
(または)
#a2ensite ssl

Apacheの基本設定を変更したい時は /etc/apache2/apache2.conf を、デフォルトのドキュメントルートを変更したいときは /etc/apache2/sites-available/default を編集してApacheサーバーを再スタートします。

Apacheサーバーを再スタートするコマンドは

#service apache2 restart

さて、今SSLをインストールしましたから /etc/apache2/ports.conf の中のポート番号をデフォルトの80からSSLの443に変える必要があります。

 Listen 443

/etc/apache2/sites-available/ssl (SSLサイト設定ファイルとして上のコマンドで使った名前のファイル)を編集してサイト名のポート番号80を443に変更します。

/etc/apache2/apache2.conf ファイルに次の2行を加えます。

  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/apache.pem

SSLCertificateFile /etc/apache2/ssl/apache.pemを編集しSSL電子証明書とkeyファイルの場所を入力します。 一例をあげると

SSLCertificateFile /etc/apache2/ssl/online.test.net.crt
SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key

ServerSignatureをoffにセットします, /etc/apache2/apache2.conf を次の指示にしたがって編集します。 まず次の2行を加えます。

 ServerSignature Off
 ServerTokens ProductOnly

indexファイルにデフォルト以外のタイプを加えたかったら /etc/apache2/apache2.conf の次の行をチェックします

 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

Apacheサーバーの再スタート

 service apache2 restart

これで練習用のテストサーバーの準備ができました。 このサーバーをネットにつなげたいと思ったら... ダメです!... インターネットのウェッブサーバー専用として他のPCを使うこと!

出典:

http://www.mysql-apache-php.com

http://httpd.apache.org/docs/1.3/misc/security_tips.html

http://www.debianhelp.co.uk/webserver.htm

Page last revised 14/08/2010 0100 UTC