sg <

PHP, APACHE, and MYSQLの連携

Apache

Apacheの動作確認

まずインストールしたてのapacheでサーバーは動いているのか

http://localhost/
を開いてみなさいとのことなので、すかさず開くとなにかしらかのページが表示される。
apacheは大丈夫そう。

設定ファイル

設定ファイル(/etc/apache2/apache2.conf)を確認しておく

sudo gedit /etc/apache2/apache2.conf

 PHPファイルをアプリケーションファイルであることを認識させる。

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

 インデックスファイルを認識させる。

DirectoryIndex index.html index.html.var index.php

変更を反映させる

おもむろに再起動

~$ sudo service apache2 restart

参考

apache2の設定ファイル

http://d.hatena.ne.jp/lllocity/20110104/1294150449

PHP

phpは
php -v
と打ち込むとバージョンが表示されているので、とりあえず問題なし。

apache2との連携にあたり、php-cgiが足らないらしい。

~$ sudo apt install php-cgi
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています 
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
php7.2-cgi
提案パッケージ:
php-pear
以下のパッケージが新たにインストールされます:
php-cgi php7.2-cgi
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
1,369 kB のアーカイブを取得する必要があります。
この操作後に追加で 9,633 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 php7.2-cgi amd64 7.2.10-0ubuntu0.18.04.1 [1,366 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 php-cgi all 1:7.2+60ubuntu1 [3,256 B]
1,369 kB を 1秒 で取得しました (2,445 kB/s)
以前に未選択のパッケージ php7.2-cgi を選択しています。
(データベースを読み込んでいます ... 現在 183705 個のファイルとディレクトリがインストールされています。)
.../php7.2-cgi_7.2.10-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
php7.2-cgi (7.2.10-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ php-cgi を選択しています。
.../php-cgi_1%3a7.2+60ubuntu1_all.deb を展開する準備をしています ...
php-cgi (1:7.2+60ubuntu1) を展開しています...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
php7.2-cgi (7.2.10-0ubuntu0.18.04.1) を設定しています ...
update-alternatives: /usr/bin/php-cgi (php-cgi) を提供するために自動モードで /usr/bin/php-cgi7.2 を使います
update-alternatives: /usr/lib/cgi-bin/php (php-cgi-bin) を提供するために自動モードで /usr/lib/cgi-bin/php7.2 を使います

Creating config file /etc/php/7.2/cgi/php.ini with new version
php_invoke: Enabled module ftp for cgi sapi
php_invoke: Enabled module calendar for cgi sapi
php_invoke: Enabled module sysvmsg for cgi sapi
php_invoke: Enabled module sysvshm for cgi sapi
php_invoke: Enabled module fileinfo for cgi sapi
php_invoke: Enabled module readline for cgi sapi
php_invoke: Enabled module sysvsem for cgi sapi
php_invoke: Enabled module opcache for cgi sapi
php_invoke: Enabled module shmop for cgi sapi
php_invoke: Enabled module sockets for cgi sapi
php_invoke: Enabled module exif for cgi sapi
php_invoke: Enabled module posix for cgi sapi
php_invoke: Enabled module json for cgi sapi
php_invoke: Enabled module pdo for cgi sapi
php_invoke: Enabled module phar for cgi sapi
php_invoke: Enabled module ctype for cgi sapi
php_invoke: Enabled module tokenizer for cgi sapi
php_invoke: Enabled module gettext for cgi sapi
php_invoke: Enabled module iconv for cgi sapi
php-cgi (1:7.2+60ubuntu1) を設定しています ...

結局、他のパッケージもインストールしたほうが良いらしく、

~$ sudo apt install libapache2-mod-php php-common php-pear php-mbstring
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています 
状態情報を読み取っています... 完了
php-common はすでに最新バージョン (1:60ubuntu1) です。
php-common は手動でインストールしたと設定されました。
以下の追加パッケージがインストールされます:
libapache2-mod-php7.2 php-xml php7.2-mbstring php7.2-xml
以下のパッケージが新たにインストールされます:
libapache2-mod-php libapache2-mod-php7.2 php-mbstring php-pear php-xml
php7.2-mbstring php7.2-xml
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
2,231 kB のアーカイブを取得する必要があります。
この操作後に追加で 9,103 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libapache2-mod-php7.2 amd64 7.2.10-0ubuntu0.18.04.1 [1,349 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 libapache2-mod-php all 1:7.2+60ubuntu1 [3,212 B]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 php7.2-mbstring amd64 7.2.10-0ubuntu0.18.04.1 [483 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 php-mbstring all 1:7.2+60ubuntu1 [2,008 B]
取得:5 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 php7.2-xml amd64 7.2.10-0ubuntu0.18.04.1 [107 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 php-xml all 1:7.2+60ubuntu1 [2,024 B]
取得:7 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 php-pear all 1:1.10.5+submodules+notgz-1ubuntu1 [284 kB]
2,231 kB を 1秒 で取得しました (4,158 kB/s)
以前に未選択のパッケージ libapache2-mod-php7.2 を選択しています。
(データベースを読み込んでいます ... 現在 183720 個のファイルとディレクトリがインストールされています。)
.../0-libapache2-mod-php7.2_7.2.10-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
libapache2-mod-php7.2 (7.2.10-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ libapache2-mod-php を選択しています。
.../1-libapache2-mod-php_1%3a7.2+60ubuntu1_all.deb を展開する準備をしています ...
libapache2-mod-php (1:7.2+60ubuntu1) を展開しています...
以前に未選択のパッケージ php7.2-mbstring を選択しています。
.../2-php7.2-mbstring_7.2.10-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
php7.2-mbstring (7.2.10-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ php-mbstring を選択しています。
.../3-php-mbstring_1%3a7.2+60ubuntu1_all.deb を展開する準備をしています ...
php-mbstring (1:7.2+60ubuntu1) を展開しています...
以前に未選択のパッケージ php7.2-xml を選択しています。
.../4-php7.2-xml_7.2.10-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
php7.2-xml (7.2.10-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ php-xml を選択しています。
.../5-php-xml_1%3a7.2+60ubuntu1_all.deb を展開する準備をしています ...
php-xml (1:7.2+60ubuntu1) を展開しています...
以前に未選択のパッケージ php-pear を選択しています。
.../6-php-pear_1%3a1.10.5+submodules+notgz-1ubuntu1_all.deb を展開する準備をしています ...
php-pear (1:1.10.5+submodules+notgz-1ubuntu1) を展開しています...
php7.2-xml (7.2.10-0ubuntu0.18.04.1) を設定しています ...

Creating config file /etc/php/7.2/mods-available/dom.ini with new version

Creating config file /etc/php/7.2/mods-available/simplexml.ini with new version

Creating config file /etc/php/7.2/mods-available/wddx.ini with new version

Creating config file /etc/php/7.2/mods-available/xml.ini with new version

Creating config file /etc/php/7.2/mods-available/xmlreader.ini with new version

Creating config file /etc/php/7.2/mods-available/xmlwriter.ini with new version

Creating config file /etc/php/7.2/mods-available/xsl.ini with new version
php7.2-mbstring (7.2.10-0ubuntu0.18.04.1) を設定しています ...

Creating config file /etc/php/7.2/mods-available/mbstring.ini with new version
php-xml (1:7.2+60ubuntu1) を設定しています ...
php-mbstring (1:7.2+60ubuntu1) を設定しています ...
php-pear (1:1.10.5+submodules+notgz-1ubuntu1) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
libapache2-mod-php7.2 (7.2.10-0ubuntu0.18.04.1) を設定しています ...

Creating config file /etc/php/7.2/apache2/php.ini with new version
php_invoke: Enabled module ftp for apache2 sapi
php_invoke: Enabled module calendar for apache2 sapi
php_invoke: Enabled module sysvmsg for apache2 sapi
php_invoke: Enabled module sysvshm for apache2 sapi
php_invoke: Enabled module fileinfo for apache2 sapi
php_invoke: Enabled module readline for apache2 sapi
php_invoke: Enabled module sysvsem for apache2 sapi
php_invoke: Enabled module opcache for apache2 sapi
php_invoke: Enabled module shmop for apache2 sapi
php_invoke: Enabled module sockets for apache2 sapi
php_invoke: Enabled module exif for apache2 sapi
php_invoke: Enabled module posix for apache2 sapi
php_invoke: Enabled module json for apache2 sapi
php_invoke: Enabled module pdo for apache2 sapi
php_invoke: Enabled module phar for apache2 sapi
php_invoke: Enabled module ctype for apache2 sapi
php_invoke: Enabled module tokenizer for apache2 sapi
php_invoke: Enabled module gettext for apache2 sapi
php_invoke: Enabled module iconv for apache2 sapi
Module mpm_event disabled.
Enabling module mpm_prefork.
apache2_switch_mpm Switch to prefork
apache2_invoke: Enable module php7.2
libapache2-mod-php (1:7.2+60ubuntu1) を設定しています ...

PHP<->MYSQLの連携

WordPressを /wp-admin/install.php を実行すると、「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」と表示されてしまうのでここ(https://blog.kujira-station.com/201501261644)を参考にしてphp-mysqlをインストールすることにした。

$ php -m | grep mysql
(何も表示されない)
$ sudo apt search php-mysql
ソート中... 完了
全文検索... 完了 
php-mysql/bionic,bionic 1:7.2+60ubuntu1 all
MySQL module for PHP [default]

$ sudo apt install php-mysql
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています 
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
php7.2-mysql
以下のパッケージが新たにインストールされます:
php-mysql php7.2-mysql
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
120 kB のアーカイブを取得する必要があります。
この操作後に追加で 461 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 php7.2-mysql amd64 7.2.10-0ubuntu0.18.04.1 [118 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 php-mysql all 1:7.2+60ubuntu1 [2,004 B]
120 kB を 0秒 で取得しました (600 kB/s)
以前に未選択のパッケージ php7.2-mysql を選択しています。
(データベースを読み込んでいます ... 現在 183948 個のファイルとディレクトリがインストールされています。)
.../php7.2-mysql_7.2.10-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
php7.2-mysql (7.2.10-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ php-mysql を選択しています。
.../php-mysql_1%3a7.2+60ubuntu1_all.deb を展開する準備をしています ...
php-mysql (1:7.2+60ubuntu1) を展開しています...
php7.2-mysql (7.2.10-0ubuntu0.18.04.1) を設定しています ...
Creating config file /etc/php/7.2/mods-available/mysqlnd.ini with new version
Creating config file /etc/php/7.2/mods-available/mysqli.ini with new version
Creating config file /etc/php/7.2/mods-available/pdo_mysql.ini with new version
libapache2-mod-php7.2 (7.2.10-0ubuntu0.18.04.1) のトリガを処理しています ...
php-mysql (1:7.2+60ubuntu1) を設定しています ...

php.iniの編集

ここを参照して

https://www.server-world.info/query?os=Ubuntu_16.04&p=httpd&f=3

以下の通り実行

/etc/php/7.2/apache2$ pwd
/etc/php/7.2/apache2

上記のディレクトリに移動してphp.iniを書き換え

sudo gedit php.ini


「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」事件発生

wp-admin/install.phpにアクセスしたときに

php <-> mysqlで連携が取れないときに出てくるエラーのよう。

php-mysqlパッケージをインストールしてapache2を再起動するも変わらず。

 

http://infra.salmon0852.com/2017/09/

https://money-affairs.com/error-extension-mysqli/

を参考にしつつ

php.ini を

;extension=mysqli

;extension=pdo_mysql

↓コメントアウト

extension=mysqli

extension=pdo_mysql

したり、

追加

extension_dir = “/var/lib/php/modules/7.2/registry”

にするなど懸命に努力したが、改善せず。

結局、php.iniに対して行った編集は元に戻して、パソコンの再起動をしたら、

wp-admin/install.phpが正常に機能するようになった。

MYSQL

mysqlの設定だが、
mysql_secure_installation
と打ち込むと初期設定画面になるらしい。

$ mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:
Error: Access denied for user ‘root’@’localhost’
$ sudo mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: n
Please set the password for root here.

New password:

Re-enter new password:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
– Dropping test database…
Success.

– Removing privileges on test database…
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

MYSQLバージョンの確認

/etc/mysql$ mysql --version
mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper

cnfファイルの設定

MYSQLの設定ファイルである*.cnfは以下のとおりに格納されている。

/etc/mysql$ ls -al
合計 40
drwxr-xr-x 4 root root 4096 10月 27 13:39 .
drwxr-xr-x 133 root root 12288 10月 27 13:40 ..
drwxr-xr-x 2 root root 4096 10月 28 00:28 conf.d
-rwxr-xr-x 1 root root 120 10月 23 04:33 debian-start
-rw------- 1 root root 317 10月 27 13:39 debian.cnf
lrwxrwxrwx 1 root root 24 10月 27 13:39 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r-- 1 root root 839 8月 3 2016 my.cnf.fallback
-rw-r--r-- 1 root root 682 1月 12 2018 mysql.cnf
drwxr-xr-x 2 root root 4096 10月 27 13:39 mysql.conf.d
/etc/mysql$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'
/etc/mysql
|--conf.d
| |--character_set.cnf
| |--mysql.cnf
| |--mysqldump.cnf
|--debian-start
|--debian.cnf
|--my.cnf
|--my.cnf.fallback
|--mysql.cnf
|--mysql.conf.d
| |--mysqld.cnf
| |--mysqld_safe_syslog.cnf

最小限の設定をするために、文字コードの指定をすることにした。

conf.d配下にcharacter_set.cnfを配置してdefault-character-setで文字コードを指定したが、エラーが出てmysqlがstartできない、というトラブルに遭遇した。

ここを参考すると、文字コードの設定方法が以前とは違うらしい。

https://teratail.com/questions/74235

よって、以下のように書き直したところ、うまく起動に成功した。

[mysqld]
character-set-server = utf8
skip-character-set-client-handshake

[mysql]
default-character-set = utf8

デフォルトでの各ディレクトリにおけるcnfファイルの内容

/etc/mysql/mysql.cnf <インクルート対象のディレクトリを指定>
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/my.cnf </etc/alternatives/my.cnfへのリンク> 内容は上記mysql.cnfと同じ
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/debian.cnf <自動生成されたファイル>
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = {削除}
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = {削除}
socket   = /var/run/mysqld/mysqld.sock

/etc/mysql/conf.d/mysql.cnf <ユーザ定義?>
[mysql]

/etc/mysql/conf.d/mysqldump.cnf <?>
[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

/etc/mysql/mysql.conf.d/mysqld_safe_syslog.cnf <?>
[mysqld_safe]
syslog
/etc/mysql/mysql.conf.d/mysqld.cnf <[mysqld]について定義>
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
#max_connections = 100
#table_open_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#slow_query_log = 1
#slow_query_log_file = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem

# ssl-key=/etc/mysql/server-key.pem

MYSQL起動コマンドメモ

Ubuntu上のMySQLを起動、停止、再起動する方法。

$ sudo/etc/init.d/mysql start    起動
$ sudo/etc/init.d/mysql stop    停止
$ sudo/etc/init.d/mysql restart  再起動

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください