パーフェクトPHPのPart1の環境構築で, いろいろ情報が古いため, 引っかかったので, まとめた.
パーフェクトPHPは, 初版 第7刷発行を参照している.
自分の環境
edition: windows 10 pro
version: 1709
OS build: 16299.492
WSLを使って, Ubuntuを立ち上げてました.
VERSION="18.04 LTS (Bionic Beaver)"
環境構築
インストール
本には,
DebianやUbuntuなどではaptitudeコマンドからインストールします.
と書いてあります.
しかし, 新しめのUbuntuでは, aptitude
はデフォルトで入っておらず, パッケージ管理には, apt
が最も推奨されていますと, Debian管理者ハンドブックにも書かれています.
なので, aptitude
コマンドではなく, apt
コマンドを使いましょう.
本では,
$ sudo aptitude install php5 php-pear php5-dev php5-mysql
$ sudo aptitude install mysql-server-5.1
と書いてありますが, Ubuntu16.04以降では, php5
は入れられません.
askUbuntuのスレッドで,
If you want to stay with php5, you will need to stay at Ubuntu 14.04 LTS
php5を使いたいならば, Ubuntu14.04を使わなければいけないと書いてあります.
Can't install php5 on Ubuntu 16.04参照(英語情報)
mysql-serverのバージョンも 5.1ではなく5.7が最新です(記事執筆時).
なので, 本の代わりに, 以下のコマンドでインストールしましょう.
$ sudo apt install php7.0 php-pear php-dev php-mysql
$ sudo apt apt install mysql-server-5.7
その都度, 最新版をインストールすればいいと思います.
本では, このインストールが終わると, apache2
とmysql
を起動する話になります.
しかし, WSLのubuntuには, defaultで apache2
が入っていないので, それもインストールしておきましょう.
$ sudo apt install apache2
apache2とmysqlを起動
本では,
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/mysql start
と書かれています.
起動する際は, /etc/init.d
を使ってもいいが,
今は, そのラッパーであるservice
コマンドを使ったほうが良いとされる.
$ sudo service apache2 start
$ sudo service mysql start
[Wed Jun 27 10:49:42.446481 2018] [core:warn] [pid 23737:tid 140369359735744] (92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT
というエラーっぽいのが, 出力されますが, 一応, apache2は起動しているので無視して大丈夫かと思います.
$ service apache2 status
で起動しているか, 確認できます.
またwindows側のブラウザで, 127.0.0.1
にアクセスすれば, apacheの以下のサイトが表示されます.
mysqlもきちんと起動しているか, 確認してみると,
$ sudo service mysql status
* /usr/bin/mysqladmin Ver 8.42 Distrib 5.7.22, for Linux on x86_64
* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* Oracle is a registered trademark of Oracle Corporation and/or its
* affiliates. Other names may be trademarks of their respective
* owners.
* Server version 5.7.22-0ubuntu18.04.1
* Protocol version 10
* Connection Localhost via UNIX socket
* UNIX socket /var/run/mysqld/mysqld.sock
* Uptime: 2 min 18 sec
* Threads: 1 Questions: 8 Slow queries: 0 Opens: 107 Flush tables: 1 Open tables: 26
* Queries per second avg: 0.057
きちんと動いていることが確認できます.
ドキュメントルートの設定
まず, ドキュメントルートのためのディレクトリを作ります.
本に倣って, /var/www/study.localhost
のディレクトリを作りましょう.
sudo mkdir /var/www/study.localhost
sudo chown $USER:$USER /var/www/study.localhost
Linux環境では, $USER
にユーザー名が入っているので, 上のように作れば大丈夫です.
バーチャルホストの設定
Apache側で, バーチャルホストの設定をします.
本では,
/etc/apache2/sites-available/study.localhost
を作成し, 次の設定を記述してください.
と書いてあります.
この通りにやると, このあと叩くa2ensite
コマンドでエラーが起こります.
$ sudo a2ensite study.localhost
ERROR: Site study.localhost does not exist!`
これは, /etc/apache2/sites-available/study.localhost
名に.conf
をつけないといけません.
つまり, /etc/apache2/sites-available/study.localhost.conf
としなければいけません.
a2ensite
コマンドは, perlスクリプトで書かれているので, なぜかは読めばわかると思います.
type a2ensite
で, ファイル名の場所を探せば読めます.
名前を変えて, 以下の内容を書けば, okです.
<VirtualHost *:80>
ServerName study.localhsot
DocumentRoot /var/www/study.localhsot
DirectoryIndex index.php index.html
<Directory "/var/www/study.localhost">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
次に, この設定ファイルを適用するのですが, 本で葉, 以下のように書かれています.
>$ sudo a2ensite study.localhost
>$ sudo a2dissite default
しかし, sudo a2sisite default
は動きません.
tab補完で000-default.conf
をdisableにすればいいと思います.
$ sudo a2dissite 000-default.conf
最後に, mysqlとapacheを再起動します.
ここでもinit.d
を使っているので, 代わりに, service
を使いましょう.
$ sudo service apache2 reload
$ sudo service mysql reload
これで完了です.