VCCWのPHPをUpdateしてWordPressのCocoonをインストールする

VCCWのPHPをUpdateしてWordPressのCocoonをインストールするのにかなり苦労しました。ようやく上手く行ったので備忘録として残しておきます。

※Local by Flyweelが古いMac(サーバとして活用)で使用できず、VCCWでWordPress環境を構築しています。

VCCWの環境構築については、こちらの記事に記載しています。

vagrant起動(ホストOS)

VCCW用のディレクトリ(例:wpbiboip)に移動します。

$ cd /Users/<User Name>/Vagrant/wpbiboip

vagrantを起動します。

$ vagrant up

PHPのUpdate(ゲストOS)

使用している端末からSSHでゲストOSにログインします。(vagrantユーザ)

$ ssh vagrant@192.168.xxx.xxx

※デフォルトのパスワードはvagrantです。

※Windowsであれば、定番のTeratermが便利です。

PHPのバージョン確認

vagrant@192:~$ php -v
PHP 7.0.26-2+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Dec 7 2017 20:09:40) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.26-2+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2017, by Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

リポジトリのインストール

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update

PHP 7.4 & 主要モジュールをインストール

$ sudo apt install -y php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-imagick php7.4-intl php7.4-curl php7.4-mbstring php7.4-zip php7.4-xml php7.4-bz2 php7.4-apcu libapache2-mod-php7.4

※ curlをUpdateしないとCocoonインストールでうまくいかないです。
※ libapache2-mod-php7.4 はApacheのphpモジュール

Apacheの旧phpモジュールのバージョンをdisable

$ sudo a2dismod php7.0

Apacheの新phpモジュールのバージョンをenable

$ sudo a2enmod php7.4

Apache再起動

$ sudo service apache2 restart

PHPのバージョン確認

vagrant@192:~$ php -v
PHP 7.4.7 (cli) (built: Jun 12 2020 07:43:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.7, Copyright (c), by Zend Technologies

DBのテーブル確認

phpMyAdminのインストール

phpMyAdminをインストールしていない場合は、インストールしておくことをおすすめします。こちらからダウンロードしてプロジェクトルート内のwordpressフォルダ直下に配置します。

以下はダウンロードしたphpMyAdmin-5.0.2-all-languages.zip(例)を解凍したフォルダ例です。

$ pwd
/Users/git/Vagrant/wpbiboip/wordpress/phpMyAdmin

ブラウザからphpmyadminにアクセスします。192.168.xxx.xxxはゲストOSのIPアドレス(/Users/git/Vagrant/wpbiboip/site.ymlに設定した値)

http://192.168.xxx.xxx/phpmyadmin/

VCCWのMySQL、rootの初期パスワードはwordpressになります。

◇PHPが切り替わっていない場合、ブラウザに以下のメッセージが表示されます。

PHP 7.1.3+ is required.
Currently installed version is: 7.0.33-29+ubuntu16.04.1+deb.sury.org+1

ターミナルからテーブル確認

ターミナルからテーブル確認する場合は、以下のようになります。

ログイン

[vagrant@192 ~]$ mysql -u root -p
Enter password: wordpress

データベースの表示

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

テーブル情報の表示

mysql> SHOW TABLES FROM wordpress;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

カラム情報の表示

mysql> SHOW COLUMNS FROM wp_posts FROM wordpress;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field                 | Type                | Null | Key | Default             | Extra          |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID                    | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| post_date             | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_date_gmt         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content          | longtext            | NO   |     | NULL                |                |
| post_title            | text                | NO   |     | NULL                |                |
| post_excerpt          | text                | NO   |     | NULL                |                |
| post_status           | varchar(20)         | NO   |     | publish             |                |
| comment_status        | varchar(20)         | NO   |     | open                |                |
| ping_status           | varchar(20)         | NO   |     | open                |                |
| post_password         | varchar(255)        | NO   |     |                     |                |
| post_name             | varchar(200)        | NO   | MUL |                     |                |
| to_ping               | text                | NO   |     | NULL                |                |
| pinged                | text                | NO   |     | NULL                |                |
| post_modified         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_modified_gmt     | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content_filtered | longtext            | NO   |     | NULL                |                |
| post_parent           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| guid                  | varchar(255)        | NO   |     |                     |                |
| menu_order            | int(11)             | NO   |     | 0                   |                |
| post_type             | varchar(20)         | NO   | MUL | post                |                |
| post_mime_type        | varchar(100)        | NO   |     |                     |                |
| comment_count         | bigint(20)          | NO   |     | 0                   |                |
+-----------------------+---------------------+------+-----+---------------------+----------------+
23 rows in set (0.00 sec)

Databaseの切り替え

mysql> USE wordpress
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

SELECT文の例

mysql> SELECT post_title FROM wp_posts WHERE LENGTH(post_name) < 20;
+-----------------+
| post_title      |
+-----------------+
| Hello world!    |
| Sample Page     |
| Privacy Policy  |
+-----------------+
3 rows in set (0.00 sec)

MySql終了

mysql> EXIT
Bye

php.iniの編集

php.iniのファイルパスを調べる方法

いくつか方法はありますが、簡単な方法を1つ記述しておきます。

/Users/git/Vagrant/wpbiboip/wordpress/phpinfo.php

を作成し、ファイルの内容に

<?php phpinfo(); ?>

を記述し、保存します。

ブラウザから<ゲストOSのIPアドレス>/phpinfo.php にアクセスします。

http://192.168.xxx.xxx/phpinfo.php

Loaded Configuration Fileの値を確認します。

/etc/php/7.4/apache2/php.ini

php.iniを編集

vagrant@192:~$ cd /etc/php/7.4/apache2
vagrant@192:~$ sudo vi php.ini

上記はviコマンドの例ですが、テキストエディタなどを使用して編集しても良いです。

以下のように変更します。

POSTデータに許可される最大サイズ(バイト単位)

post_max_size = 8M
↓
post_max_size = 128M

アップロード最大サイズ(バイト単位)

upload_max_filesize = 2M
↓
upload_max_filesize = 128M

Apache再起動

$ sudo service apache2 restart

テーマ(Cocoon)インストール

こちらからテーマをダウンロードします。今回使用したバージョンは以下となります。

親テーマ : cocoon-master-2.1.9.1.zip

子テーマ : cocoon-child-master-1.1.2.zip

WordPressにログインしてダウンロードしたテーマを、親テーマ、子テーマの順にアップロードして、子テーマを有効化します。

※ php.iniの設定で、アップロードできるファイルの容量を増やしておかないと、「辿ったリンクは期限が切れています。」のインストールエラーが発生します。

※以下のテーブルが無いよエラーが出ることがありますが、phpMyAdminで見るとテーブルができていました。とりあえず問題がないので放置しています。

WordPress データベースエラー: [Table 'wordpress.wp_cocoon_speech_balloons' doesn't exist]
SELECT COUNT(id) FROM wp_cocoon_speech_balloons

WordPress データベースエラー: [Table 'wordpress.wp_cocoon_function_texts' doesn't exist]
SELECT COUNT(id) FROM wp_cocoon_function_texts

WordPress データベースエラー: [Table 'wordpress.wp_cocoon_affiliate_tags' doesn't exist]
SELECT COUNT(id) FROM wp_cocoon_affiliate_tags

WordPress データベースエラー: [Table 'wordpress.wp_cocoon_item_rankings' doesn't exist]
SELECT COUNT(id) FROM wp_cocoon_item_rankings

※ curlが古いとCocoonのインストールが失敗します。php7.4-curlを事前にインストールしたところ、上手くいきました。

インストールが正常終了したら、作業完了です。

後片付け

SSH終了

vagrant@192:~$ logout
Connection to 192.168.xxx.xxx closed.

vagrant停止

$ pwd
/Users/git/Vagrant/wpbiboip
$ vagrant halt
==> 192.168.xxx.xxx: Attempting graceful shutdown of VM...
==> 192.168.xxx.xxx: [vagrant-hostsupdater] Removing hosts
タイトルとURLをコピーしました