CentOS7の仮想サーバー構築にチャレンジ その8

CentOS7の仮想サーバー構築にチャレンジ その7 の続きです。そろそろサーバー構築シリーズも佳境です。今回はPHPをインストールし、ユーザーのホームディレクトリの配下ディレクトリの一部をWEBで公開するディレクトリにしてみたいと思います(レンタルサーバーなんかで公開される/home/hoge/public_htmlを個人レベルでやります)。

もくじ

  • 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 SuexecUserGroup hoge hoge ServerName hoge.com ErrorLog /var/log/httpd/hoge.com_error_log CustomLog /var/log/httpd/hoge.com_access_log combined DocumentRoot “/home/hoge/public_html” AddHandler php-cgi .php Action php-cgi /php-hoge Options FollowSymLinks ExecCGI DirectoryIndex index.html index.php AllowOverride FileInfo AuthConfig Limit Require method GET POST OPTIONS [/VIM] 実際に公開するサーバーで使う場合はこんな感じです。

さらに、 [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辺りの解説がひどいことになっていて申し訳ないです。。。

参考サイト

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: