複数人のPHP開発環境の構築【後編】
前回の記事の続きです。monakaice88.hatenablog.com
開発環境構築手順
- SElinuxの無効化(開発用だもん仕方ないね)
- ユーザの作成(開発者数分)
- SSH使用ユーザの設定(ファイルの転送で使用)
- ポート解放(80番、PHPインストール確認用)
- httpd設定
- PHPのインストール
- 複数httpd起動の設定 <-----------------------------------今回はここから
- ポート解放(開発用サイト分)
- XDebugのインストール・設定
複数httpd起動の設定
開発者用の設定ファイルを作ります。(今回はuser1、user2)
「/etc/httpd/conf」に設定ファイル「httpd.conf」を開発者それぞれの分を用意します。
[root@localhost ~]# cd /etc/httpd/conf [root@localhost conf]# cp httpd.conf httpd_user1.conf [root@localhost conf]# cp httpd.conf httpd_user2.conf
user1用の設定ファイル(/etc/httpd/conf/httpd_user1.conf)を以下のように編集します。
# 65行目 PidFile run/httpd.pid ↓ PidFile run/httpd_user1.pid # 136行目 Listen 80 ↓ Listen 81 # 242行目 User apache Group apache ↓ User user1 Group user1 # 276行目(確認) ServerName localhost # 292行目 DocumentRoot "/var/www/html" ↓ DocumentRoot "/home/user1/www/html" # 317行目 <Directory "/var/www/html"> ↓ <Directory "/home/user1/www/html"> # 484行目 ErrorLog logs/error_log ↓ ErrorLog logs/user1/error_log # 526行目 CustomLog logs/access_log combined ↓ CustomLog logs/user1/access_log combined
user2用の設定ファイル(/etc/httpd/conf/httpd_user2.conf)も同じように編集します。
ちなみに、使用ポートは82番とします。
ログの出力先ディレクトリ・ドキュメントルートを変更したので、
そのディレクトリを作成します。
[root@localhost ~]# cd /etc/httpd/logs/ [root@localhost logs]# mkdir user1 [root@localhost logs]# mkdir user2</pre> <pre class="brush: bash; toolbar:false;" title="ドキュメントルートディレクトリ作成">[root@localhost ~]# su user1 [user1@localhost root]$ cd [user1@localhost ~]$ mkdir -p www/html [user1@localhost ~]$ exit exit [root@localhost ~]# su user2 [user2@localhost root]$ cd [user2@localhost ~]$ mkdir -p www/html
以下のコマンドを入力し、設定ファイルが正しく記載されているか確認します。
[root@localhost html]# apachectl -f /etc/httpd/conf/httpd_user1.conf -t
ポート解放(開発用サイト分)
「httpd_user1.conf」・「httpd_user2.conf」のポート番号の設定値に合わせて、開放するポートを追加します。
[root@localhost ~]# vim /etc/sysconfig/iptables # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. :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 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 82 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
iptablesを再起動します。
# service iptables restart iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ] iptables: ファイアウォールルールを消去中: [ OK ] iptables: モジュールを取り外し中: [ OK ] iptables: ファイアウォールルールを適用中: [ OK ]
XDebugのインストール・設定
XDebugをインストールします。
[root@localhost ~]# pecl install xdebug
端末のインストールログに生成された共有ファイルのパスが表示されます。PHPの設定で使用するのでどこかにコピー&ペーストしておきます。
Build process completed successfully Installing '/usr/lib64/php/modules/xdebug.so' Release Warnings ================ p install ok: channel://pecl.php.net/xdebug-2.2.6 configuration option "php_ini" is not set to php.ini location You should add "zend_extension=xdebug.so" to php.ini
XDebug用の設定ファイルを作成します。XDebugの共有ファイルのパスを「zend_extension」に設定します。
[root@localhost ~]# vim /etc/php.d/xdebug.ini zend_extension=/usr/lib64/php/modules/xdebug.so xdebug.remote_enable=On xdebug.remote_port=9000 xdebug.remote_connect_back=On
※「xdebug.remote_port=9000」の設定より、ポート番号9000にデバッグ情報を送信しますので、ファイヤーウォール・統合開発環境の待受ポートの設定が必要です。
「user1」用のhttpdのドキュメントルートディレクトリ(/home/user1/www/html)に、.htaccessファイルを新規作成します。
.htaccessファイルには、XDebugのデバッグ情報を送る宛先IPアドレスを設定します。
; user1のPCのIPアドレスを記載する。 php_value xdebug.remote_host 192.168.255.1
また、勝手に.htaccessファイルが消されないように、ファイルの属性を変更します。
[root@localhost ~]# chattr +i /home/user1/www/html/.htaccess ↓解除する場合 [root@localhost ~]# chattr -i /home/user1/www/html/.htaccess
※参考[Linux] 削除できないファイルの作り方|A Day In The Boy's Life
(同じように「user2」用のhttpdのドキュメントルートディレクトリ(/home/user2/www/html)に、.htaccessファイルを作成します。)
以下のコマンドを入力することで、開発者ごとのhttpdを起動します。
[root@localhost ~]# apachectl -f /etc/httpd/conf/httpd_user1.conf -k start [root@localhost ~]# apachectl -f /etc/httpd/conf/httpd_user2.conf -k start
上記のコマンドの「start」を、「stop」・「restart」に変更すると、停止・再起動になります。
また、起動するたびにコマンドを入力しないといけないため、「/etc/rc.local」に以下のように追記して、自動的に「user1」・「user2」用のhttpdが起動するようにします
[root@localhost ~]# vim /etc/rc.local # 以下の2行を追記 apachectl -f /etc/httpd/conf/httpd_user1.conf -k start apachectl -f /etc/httpd/conf/httpd_user2.conf -k start
おまけ
PHPでセッションを使用している場合、「/var/lib/php/session」に権限が無いため、ファイルが作成されずにエラーになってしまいます。(httpd_user1.conf、httpd_user2.confのUser・Groupで設定したユーザ・グループでファイルを作成しようとするため)
そのため、「/var/lib/php/session」のパーミッションを変更します。
↓デフォルトのパーミッションの確認 [root@localhost ~]# ls -l /var/lib/php/ 合計 4 drwxrwx---. 2 root apache 4096 10月 30 13:17 2014 session ↓パーミッションの変更 [root@localhost ~]# chmod 777 /var/lib/php/session/ [root@localhost ~]# ls -l /var/lib/php/ 合計 4 drwxrwxrwx. 2 root apache 4096 10月 30 13:17 2014 session