CentOSサーバ構築 Apache,PHPセットアップ

やっとここまできました...

ここでは,Webサーバを構築し,PHPスクリプトを利用した動的ページが利用できるまでの環境を構築していきます.

まずは,オープンソースのWebサーバソフトウェアであるApacheをインストールします.
CentOSでは,「httpd」パッケージをインストールします.

01. 一般ユーザでログインしている場合は,suコマンドでrootになります.

$ su -
パスワード入力:

02. yumコマンドで,httpdをインターネット経由でインストールします.

# yum install httpd

※依存するパッケージも合わせて3つほどダウンロードされます.
 「Is this ok [y/N]:」と聞いてくるので「y」を入力してEnterキーを押します.

※「Complete!」と出ればOKです.

03. Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」を書き換えます.
  まずは.オリジナル(既存)の設定ファイルの複製をとっておきます.

# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.ORG

viエディタを使用して一部修正します.ServerNameの設定を変更します.

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

[/etc/httpd/httpd.conf の内容(抜粋)]

 :
#ServerName www.example.com:80
ServerName 192.168.56.102:80
 :

04. Apache(httpdデーモン)の自動起動設定を行います.
 まずは,MySQLの時と同様に現在の起動設定状況をチェックしてから変更します.

# chkconfig --list | grep httpd
httpd     0:off     1:off     2:off     3:off     4:off     5:off     6:off

自動起動をONに設定します.

# chkconfig httpd on
# chkconfig --list | grep httpd
httpd     0:off     1:off     2:on     3:on     4:on     5:on     6:off

05. それではApache(httpdデーモン)を手動で起動します.

# /etc/init.d/httpd start
Starting httpd:                                            [  OK  ]

06. ここで,別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.

URLとして「http://192.168.56.199/」を入力(IPアドレスはそれぞれ設定した仮想マシンのIPアドレスを指定)

→おそらく失敗します(接続できない).

07. (仮想マシン内部の)ファイアウォール設定を確認します.

# iptables -L

[iptablesコマンドの結果]

Chain INPUT (policy ACCEPT)
target     prot opt source       destination        
ACCEPT     all  --  anywhere     anywhere      state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere     anywhere           
ACCEPT     all  --  anywhere     anywhere           
ACCEPT     tcp  --  anywhere     anywhere      state NEW tcp dpt:ssh
REJECT     all  --  anywhere     anywhere      reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source       destination        
REJECT     all  --  anywhere     anywhere      reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source       destination

※現在のポリシーとしては,受信としてicmp(pingなどに利用)とsshのプロトコルだけAcceptで,
 後はRejectとなっています.よって,httpプロトコル(ポート80番)をAcceptするようにします.

08. 設定ファイルの確認
  ファイアウォール(iptables)の設定ファイルは,「/etc/sysconfig/iptables」です.

# cat /etc/sysconfig/iptables

[/etc/sysconfig/iptables の内容]

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

※これを直接エディタで編集し,iptablesのサービスを再起動させても良いのですが,もっと簡単なツール(system-config-firewall-tui)があるので,今回はそちらをインストールして利用します.

09. ファイアウォール設定ツール for テキスト版UI(system-config-firewall-tui)のインストール

# yum install system-config-firewall-tui

10. system-config-firewall-tuiによるファイアウォール(iptables)の設定

# system-config-firewall-tui

まず,最初の画面で,Firewall: [*] Enabled となっているのを確認して,「Customize」をTabキーで選択してEnterを押します.

この画面で,「SSH」がONになっているのを確認し,「WWW(HTTP)」を新たにONします.
その後,順に「Close」→「OK」→「Yes」としていくと,自動的にサービスが再起動して,設定が有効になります.

11. 再度,ファイアウォール設定を確認します.

# cat /etc/sysconfig/iptables
# iptables -L

12. 改めて,別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.
  URLとして「http://192.168.56.199/」を入力


※Apacheのテストページが表示されればOKです.

13. Webサーバが無事に動作することを確認したら,今度はPHPの環境をインストールします.
  インストールするパッケージは,以下の通りです.
  ・php … PHP本体
  ・php-mysql … PHPからMySQLにアクセスするためのモジュール
  ・php-mbstring … PHPでマルチバイト(MB)文字列を利用するためのモジュール

  yumで一度に入れてみます.

# yum install php php-mysql php-mbstring

※これら3つとは別に,これらに依存するパッケージ(モジュール)が3つインストールされます.

14. PHPの設定ファイル「/etc/php.ini」を編集します.
  編集する前に,オリジナルファイルを複製しておきます.

# cp -p /etc/php.ini /etc/php.ini.ORG
# vi /etc/php.ini

[/etc/php.ini の内容(抜粋)]

 :
;;display_errors = Off
display_errors = On  ← エラーがあった場合,Webブラウザにその表示をすることを許可
 :

その他の設定ファイルを確認だけしてみます.

# cat /etc/php.d/mysql.ini

[/etc/php.d/mysql.ini の内容]

; Enable mysql extension module
extension=mysql.so
# cat /etc/httpd/conf.d/php.conf

[/etc/httpd/conf.d/php.conf の内容(抜粋)]

#
# PHP is an HTML-embedded scripting language which attempts to make it
:
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
:
AddHandler php5-script .php
AddType text/html .php
:
DirectoryIndex index.php
:

15. PHPの実行確認のため,簡単なPHPスクリプトを埋め込んだページを作成してみます.
 ファイル名は「info.php」とし,Webサーバのドキュメントルートである「/var/www/html」ディレクトリに保存します.

# vi /var/www/html/info.php

[/var/www/html/info.php の内容]

<html>
<body>
<h1>info.php</h1>
<?php
    phpinfo();
?>
</body>
</html>

16. PHPをインストールしたことで,Apacheの設定ファイルを読み直す必要があるので,httpd(Webサーバ)を再起動します.

# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

17. 別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.
  URLとして「http://192.168.56.199/info.php」を入力

 次のように,PHPの関数「phpinfo()」が出力する結果(PHPの設定状況)が表示されればOKです.

【以下,研究室ゼミ専用です】

18. 次に,PHPで動作するMySQLのGUIツール(WebMySQL)をインストールします.
  パッケージファイル(webmsl_4.21J.zip)は,研究室共有サーバHuygens@workの中にあります.

  各自適当に,ホストマシン(Mac)のデスクトップにコピー(ダウンロード)してください.

19. ここで一旦,仮想マシンとの接続を切ります.

# exit
$ exit
logout
Connection to 192.168.56.199 closed.

20. ホストマシンのデスクトップ上にある「webmsl_4.21J.zip」ファイルを,仮想マシンのadminのホームディレクトリにSCPコマンドを使って転送します.SCPはSSHを利用したコピーで,リモートホストに任意のファイルを転送することが可能です.

まずは,ホストマシン上のデスクトップへカレントディレクトリを変更します.

$ cd ~/Desktop/

SCPコマンドを実行します.最後の「:(コロン)」は忘れずに!

$ scp webmsl_4.21J.zip admin@192.168.56.199:
admin@192.168.56.199's password: 

21. 無事に転送されたか,再度SSHでログインして確認してみます.

$ ssh admin@192.168.56.199
admin@192.168.56.199's password: 

$ ls
webmsl_4.21J.zip

※ちゃんと転送されていますね.

22. 転送されたZIPファイルを「/var/www/html」へコピーして展開します.
  権限のあるrootに変更してから,コピー操作をします.

$ su -
パスワード:
# cd /var/www/html/
# cp /home/admin/webmsl_4.21J.zip .

23. ZIPファイルを解凍(展開)します.

# unzip webmsl_4.21J.zip 

Archive:  webmsl_4.21J.zip
   creating: webmsl_4.21J/
  inflating: webmsl_4.21J/.DS_Store  
   :
  inflating: __MACOSX/webmsl_4.21J/._user_check.php  
# ls
info.php  __MACOSX  webmsl_4.21J  webmsl_4.21J.zip

24. 余計なディレクトリや必要なくなったZIPファイルを削除 (remove)します.

# cd /var/www/html
# rm -rf __MACOSX
# rm webmsl_4.21J.zip

25. ディレクトリ「webmsl_4.21J」へのシンボリックリンクを張ります.

# ls
info.php  webmsl_4.21J

# ln -s webmsl_4.21J webmsl
# ls -l

[lsコマンドの結果]

-rw-r--r-- 1 root root   69 Jun 15 13:48 info.php
lrwxrwxrwx 1 root root   12 Jun 15 13:58 webmsl -> webmsl_4.21J
drwxrwxrwx 5 root root 4096 Nov  3  2010 webmsl_4.21J

※これで,エイリアス「webmsl」で実体「webmsl_4.21J」アクセスできるようになります.

26. WebMySQLの設定ファイル「html_start.php」を編集します.

# cd webmsl
# vi html_start.php

[/var/www/html/webmsl/html_start.php の内容(抜粋)]

:
//MySQLフォルダ
//define("MySQL_F", "/usr/local/mysql/bin/");//for MacOSX(個別インストール)
//define("MySQL_F", "/usr/bin/");//for MacOSX(組み込み)
define("MySQL_F", "/usr/bin/");//for Linux       ← これだけを有効にし,他をコメントアウトします.
//define("MySQL_F", "D:\\MySQL\\MySQL Server 5.0\\bin\\");//for Windows
//define("MySQL_F", "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\");//for Windows

//許可するリモートアドレスの一覧
$permit_adr="127.0.0.1";
$permit_adr.=", 192.168.56.1"; ← 変更
:

27. 別のマシン(ホストマシン)のWebブラウザでアクセスしてみて確認します.
  URLとして「http://192.168.56.199/webmsl/start.php」を入力

Login-ID」はMySQLの管理者である「root」を,そしてrootのパスワードを入力して「Enter」をクリック


※MySQLのデータベース(テーブル)をブラウザで操作できるようになります.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中