Sunday, July 4, 2010

php5+mysql4のインストール

インストール順序があるらしい・・のか、php5を最初にインストールしようとしたら、解決できないものが多くて何度やっても入らなかった。

  1. mysql4
  2. apache2
  3. php5

の順序でインストールしたらうまくいった。

  1. #aptitude install mysql-server
  2. #apaitude install apahce2
  3. #aptitude install php5

sources.listにはjaistを設定して、特に躓くこともなくインストール完了。sslを使うときは更にopensslをインストールする。

#aptitude install oepnssl

apache2の設定と起動

編集するファイルは、/etc/apache2/以下で、

  • site-avairable/default
  • site-avairable/ssl (copy from default-ssl)

/etc/apache2/site-avairalbe/default を編集。ちなみに似たような名前のsite-enabledはavarirableのシンボリックリンクになっている。
編集内容はwwwのディレクトリの変更とcgi-binディレクトリ変更など。

<VirtualHost *:80>
        ServerAdmin MAILADDRESS ←★
        DocumentRoot /mnt/share/www/  ←★
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /mnt/share/www/>  ←★
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /mnt/share/www/cgi-bin/  ←★
        <Directory "/mnt/share/www/cgi-bin">  ←★
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

#    Alias /doc/ "/usr/share/doc/"    ←★ここから</Directory>までコメントアウト
#    <Directory "/usr/share/doc/">
#        Options Indexes MultiViews FollowSymLinks
#        AllowOverride None
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.0/255.0.0.0 ::1/128
#    </Directory>

Option Indexes を設定すると、そのディレクトリにアクセスした時ファイル一覧が見える。sslも使いたいので

#cp default-ssl ssl

としてオリジナルを残してからsslを編集。

sslのモジュールを有効にして、

#a2enmod ssl

これのみだと以下のようなエラーが出る。

SSL received a record that exceeded the maximum permissible length.

(エラーコード: ssl_error_rx_record_too_long)

sslの設定も有効にして、apache2を再起動。

#apache2ctl restart

個人で使う以外の運用は考えていないので証明書は設定しない。

php5の設定

場所は/etc/php5/apache2/php.ini 。文字コードの設定などを行う。特に何もしなくても実行出来るので割愛。

必要ならapacheでphpモジュールを有効にする。

#a2enmod php5

通常はこれだけで、phtml,phpという拡張子のファイルからphpが実行できる。(.htmlでは実行できない)

cgiと同じく実行ディレクトリを制限したい場合は、CGI版を使うらしい。(参考:aki-web PHP質問用BBS

(次のテストスクリプトを実行できず、必要であれば拡張子PHPのファイルをPHPだと認識させるため、site-avairable/defaultに下記追加する。

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

site-avairable/sslにはデフォルトで以下が記述されている。

<FilesMatch "\.(cgi|shtml|phtml|php)$">
               SSLOptions +StdEnvVars
       </FilesMatch>

設定を変えたらapache2を再起動。

テストスクリプトの実行

phpのスクリプトは、<?  ?>で囲んで書く。

#cat /mnt/share/www/test.php

<?

phpinfo();

?>

ブラウザでアクセスしてPHPの情報が表示されたらOK。

Hatena タグ: ,,,

【玄箱】cronのログ出力先変更

debian5.0(lenny)では、syslogdではなくrsyslogdが使われている。rsyslogd.confを編集。
  1. *.*;auth~ で始まる行にcron.noneを追加し、cron.*行をコメントアウトして有効にする
  2. /etc/init.d/rsyslog restart
#
# First some standard log files.  Log by facility.
# auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none;cron.none                -/var/log/syslog
cron.*                          /var/log/cron.log

参考:。。。わからなくなってしまった。。
Hatena タグ: ,

【玄箱】/etc,/home,/varのバックアップ

/etc, /home, /varをバックアップ。方針は
  1. /etc,/home,/varを/root/backupにコピー(rsync)
  2. コピーした/root/backup以下のファイルを一時保存ディレクトリにtarアーカイブする
  3. 作ったtarアーカイブを保存先のマシンに移動。(samba)
やることは、以前書いたLANDISKから玄箱へのデータバックアップとほとんど同じで、rsync,samba,cronを使う。今回はマシン間を移動するものがtarアーカイブというところが違う程度。
以下設定。
保存先マシン=$SERVERDIR
玄箱の一時保存ディレクトリ= $TMPDIR
tarアーカイブの名前=backup.tar.gz

以下shスクリプト。
#!/bin/sh
#cd /root/backup (rsync -acouv --stats --delete /etc /home /var ./ && tar czf /$TMPDIR/backup.tar.gz /root/backup/ && echo 'etc files bakup sccess.')||echo 'etc files backup failed.'
cd /$TMPDIR
 (mount -t cifs //$SERVERDIR/ /mnt/$SERVERDIR/ -o iocharset="utf8",credentials=/etc/samba/smb_credentials && cp /$TMPDIR/backup.tar.gz /mnt/$SERVERDIR/$DISTDIR && echo 'mount and copy succeed.')||echo 'mnt and copy failed.'
umount /mnt/$SERVERDIR/ rm /$TMPDIR/backup.tar.gz

rsyncで差分がなければ、以下の作業はすべて実行する必要がないが、rsyncの実行結果は常にファイル数などの表示なので、if文の引数にすることは出来ない。したがって、rsyncとtarアーカイブをグループ化し、mountとcpをグループ化して、残りは実行してもしなくても問題ないものだけ残した。 頻度は週1なので、もしcronのログが増えてうるさいと思えたら、その時にまた修正する。