TOP
ページ最下部へ
2013年03月26日 17:06:31

NTP、apacheとPHPとSmartyとMySQL環境の構築

前回で、基本のみの構築ができました。これから色々と入れる作業になっていきます。
まず最初にNTPを入れます。時刻合わせを自動でしてくれるもの・・という理解でいいと思います。NTPは私のインストールでは入っていましたが、インストール方法の違いからインストールされていないかもしれません。そんな時はコマンドラインからインストール。

# yum -y install ntp

設定を書き換えます。

# vi /etc/ntp.conf

server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
 ↓この3行を下のように変える
server ntp.jst.mfeed.ad.jp

起動時に時間が大幅に狂っているとNTPが起動できないそうなので、起動前に手動で合わせます。

# ntpdate ntp.jst.mfeed.ad.jp

あとはNTPを起動させ、サーバー起動時に自動で起動するように設定します。

# /etc/rc.d/init.d/ntpd start
# chkconfig ntpd on

NTPの動作状態を見るときは、次のコマンドになります。

# ntpq -p

起動時の「ntpd」ではなく、「ntpq」なので注意です。
Webサーバー構築するためにapacheを入れます。

# yum -y install httpd   ← httpd(apache)インストール

設定の変更をします。

# vi /etc/httpd/conf/httpd.conf

で、設定ファイルの編集をします。まず、エラー時にOS名などを表示しないようにします。44行目辺りにある設定を変更します。

ServerTokens OS
             ↓変更
ServerTikens Prod

276行あたりにある設定で、サーバー名の指定を行います。

#ServerName www.example.com:80
↓行頭を消す↓ ↓ ↓ ↓OSインストール時の名前に変更
ServerName www.localhost.com:80

331行目辺りにある設定でCGI・SSIの使用許可をします。

Options Indexes FollowSymLinks
           ↓変更
Options Includes ExecCGI FollowSymLinks
                    ↑追加

338行目辺りにある設定で「.htaccess」の許可を指定します。

AllowOverride Note
              ↓変更
AllowOverride All

497行目あたりにある設定で、長すぎるURI(414エラー)をログに記録しないようにします。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{ReFerer}i\" \"%{User-Agent}i\"" combined
                          ↓変更
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{ReFerer}i\" \"%{User-Agent}i\"" combined

526行目辺りで、ログ記録方式に関する変更を行います。全て記録するなら変更の必要はないと思います。

#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
SetEnvIf Request_URI "default\.ida" no_log ← 追加行(wormからのアクセスをログに記録しない)
SetEnvIf Request_URI "cmd\.exe" no_log     ← 〃
SetEnvIf Request_URI "root\.exe" no_log    ← 〃
SetEnvIf Request_URI "Admin\.dll" no_log   ← 〃
SetEnvIf Request_URI "NULL\.IDA" no_log    ← 〃
SetEnvIf Remote_Addr 192.168.1 no_log      ← 追加行(内部からのアクセスをログに記録しない)
SetEnvIf Remote_Addr 127.0.0.1 no_log      ← 追加行(自ホストからのアクセスをログに記録しない)
CustomLog logs/access_log combined env=!no_log
                                   ~~~~~~~~~~~
                                    ↑ 追加。上記以外のアクセスをログに記録する

543行あたりにあるせっていで、エラーページでサーバーの情報を表示しないようにします。

ServerSignature On
                ↓変更
ServerSignature Off

561行目あたりにある設定を変更して、iconsディレクトリのファイル一覧を表示しないようにします。

<Directory "/var/www/icons">
    Options Indexes MultiViews FollowSymLinks  →  Options MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

766行あたりの設定で、標準で使用する文字コードの設定をコメントアウト。でも、これは要検証。
UTF-8で書くなら問題ない気がする。

AddDefaultCharset UTF-8
↓
#AddDefaultCharset UTF-8

803行目辺りの設定で、CGIスプリクトに「.pl」を追加する。

#AddHandler cgi-script .cgi
↓                          ↓追加
AddHandler cgi-script .cgi .pl

変更し終えたら、文法が間違っていないかテストします。コマンドで、

# /usr/sbin/apachectl configtest

と打ち込むことで、テストしてくれます。間違っていたときは、その箇所を指定してくれるので、その部分を直せばいいだけです。
編集が無事終わったら、テストページを削除します。

# rm -f /etc/httpd/conf.d/welcome.conf
# rm -f /var/www/error/noindex.html

Webのメインになる「/var/www/html」の所有者を変更し、一般ユーザーに開放します。

# chown -R user. /var/www/html/	← 「user」にインストール時に作ったユーザーネームを入れる。
httpdの設定がだいたい終わったので、php関連のインストールになります。

# yum -y install php php-pear php-mysql php-mbstring

  php           … PHP本体
  php-pear      … PHPのPearライブラリのモジュール
  php-mysql     … PHPからMySQLにアクセスするためのモジュール
  php-mbstring  … PHPでマルチバイト(MB)文字列を利用するためのモジュール

インストールが終わったら、phpの設定を変えます。

# vi /etc/php.ini

457行目辺りに、PHPで使用するメモリーの上限設定があります。defaultは128MBでした。必要に応じて加減して下さい。

memory_limit = 128M

729行目辺りに、httpのpostメソッドで行えるアップロードのデーター量の上限があります。defaultでは8MBになっています。必要に応じて加減して下さい。

post_max_size = 8M

878行目辺りには、PHPでアップロードするときの容量上限があります。defaultは2Mです。これも必要に応じて変更して下さい。

upload_max_filesize = 2M

基本ルールとして、「PHPの使用メモリ量 ≧ POSTで扱うデータ量 ≧ PHPアップロードファイル容量」を守らなくてはいけません。必要に応じて変更をして下さい。

php.confの編集も行います。こちらもいじらないといろいろ面倒です。

# vi /etc/httpd/conf.d/php.conf

私の入れたPHP5にはありませんでしたが、もし下記のような部分ああったら、無効化します。

LimitRequestBody 524288
↓追加
#LimitRequestBody 524288

この分があると、PHPで扱えるデータ量が制限され、php.iniからさらに制限をかけることになるので無効化し、制限の一本化を図ります。
標準では、「.php」という拡張子以外はPHPを実行出来ません。HTML内に組み込み簡易化を図るために、下記を追加します。

AddHandler php5-script .php .php4 .php5 .html .htm
AddType text/html .php .php4 .php5 .html .htm

また省略可能なファイル名も変更します。

DirectoryIndex index.php
                     ↓変更
DirectoryIndex index.html

これでapacheとPHPの設定が終わりました。サーバーを起動し、動作させます。また、再起動した時に自動で起動するように設定もします。

# /etc/init.d/httpd start
# chkconfig httpd on

導入直後は、/var/www/html/ が「localhost」となります。
データーベースMysqlを入れます。

# yum -y install mysql-server

特に設定はないので、起動させてからログインします。忘れやすいので、自動起動もセットしておきます。

# /etc/rc.d/init.d/mysqld start
# chkconfig mysqld on

# mysql -u root

インストール直後は、「root」のIDはありますがPASSWORDが設定されていません。放置することはセキュリティ的にも問題なので、設定をします。

mysql> SET PASSWORD FOR root@localhost=PASSWORD('password'); ← passwordに設定したい文字列を入れます。

パスワードを設定したら、一度終了させてパスワード付きで起動させます。

mysql> \q
bye

# mysql -u root -p
Enter password:    ← これが出たら、設定したパスワードを入れます。

ログインできたら、「use」コマンドで、Databaseを「mysql」切り替えて、Mysqlに接続できるユーザーを表示させます。

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user,password from user;

パスワード無しの匿名ユーザーを削除します。

mysql> delete from user where user="";

ユーザー「root」に対して、ホストは複数表示されていると思います。インストール時に設定したホストネームに対しても、パスワードを設定します。

mysql> SET PASSWORD FOR root@www.local.com=PASSWORD('password'); ← passwordは前回と同じように。

もし、ホスト名に「-」の文字を使った場合、そのままではそれ以降を誤判断してしまいエラーになります。そういう時はシングルクォーテーション「'」でホスト名をくくって指定します。

mysql> SET PASSWORD FOR root@'www.local-host.com'=PASSWORD('password');

インストール時には、試験用に「test」というデータベースのテーブルがあります。試験用なので削除します。

mysql> drop database test;

あとは、PHP等からのアクセスによって作っていくことになります。
Smartyは、php命令群でできています。なので、PHPが動くパスの通ったところに置けば動作します。まずサイトよりダウンロードして、自前で解凍・設置します。設置場所は、「/var/www/html/」にて作業します。

# cd /var/www/html/
# wget http://www.smarty.net/files/Smarty-3.1.13.tar.gz

解凍後、圧縮ファイルに要がないので削除。

# tar xvzf Smarty-3.1.13.tar.gz
# rm -f Smarty-3.1.13.tar.gz

名前にバージョンが入っていると、わかりやすいかもしれませんが、いろいろ面倒になるので、変更します。

# mv Smarty-3.1.13 Smarty

テンプレート置き場とそのコンパイル結果、及びキャッシュの置き場を作ります。コンパイルとキャッシュはapacheからの使用ですが、テンプレートは直に使うものですので、置き場所を工夫します。

# mkdir /var/www/html/templates
# mkdir /var/www/html/Smarty/templates_c
# mkdir /var/www/html/Smarty/cache

作ったディレクトリに、使用権限の変更等を行います。

# chown -R user. /var/www/html/templates
# chown -R apache. /var/www/html/Smarty/templates_c
# chown -R apache. /var/www/html/Smarty/cache
# chmod 775 /var/www/html/templates
# chmod 775 /var/www/html/Smarty/templates_c
# chmod 775 /var/www/html/Smarty/cache

Smartyのテストを行います。「/var/www/html/」にsmarty_test.phpというファイル名で、テストファイルを作ります。

# vi /var/www/html/smarty_test.php
<?php
// Smartyパス設定
define('SMARTY_PATH', '/var/www/html/Smarty/');
// Smartyのテンプレート置き場の指定
define('SMARTY_TEMPLATES_DIR', '/var/www/html/templates/');
// Smartyのコンパイル場
define('SMARTY_COMPIlE_DIR', SMARTY_PATH . 'templates_c/');
// Smartyのキャッシュ
define('SMARTY_CACHE_DIR', SMARTY_PATH . 'chache/');
// インスタンス生成
require_once(SMARTY_PATH . 'libs/Smarty.class.php');
$objSmarty = new Smarty();
// ディレクトリの指定
$objSmarty->template_dir = SMARTY_TEMPLATES_DIR;
$objSmarty->compile_dir = SMARTY_COMPIlE_DIR;
$objSmarty->cache_dir = SMARTY_CACHE_PATH;
//cache をoffにする
$objSmarty->caching = 0;
//javascriptのカッコと競合するため{}を{{}}に変更
$objSmarty->left_delimiter = "{{";
$objSmarty->right_delimiter = "}}";

// テンプレート変数の設定
$objSmarty->assign('message', 'Hello World!');
// テンプレート出力
$objSmarty->display('smarty_test.tpl');
?>

「/var/www/html/templates/」に、smarty_test.tplで以下の内容のファイルを作成します。

# vi /var/www/html/templates/smarty_test.tpl

<html>
<head>
<title>Smarty Test</title>
</head>
<body>
{{$message}}
</body>
</html>

パスの指定などを間違わなければ、ホストOSのブラウザで「192.168.xxx.xxx/smarty_test.php」と打ち込んで、「Hello World!」と表示されます。

今後、Smartyを使うときは、「// Smartyパス設定」「// Smartyのテンプレート置き場の指定」「// Smartyのコンパイル場」「// Smartyのキャッシュ」「// インスタンス生成」「// ディレクトリの指定」「//cache をoffにする」「//javascriptのカッコと競合~」の指定をPHPの中に入れておけば使えるようになります。




ページ最上部へ