HOME >さくらVPSにPHP7.3・mySQL・WordPress・CakePHPインストール

さくらVPSにPHP7.3・mySQL・phpMyAdmin・WordPress5.1・CakePHPインストール

前回の作業では、さくらVPSにApacheインストールから独自ドメイン設定、マルチドメイン設定、サイトのSSL化まで行いました。
今回は、さくらVPSにPHP7.3・mySQL・phpMyAdmin・WordPress5.1をインストール、ApacheでのBASIC認証まで行います。
当ページ内作業は2019年に実施した記録です。

PHP7.3のインストール

まずはremiレポジトリをインストール。

[root@ik1-999-11122 www]# cd
[root@ik1-999-11122 ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

さくらのマニュアルはPHP7.1ですが、どうせなら2019年時点最新のPHP7.3をインストール。

[root@ik1-999-11122 ~]# yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-mysqlnd php-pdo php-gd



Complete!
[root@ik1-999-11122 ~]#

PHPのバージョン確認

[root@ik1-999-11122 ~]# php -v
PHP 7.3.5 (cli) (built: Apr 30 2019 08:37:17) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies

PHPを有効にするために、Apacheを再起動

[root@ik1-999-11122 ~]# systemctl restart httpd

PHPファイルをアップロードし、動作することを確認。

掲載箇所5

MySQL5.7インストール

さくらのマニュアルではmariaDBをインストールするようですが、まだまだMySQLの普及率が高いこともあり、 今回はMySQLを導入することにします。  

mariaDB削除。

[root@ik1-999-11122 ~]# yum remove mariadb-libs

MySQLインストール、5.7.26がインストール。

[root@ik1-999-11122 ~]# yum install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Complete!
[root@ik1-999-11122 ~]# yum -y install mysql-community-server

Complete!
[root@ik1-999-11122 ~]# mysqld -V
mysqld Ver 5.7.26 for Linux on x86_64 (MySQL Community Server (GPL))

MySQLを起動し、自動起動の設定をする。

[root@ik1-999-11122 ~]# systemctl start mysqld
[root@ik1-999-11122 ~]# systemctl enable mysqld
[root@ik1-999-11122 ~]# cat /var/log/mysqld.log | grep 'password is generated'
2019-05-04T17:09:49.802942Z 1 [Note] A temporary password is generated for root@localhost: ここが初期のrootパスワード

MySQLの初期設定。
基本的に、yes。

[root@ik1-999-11122 ~]# mysql_secure_installation
Enter password for user root://初期パスワードを入力
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y //yでrootのパスワードを変更
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y //anonymous user不特定多数のユーザーを削除
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y //rootでリモートでのログインを不許可にしますか?
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y //testデータベースを削除しますか?
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y //設定を今反映しますか?
All done!

接続を確認

[root@ik1-999-11122 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, 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.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye

文字コードの設定

[root@ik1-999-11122 ~]# vi /etc/my.cnf

/etc/my.cnfに以下の4行を最後に追加。
character_set_serverでDB作成時のデフォルトの文字コードをutf8mb4とする。
skip-character-set-client-handshakeでクライアントがどんな文字コードを使っていても、文字コードを統一する。
PHPからMySQLに接続して、何故か文字化けするときに、このテキストで解決することがあるらしい。普段レンタルサーバを使っているので、あまり意識しないが。

character_set_server=utf8mb4
skip-character-set-client-handshake
explicit_defaults_for_timestamp = true
table_definition_cache = 400

MySQLを再起動して、設定を反映させる。
mySQLにログインして、設定を確認。

[root@ik1-999-11122 ~]# systemctl restart mysqld
[root@ik1-999-11122 ~]# mysql -u root -p
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

掲載箇所6

phpMyAdminをインストール

レンタルサーバ同様に、ブラウザからMySQLに接続して操作するために、phpMyAdminをインストールする。

[root@ik1-999-11122 ~]# wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip //ダウンロード
[root@ik1-999-11122 ~]# unzip phpMyAdmin-4.8.5-all-languages //解凍
[root@ik1-999-11122 ~]# rm phpMyAdmin-4.8.5-all-languages.zip //ZIPファイルは削除
[root@ik1-999-11122 ~]# mv phpMyAdmin-4.8.5-all-languages phpmyadmin //デイレクトリ名を分かり易く変更
[root@ik1-999-11122 ~]# mv phpmyadmin/ /var/www/html/phpmyadmin/ //phpmyadminを/var/www/html/に移動
[root@ik1-999-11122 ~]# chown -R apache /var/www/html/phpmyadmin/ //所有者をapacheに
[root@ik1-999-11122 ~]# chown -R apache.apache /var/www/html/phpmyadmin/ //グロープもapacheに
[root@ik1-999-11122 ~]# chmod -R 0755 /var/www/html/phpmyadmin/

しかし、http://IPアドレス/phpmyadminと打っても、アクセスできない。
設定ファイルの新規作成が必要でした。

[root@ik1-999-11122 ~]# vi /etc/httpd/conf.modules.d/phpmyadmin.conf //ファイルを新規作成
Alias /phpmyadmin "/var/www/html/phpmyadmin/"
<Directory "/var/www/html/phpmyadmin/">
Order allow,deny
Allow from all
Require all granted
</Directory>

ダウンロードしたphpmyadminのSQLスクリプトの実行を行い、phpmyadmin用のデータベースを作成しておいた方が良いみたい。
mysql -u root -p
source /var/www/html/phpmyadmin/sql/create_tables.sql
を実行しておく。

httpdの再起動

[root@ik1-999-11122 ~]# systemctl restart httpd

http://IPアドレス/phpmyadmin/index.phpでphpmyadminを確認。

適当にDBを作成し、テーブルも作成し、データ登録をする。問題無い動作を確認。

セキュリティー的にゆるゆるすぎるので、phpmyadminには、mysqlのrootでのログインを禁止する。

[root@ik1-999-11122 ~]# mysql -u root -p
mysql> create database sample_db; //適当にデータベースを作成
Query OK, 1 row affected (0.00 sec)

mysql> create user 'sample'@'localhost' IDENTIFIED BY 'パスワード'; //mysqlユーザーを作成
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on sample_db.* to 'sample'@'localhost'; //作成したmysqlユーザーに作成したデータベースへの操作権限を与える
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges; //設定を反映
Query OK, 0 rows affected (0.01 sec)

phpmyadminの設定ファイルを作成。

[root@ik1-999-11122 ~]# cat /var/www/html/phpmyadmin/config.sample.inc.php
[root@ik1-999-11122 ~]# mv /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php 
[root@ik1-999-11122 ~]# vi /var/www/html/phpmyadmin/config.inc.php 
$cfg['Servers'][$i]['AllowRoot'] = false;//末尾に追加 rootでのアクセスを禁止

rootでphpmyadminにアクセスできないこと、新たに作成したmysqlユーザーでphpmyadminにアクセスできたことを確認

ApacheにBASIC認証を設定

phpmyadminへは、rootからアクセスできないようにしたものの、やはりデイレクトリ全体へのアクセスを制御します。
ApacheにBASIC認証を設定します。

[root@ik1-999-11122 ~]# htpasswd -c /etc/httpd/conf.d/htpasswd webuser //ユーザーの登録ファイルの作成
New password:
Re-type new password:
Adding password for user webuser
[root@ik1-999-11122 ~]# chown apache:apache /etc/httpd/conf.d/htpasswd //権限設定
[root@ik1-999-11122 ~]# chmod 600 /etc/httpd/conf.d/htpasswd

[root@ik1-999-11122 ~]# vi /etc/httpd/conf.d/auth.conf //基本認証ファイルの新規作成

<Directory "/var/www/html/phpmyadmin">
AuthType Basic
AuthName "Auth Require Area"
AuthUserFile /etc/httpd/conf.d/htpasswd
Require valid-user
</Directory>

[root@ik1-999-11122 ~]# systemctl restart httpd //apache再起動

phpmyadminにアクセス時に、認証ダイアログの表示を確認

WordPress5.1をインストール

ブログだけではなく、企業サイトでもWordPressというくらい普及しているCMSであるWordPressをさくらVPSに導入。

WordPress用のデータベースを作成

[root@ik1-999-11122 ~]# mysql -u root -p
mysql> create database wordpress_db;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on wordpress_db.* to 'webuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

/var/www/html/web-web.work/public_html/でWordPressを運用します。
WordPressの最新はバージョン5.1ですので、これをダウンロードします。

[root@ik1-999-11122 ~]# cd /var/www/html/web-web.work/public_html/
[root@ik1-999-11122 public_html]# wget https://ja.wordpress.org/wordpress-5.1-ja.tar.gz
[root@ik1-999-11122 public_html]# tar xvzf wordpress-5.1-ja.tar.gz //解凍
[root@ik1-999-11122 public_html]# rm wordpress-5.1-ja.tar.gz //圧縮ファイルを削除
[root@ik1-999-11122 public_html]# chown -R apache:vpsuser * //所有者をapacheにして、グループをvpsuserに
[root@ik1-999-11122 public_html]# chmod -R g+w * //グループに書き込み権限を追加

https://web-web.work/wordpress/ にアクセスし、WordPressのインストール画面を確認。

先ほど作成したmySQL用一般ユーザー、WordPress用データベース名などを、WordPressのインストール画面で入力し、インストールをブラウザ上で進める。
さくらVPSにWordPress5.1が無事インストールできたことを確認。

CakePHPをインストール

CakePHPは、PHPフレームワークとして広く普及しているようです。
私は、せいぜいデザイナーの方との二人作業程度ですので、フレームワークは一切使いませんが、世間では使うようですので、入れてみます。
CakePHPはComposerというパッケージ管理ツールで導入するのが通常のようです。
CakePHP用デイレクトリまで移動し、Composerをインストールします。
初心者のためのCakePHP3 プログラミング入門参照

[root@ik1-307-13522 ~]# cd /var/www/html/web-web.work/public_html/
[root@ik1-307-13522 public_html]# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
[root@ik1-307-13522 public_html]# php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 1.8.5) successfully installed to: /var/www/html/web-web.work/public_html/composer.phar
Use it: php composer.phar

[root@ik1-307-13522 public_html]# mv composer.phar /usr/local/bin/composer
[root@ik1-307-13522 public_html]# php -r "unlink('composer-setup.php');"

Composerを利用したCakePHPを使ったWebアプリケーションのプロジェクトを作成
このコマンドでcakephpprojectフォルダを作成し、必要な書類がコピーされます。

[root@ik1-307-13522 public_html]# composer create-project --prefer-dist cakephp/app cakephpproject

rootでcomposerを動かすなと怒られますが、実行できるようです。

ブラウザでhttps://web-web.work/cakephpproject/ 
cakephpが確認できましたが、データベースにエラーが出ています。

データベースcake_dbを新たに作成し、既存のmysqlユーザーsampleに全ての権限を与え、設定を反映。

mysql> create database cake_db;
mysql> grant all privileges on cake_db.* to 'sample'@'localhost'; //sample既存のmySQLユーザー
mysql> flush privileges;

cakePHPプロジェクトの設定ファイルを編集します。

[root@ik1-307-13522 public_html]# vi cakephpproject/config/app.php

'username' => 'sample',
'password' => 'パスワード',
'database' => 'cake_db',

'timezone' => 'Asia/Tokyo',

Unknown or incorrect time zone: 'Asia/Tokyo'とエラーが出る。
mySQLのtimezoneの変更が必要でした。

[root@ik1-307-13522 public_html]# mysql_tzinfo_to_sql /usr/share/zoneinfo/

エラーが解決。
さくらVPSにCakePHPが無事インストールできたことを確認。

TOP