LoginSignup
11
8

More than 5 years have passed since last update.

パーフェクトPHPで環境構築

Posted at

パーフェクト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管理者ハンドブックにも書かれています.

Debian 管理者ハンドブック 6.2

なので, 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

その都度, 最新版をインストールすればいいと思います.

本では, このインストールが終わると, apache2mysqlを起動する話になります.

しかし, 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の以下のサイトが表示されます.

image.png

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

これで完了です.

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8