CentOS7の仮想サーバー構築にチャレンジ その8
投稿日:2016年07月01日
最終更新日:
もくじ
- CentOS7 ISOファイルの入手(その1)
- VMwareの準備(その1)
- 仮想マシンの作成(その1)
- CentOS7のセットアップ(その2)
- 初回ログイン(その3)
- ファイアウォール(iptables)(その4)
- sudoの有効化(その5)
- リモートからのrootログインの禁止設定(SSH)とセキュリティ強化(その5)
- Apacheのインストール(その6)
- WEBサーバーとして運用するための設定(その7)
- SFTPによるファイルのアップロード(その7)
- PHPのインストール(その8)
- ユーザーディレクトリでWEBサイトを公開する(その8)
- PHPをCGIモードで(ユーザー権限で)動かす(その8)
- デフォルトパーミッションの変更(その9)
- php.iniと.user.ini(その9)
- MySQLの導入(その10)
- phpMyAdminのインストール(その11)
- WordPressのインストール(その12)
PHPのインストール
PHPのインストール自体はyumを使えば一発で終わります。CentOS7で特に手を加えていなければPHP5.4がインストールされることになります(2015年12月現在)。remiリポジトリを利用してPHP5.6を入れる方法は後述します。 [VIM] sudo yum install php php-mbstring [/VIM] PHPのインストールが完了後、Apacheを再起動すれば、PHPが有効になります。 [VIM] sudo systemctl restart httpd [/VIM]
PHPの動作確認は、こんな感じのindex.phpを作成して配置し、アクセスしてみればOKだと思います。 [VIM] [/VIM] index.htmlとindex.phpが同一ディレクトリにある場合は、index.htmlが優先されるので、アクセスするときにきちんとindex.phpまで指定するか、index.htmlを削除しましょう。
remiリポジトリを使ってPHP5.6を入れる
RemiというリポジトリをCentOS7に追加すれば、標準でインストールされるよりも新しいバージョンのPHPを使うことができます。余裕がある人はぜひともチャレンジしてみてください。コマンドは以下(参考サイト→【CentOS7】REMI リポジトリをインストールする – Qiita CentOS6でyumが繋がらなくなった – C_6B4A2Bの日記) [VIM] sudo yum install epel-release [/VIM] 次に、以下のコマンドを打ってファイルを編集します。 [VIM] sudo vim /etc/yum.repos.d/epel.repo #編集はこんな感じ #以下は編集前 [epel] name=Extra Packages for Enterprise Linux 7 – $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch #このように編集(baseurlのコメントアウトを外し、mirrorlistをコメントアウト) [epel] name=Extra Packages for Enterprise Linux 7 – $basearch baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch [/VIM] 編集したら保存し、 [VIM] sudo yum update [/VIM] を実行してみましょう。次はRemiを入れます。コマンドは以下 [VIM] wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm sudo rpm -Uvh remi-release-7.rpm [/VIM] ここまででRemiリポジトリが使えるようになります。PHPインストールコマンドは以下(途中でなにか訊かれたらyと打ち込む) [VIM] sudo yum install –enablerepo=remi,remi-php56 php php-mbstring [/VIM] PHPインストール後の操作はRemiを用いない場合と同じです。 [VIM] sudo systemctl restart httpd [/VIM]
ユーザーディレクトリでWEBサイトを公開する
ここからだんだんレン鯖チックになってきます。これまでドキュメントルートは/var/www/html でしたが、ここをなんとか頑張って/home/hoge/public_htmlを公開します。まずは/etc/httpd/conf.d/userdir.confの編集です。 [VIM] sudo vim /etc/httpd/conf.d/userdir.conf #17行目を書き換える UserDir disabled #こうなる UserDir enabled #24行目のコメントアウトを外す #UserDir public_html #こうなる UserDir public_html #32行目を書き換える AllowOverride FileInfo AuthConfig Limit Indexes #こうなる AllowOverride FileInfo AuthConfig Limit #33行目に追記 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec #こうなる Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI [/VIM] ここまで終えたら保存します。次はディレクトリの作成です。 [VIM] #hogeはユーザー名 mkdir /home/hoge/public_html chmod 711 /home/hoge [/VIM] ユーザーディレクトリにアクセスする場合は、アドレスバーにサーバーのIPアドレス/~ユーザー名を打ち込みます。こんな感じです。 [VIM] #サーバーのIPは192.168.1.2 #ユーザー名はhoge http://192.168.1.2/~hoge/ [/VIM]
public_htmlディレクトリにindex.phpを置いてアクセスしてみました。だいたいこんな感じになると思います。この時は「Server API」が「Apache 2.0 Handler」となっており、モジュールモードでPHPが実行されています。
PHPをCGIモードで(ユーザー権限で)動かす
実際に運用する上では、モジュールモードで稼働させると色々と面倒なこともあります。そこで、それらの面倒事を取っ払うために、CGIモードに切り替えます。ここが踏ん張りどころです。頑張って次のコマンドを打っていきましょう。なお、ユーザーが複数いる場合は、それぞれのユーザーごとに人数分打っていきます。 [VIM] #例によってhogeはユーザー名 sudo mkdir /var/www/cgi-bin/hoge-cgi sudo chown hoge:hoge /var/www/cgi-bin/hoge-cgi chmod 711 /var/www/cgi-bin/hoge-cgi [/VIM]
次にシェルスクリプトの作成です(それに先立ってphp-cgiをインストールし、本体の在り処を調べています)。 [VIM] sudo yum install php-cgi sudo which php-cgi #結果 /bin/php-cgi #シェルスクリプト作成 vim /var/www/cgi-bin/hoge-cgi/php-cgi #以下の内容(2行)でおk #!/bin/sh exec /bin/php-cgi #保存後のコマンド chown hoge:hoge /var/www/cgi-bin/hoge-cgi/php-cgi chmod 755 /var/www/cgi-bin/hoge-cgi/php-cgi [/VIM]
ここからユーザーのディレクトリごとの設定です。今回は(ユーザー権限で実行させるので)VirtualHostも使います。
[VIM]
#VirtualHostの設定をここにまとめる
sudo vim /etc/httpd/conf.d/vhost.conf
#内容
NameVirtualHost *:80
ScriptAlias /php-hoge /var/www/cgi-bin/hoge-cgi/php-cgi
さらに、 [VIM] sudo vim /etc/httpd/conf.modules.d/10-php.conf #編集内容(少しだけ) #6行目のこれをコメントアウト LoadModule php5_module modules/libphp5.so #こうなる # LoadModule php5_module modules/libphp5.so [/VIM] この後以下のコマンドを打っていきます。 [VIM] #SELinuxによるユーザーコンテンツの公開制限を解除 sudo setsebool -P httpd_read_user_content 1 #PHPなどでのTCP接続を許可する(WordPressなどを使うなら必要) sudo setsebool -P httpd_can_network_connect 1 #Apacheなどの書き込み許可らしい sudo setsebool -P httpd_unified 1 #メディアアップロードを許可するらしい… sudo setsebool -P httpd_anon_write 1 #メディアアップロードを許可するらしい… sudo setsebool -P httpd_sys_script_anon_write 1 #suexecのありかを確認 sudo which suexec #結果 /sbin/suexec #suexecのパーミッションを捻じ曲げる sudo chmod 4711 /sbin/suexec #apacheを再起動 sudo systemctl restart httpd [/VIM]
PHPの設定とかがまだですが、多分これでレン鯖チックなPHP環境のWEBサーバーになると思います。後は普通にpublic_htmlの配下に公開したいコンテンツを送り込んでやれば多分いけます(上画像はCGIモードで稼働していると思われる図)。もっと実用的なサーバーにするための設定はまた次回に。SELinux辺りの解説がひどいことになっていて申し訳ないです。。。
参考サイト