AWS EC2のUbuntuへApache、PHP7.2、MySQLをインストールして、PHPからMySQLへ接続するメモです。
上記に加えて、pecl
でPHPの拡張モジュール(Extension)をインストール方法を最後に記載します。
Ubuntuにログインして、パッケージ管理ツールaptを最新にします。
# リポジトリ一覧を更新
$ sudo apt update
# パッケージを更新
$ sudo apt upgrade
$ sudo apt install apache2
バージョンを確認します。
$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2018-06-07T19:43:03
Apacheは、下記コマンドで起動します。
$ sudo service apache2 start
公式リポジトリは、PHP7.0のみを提供していました(2018年9月8日時点)。
提供されているPHPのバージョンは、apt search
コマンドで確認できます。
$ apt search php | grep php
...
php7.0/xenial-updates,xenial-security 7.0.30-0ubuntu0.16.04.1 all
...
PHP7.2を提供しているリポジトリを追加します。
多くのサイトで、ppa:ondrej/phpリポジトリが紹介されているので、本記事でもppa:ondrej/phpを追加します。
# リポジトリ追加
$ sudo add-apt-repository ppa:ondrej/php
# リポジトリ一覧を更新(リポジトリを追加したら必ず更新)
$ sudo apt update
リポジトリが追加されたことを確認します。
$ ll /etc/apt/sources.list.d
-rw-r--r-- 1 root root 124 Sep 8 00:49 ondrej-ubuntu-php-xenial.list
apt search
コマンドで、PHP7.2が使用可能なことを確認します。
$ apt search php | grep php7.2
...
...
php7.2/xenial 7.2.9-1+ubuntu16.04.1+deb.sury.org+1 all
...
...
$ sudo apt install php7.2
バージョンを確認します。
$ php -v
PHP 7.2.9-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Aug 19 2018 07:16:12) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.9-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
$ php -m
PHP Modules
...
pcre
PDO
Phar
...
PDOのMySQLドライバは、本体のインストールには含まれていま冴えんでした。
PHP7.2のドライバを検索します。
$ apt search php7.2 | grep php7.2
php7.2-mysql/xenial 7.2.9-1+ubuntu16.04.1+deb.sury.org+1 amd64
インストールします。
$ sudo apt install php7.2-mysql
インストールされたことを確認します。
$ php -m
PHP Modules
...
pcre
PDO
pdo_mysql <-- インストールされました
Phar
...
so
ファイルは、以下のパスに作成されました。
/usr/lib/php/20170718/pdo_mysql.so
設定ファイルは以下のパスに作成されました。
/etc/php/7.2/mods-available/pdo_mysql.ini
設定ファイルの内容は以下のとおりです。
; configuration for php mysql module
; priority=20
extension=pdo_mysql.so
$ sudo chown -R ubuntu /var/www
$ echo '<?php echo phpinfo();' > /var/www/html/phpinfo.php
Apacheを起動して、phpinfo.phpを確認します。
pdo_mysqlもインストールされていることを確認できます。
※ pdo_mysqlをインストールしていない状態では、PDOの欄はno valueになります。
Ubuntu Server 16.04は、MySQLのインストールで、rootユーザーのパスワードを設定する画面が表示されます。
パスワードを設定せずにインストールすると、rootでのログインがややこしくなるので設定することをおすすめします。
$ sudo apt install mysql-server
バージョンを確認します。
mysql --version
mysql Ver 14.14 Distrib 5.7.23, for Linux (x86_64) using EditLine wrapper
MySQLは、下記コマンドで起動します。
$ sudo /etc/init.d/mysql start
CREATE DATABASE sample DEFAULT CHARACTER SET utf8mb4;
sampleデータベースには、以下のサイトを参考にして、animalsテーブルを作成して、値を挿入しました。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 3.6.9 AUTO_INCREMENT の使用
以下の内容で、/var/www/html
にPHPファイルを作成しました。
(MySQLのrootのパスワードは、サンプルのためにわかりやすい文字列ubuntuにしています)
<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<title>Sample</title>
</head>
<body>
<?php
$options = array(
'PDO::ATTR_PERSISTENT' => true
);
try {
$db = new PDO('mysql:host=localhost;dbname=sample;charset=utf8mb4', 'root', 'ubuntu', $options);
$statement = $db->query("SELECT * FROM animals", PDO::FETCH_ASSOC);
foreach($statement as $row) {
echo $row['id'] . ': ' . $row['name'] . '<br>';
}
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
</body>
</html>
ブラウザで確認すると、以下のように表示されます。
pecl
で拡張モジュールをインストールします。
例としてxdebugをインストールします。
apt
で、php7.2-dev
パッケージをインストールapt
で、php-pear
パッケージをインストールpecl
で、Xdebugをインストールpecl install
は、拡張モジュールをコンパイルして、so
ファイルを作成します。その過程で、phpize
が必要になります。
phpize
を提供するphp7.2-dev
パッケージをインストールします。
$ sudo apt install php7.2-dev
pecl
は、php-pear
パッケージに含まれています。
$ sudo apt install php-pear
例としてXdebugを、インストールします。
$ sudo pecl install xdebug
コマンドの結果は、以下のように表示されました。
Installing '/usr/lib/php/20170718/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.6.1
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=/usr/lib/php/20170718/xdebug.so" to php.ini
拡張モジュールのロードは、Apacheのモジュール版のPHPに対して行います。
/etc/php/7.2/apache2/php.ini
に、zend_extension=/usr/lib/php/20170718/xdebug.so
を追記して、Apacheを再起動すれば、Xdebugを使用できます($ sudo service apache2 restart
)。
上記のように、php.ini
にzend_extension=/usr/lib/php/20170718/xdebug.so
を直接書いても良いですが、/etc/php/7.2/apache2/conf.d
に、以下の内容のファイル(例 20-xdebug.ini
)を作成する方法が一般的です1。
20-xdebug.ini
extension=xdebug.so
各種の設定ファイルのパスは、phpinfo()
で確認できます。
Loaded Configuration File /etc/php/7.2/apache2/php.ini
Scan this dir for additional .ini files /etc/php/7.2/apache2/conf.d
今回パッケージをインストールしていて思ったのは、なにが``どこへ
格納されるのかの大枠を知っている、理解がより深まるということでした。
先輩に教えてもらった以下のドキュメントはとても勉強になりました。
今回インストールしたパッケージでは概ね以下のようになります。
/usr/bin
以下に格納/usr/lib
以下に格納/etc
以下に格納/var
以下に格納Filesystem Hierarchy Standard(FHS)の概要
本体と一緒にインストールされる拡張モジュールのini
ファイルは、/etc/php/7.2/mods-available
ディレクトリに作成されており、/etc/php/7.2/apache2/conf.dへシンボリックリンクが張られています。 ↩
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。