#PHPで開発環境を構築するぞ
ここでは、PHPの開発環境を構築するための方法を書きます。
VirtualBoxを使ったテンプレな手法で環境構築をしていきます。
初学者向けの記事になります。
(Macで構築します)
##インストールするものとその解説
VirtualBox
ローカルマシンの親。複数のローカルマシンを管理します。
コマンドからもアプリからもマシンの起動や停止、マシンの除去もできます。
Vagrant
ローカルマシン1個あたりの種。
後に解説するVagrantfileがおいてある場所がローカルマシンの置き場。
1ローカルマシンにつき、1Vagrantfileがある。
CentOS7.2
Linuxの一種。ローカルマシンに入れるOSは新しめのほうがいいよね〜
ということで7.2。
PHP7.1
「え、新しめのほうがいいならなんでPHP7.2じゃないの?」
なぜなら、MySQLインストール時に入れるphpMyAdminというサービスがあって、
それは開発中のDBの管理にとても便利なので使いたい。
通常phpMyAdminは、インストール時にapacheの.confファイルが作成されてブラウザからアクセスして使用可能になるのだが、PHP7.2から.confファイルが生成されなくなったので、phpMyAdminが使えて且つPHP最新版ということでPHP7.1を選択。
Apache2.4
Webサーバーソフトウェア。LAMPと言われるように、PHPやCentOSと相性がいい。
1つのローカルマシンに対して、ホスト名を設定して複数のアプリケーションを動作させる際に、再起動したりファイルをいじったりと結構お世話になる。
MySQL5.6
RDB(リレーショナルデータベース)の管理システム。
ついでにphpMyAdminも入れます。
##VirtualBox・Vagrantのインストール、ローカルマシンの起動
###VirtualBoxのインストール
ここからインストール↓
https://www.virtualbox.org/
※セキュリティで止められた場合は、「システム環境設定」の「セキュリティとプライバシー」で許可してあげましょう
###Vagrantのインストール
ここからインストール↓
https://www.vagrantup.com/
###ローカルマシンの作成
以降、ターミナルでの作業
VirtualBox・Vagrantをインストールできたら、
PC内でローカルマシンを立ち上げる土壌はできました。
VirtualBoxでは、ローカルマシンをBoxという単位で管理しています。
なので、Boxを追加(add)してあげましょう。
ローカルマシンを追加したいフォルダに移動して、
http://www.vagrantbox.es
からCentOS7.2のBoxのURLを探し、
vagrant box add {お好きなBox名} {CentOS7.2のURL}
完了したら
vagrant box list
で存在するローカルマシンのリストが出てくるので、
先程追加したBoxの名前が出てくるかチェックします。
確認できたら、
vagrant init {Box名}
Vagrantfileが生成されるので、
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.33.10"
ip: "192.168.33.10"の先頭のコメントアウトを外します。
※複数のローカルマシンを立ち上げる場合はip: 192.168.33.1*の数字がマシン同士でかぶらないようにしたほうがいいです。うまく動作しない原因になります。
コメントアウトを外したら、Vagrantfileがあるフォルダ内で
vagrant up
でマシンを起動!! 初回は少し時間がかかります。
default: /vagrant => {vagrant upしたフォルダのパス}
....
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
上のような表示が出たら、問題なく起動していると思います。
ローカルマシンの現在の状態を確かめるには、
vagrant status
のコマンドを打ちます。
##必要なアプリケーションをインストールする
ここまで、VirtualBoxとVagrantを使って、CentOS7.2のローカルマシンを起動することに成功しました。
次は、CentOS7.2の中に、必要なアプリケーションをインストールしていきます。
インストールするのは、
PHP7.1、Apache2.4、MySQL5.6、phpMyAdminです。
まず、vagrant ssh
でCentOSにsshで接続します。
ユーザー名がvagrant@localhostになれば接続オッケー。
早速やっていきましょう。
###PHP7.1のインストール
参考記事:https://webbibouroku.com/Blog/Article/centos-php7
まずはパッケージ管理のシステムをインストールします
EPELリポジトリの追加
yum install epel-release
Remiリポジトリの追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
きちんと追加されているか確認します。
ls -l /etc/yum.repos.d
epel.repo、remi.repoなどに加え、remi-php71.repoが追加されているのが見えると思います。
このremi-php71.repoを使ってPHP7.1と、その他拡張機能をインストールします。以下コマンドを実行します。
yum -y install --enablerepo=remi,remi-php71 php php-mysql php-mbstring php-gd
※今後このyum installコマンドを実行しますが、-yをつけるとyes/noを聞かれることなく、自動的にyesが選択されます。
処理が終了したら、
php -v
でPHPのバージョンを確認。
PHP 7.1.25 (cli) (built: Dec 8 2018 13:52:58) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
ちゃんとバージョンがPHP7.1になっているかと思います。
php.iniの編集
参考記事:https://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e
次はPHPの設定ファイルをいじっていこうと思います。
PHPの設定は/etc/php.iniに書かれています。
参考記事のように、
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_charset = none
てな感じで編集してあげればいいと思います。
PHPの設定ファイルをいじったら、一旦exit
して、
vagrant reload
でローカルマシンを再起動してあげましょう。
###Apache2.4をインストールする
参考記事:https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/
もう1度vagrant ssh
で接続。
提供されているパッケージの確認とインストール
yum info httpd
とコマンドを打つと、
インストール済みパッケージ
名前 : httpd
アーキテクチャー : x86_64
バージョン : 2.4.6
リリース : 88.el7.centos
容量 : 9.4 M
リポジトリー : installed
提供元リポジトリー : base
要約 : Apache HTTP Server
URL : http://httpd.apache.org/
ライセンス : ASL 2.0
説明 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
という感じで、Apache2.4が提供されていることが確認できると思います。
確認できたら、
yum -y install httpd
でインストール!
処理が終わったら、httpd -version
でバージョン確認。
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 5 2018 01:47:09
しっかりインストールされています。
Apacheの起動と自動起動設定
インストールが終わったので、Apacheを起動します。
sudo systemctl start httpd.service
起動したか確認します。
systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2018-12-22 15:48:19 GMT; 49min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 909 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─ 909 /usr/sbin/httpd -DFOREGROUND
├─1606 /usr/sbin/httpd -DFOREGROUND
├─1607 /usr/sbin/httpd -DFOREGROUND
├─1608 /usr/sbin/httpd -DFOREGROUND
├─1609 /usr/sbin/httpd -DFOREGROUND
└─1611 /usr/sbin/httpd -DFOREGROUND
active(running)と出ているのでオッケーです。
では、自動起動設定もやってしまいます。
sudo systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
と出ていれば設定はオッケー。
###MySQL5.6のインストール
ではMySQLもインストールしてしまいましょう。
MySQL5.6のインストール
基本的には、以下の記事の手順のとおりです。
記事が激長になりそうなので、この記事に全てを委ねます。
https://weblabo.oscasierra.net/installing-mysql56-centos7-yum/
(確認コマンドもきちんと載っているので良記事)
rootユーザーのパスワード設定
ローカルサーバーに開発するアプリケーションを乗せるのに、DB接続はほぼ必須なので、ここでrootのパスワードを設定しましょう。
mysqladmin -u root password '好きなパスワード'
警告が出ると思いますが、きちんと変更されていると思います。
ローカルマシンなので、簡単なパスワードでも大丈夫じゃないでしょうか。
phpMyAdminのインストール
参考記事:https://qiita.com/kenichiro-yamato/items/1a8efbfd738b85369e46
そもそもphpMyAdmin入れるのってセキュリティ的にどうなの?って話ですが、ローカル環境ですし手動でデータをいじくりたいときもあるかと思うので入れています。
以下のコマンドを打ちます。
yum -y install --enablerepo=remi,remi-php71 phpMyAdmin
これだけでインストールが完了。
phpMyAdmin.confの編集
apacheのアクセスのセキュリティをゆるくするために、phpMyAdmin.confを編集します。
sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
とコマンドを打って、
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
上の「Require local」を「Require all granted」に変えます。
Apacheを再起動します。
sudo systemctl restart httpd.service
もし再起動できない場合は、
sudo service httpd configtest
と打つと、エラー文が出てきます。
ブラウザからアクセスしてみましょう
http://ローカルマシンのIPアドレス/phpMyAdmin
※ローカルマシンのIPアドレスはVagrantファイルでコメントアウトを外した、
192.168.33.〜の番号です。
こんな感じのログイン画面が出てくると思います。
ユーザー名はroot
パスワードは先程MySQLで設定したパスワードを打ってください。
ーーーーーーーーーーーーーーーーー
/etc/httpd/conf.d/phpMyAdmin.confって何よ?という方のために解説します。
先程Apache2.4をインストールした際に、httpdという文言が出てきたと思うのですが、/etc/httpd/以下はApacheの設定ファイル群です。
/etc/httpd/以下を見てみると、
drwxr-xr-x 2 root root 35 12月 18 12:22 conf
drwxr-xr-x 2 root root 138 12月 22 17:13 conf.d
drwxr-xr-x 2 root root 4096 12月 18 12:25 conf.modules.d
lrwxrwxrwx 1 root root 19 12月 18 12:22 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root 29 12月 18 12:22 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx 1 root root 10 12月 18 12:22 run -> /run/httpd
こんな感じになっていると思います。
conf以下はApache自身の設定、
logsはApache自身のログが置いてあります。
conf/以下のhttpd.confを見てみると、ファイルの最後に
#EnableMMAP off
EnableSendfile on
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
「IncludeOptional conf.d/*.conf」と書いてあります。つまり、「オプションの設定はconf.d/以下の〜.confファイルに書いてね」ということなので、ApacheのphpMyAdminの設定を変更するためにphpMyAdmin.confをいじる、ということになります。
##環境構築終了〜あとがき〜
ローカル環境自身はこれで一旦できました。
ここにWordPressをのせたり、CakePHPをのせたり色々できると思います。
それぞれアプリケーションののせ方は、他の記事で書きます。
この記事を書こうと思ったのは、環境構築にあたりいつもブラウザの履歴をたどっているのがめんどくさくなって、一回参考記事をまとめたいなと思ったことがきっかけです。
LAMPっていう言葉ももう古いのかしら…時代遅れだっていうマサカリが飛んできそうで若干怯えていますが、「プログラミング初心者が何か言ってるわ〜」と寛大な心で受け流してくだされば幸いです。
最後に参考記事に載せた、今までお世話になってきた良記事の筆者の皆さまに感謝を申し上げます。
ありがとうございました。