SambaでActive Directory構築したり、ジャンクPCいじり倒したり、いろいろやろうと思ってるんだけど、 鳥頭なもんでメモっとかないと速攻忘れるのよね。だもんで備忘録書くブログが必要になったからWordpressで メモっとくことにした。 第1回目はそのWordpressの導入手順。
目次
前提
・OSのインストール、諸設定は済んでいるものとする。
・Apacheの設定は済んでいるものとする。(別投稿で解説予定)
・httpsの設定は済んでいるものとする。(別投稿で解説予定)
VPS構成、導入ソフトウェア
まずは環境から。
オッチャンはXserverさんのVPSを以下のスペックで借りている。
OS | openSUSE Leap 15.4 |
vCPU | 4コア |
メモリ | 4 GB |
仮想ディスク | 100 GB |
OSにopenSUSE Linuxを選んだのはYASTという優れた管理ツールが装備されているからで、OSの基本設定からApacheやBind、Postfixなどの代表的なソフトウェアの基本設定もYASTでSSH接続からGUI的にできてしまう。非常に便利なので宅内のLinuxは理由がない限り基本的にopenSUSEを採用している。
今回はVPSベンダーがOSインストール済みで仮想マシンを提供してくれたのでopenSUSE Linuxのインストール手順は割愛するが、後日その手順を解説したいと思う。
システムロケール、rootのロケールやタイムゾーン等、OSの基本設定も仮想マシンの構築直後に済ませているが、こちらもopenSUSE Linuxのインストール手順に含めて解説したい。
追加するパッケージ
WordPressを導入するのに必要な基本的ソフトウェアは以下の通り。
Apache2(httpd)またはNginx |
Mysql(MariaDB)またはPostgresql |
PHP7またはPHP8 |
今回採用したのはオッチャンが慣れ親しんでいるかという観点でWebサーバにApache2、DBサーバにMariaDB、今後のサポート期間を考慮してPHP8にした。
パッケージのインストールはYASTで行えばよい。TeraTerm等のSSHクライアントでサーバに接続し、rootへsuする手順は各自で確認して欲しい。
YASTを起動するにはrootで以下のコマンドを実行する。
以下、コマンドの実行やコンフィグファイルの編集はroot権限でおこなう。
# yast |
YASTが起動したら「YaST コントロールセンター」になるので ソフトウェア→ソフトウェア管理 と移動する。
リポジトリのキャッシュ更新に時間が掛かる場合があるが、更新されるまで待つ。


上右の画面の”Search”テキストボックスにパッケージ名を入力してEnterすると右ペインに検索結果が表示される。
部分一致で検索するからパッケージ名が正確に判らなくても大丈夫。画面の例の”apache2″はインストール済だから
“i”フラグが立っているが、未インストールならブランクだ。インストールしたいパッケージまで上下矢印キーで移動して、選択状態でスペースを押すと”+”に変わる。
複数パッケージをインストールしたい場合は続けて”Search”ボックスにキーワードを入力してエンターし、同じようにパッケージを選択する。前に選択したパッケージの選択状態は維持されているから安心して。
インストールするパッケージの選択が終わったらTabキーで”Accept”まで移動してエンターを押すとパッケージのインストールが始まる。インストールが終わったら上左の画面に戻る。
YASTを終了する場合はTabキーで”終了 (Q)”まで移動してエンターする。
ちなみにApache2をコマンドでインストールする場合は以下のとおり。
–non-interactiveをつけるとyes/noを聞かずにインストールする。
# zypper –non-interactive in apache2 |
PHP8やMariaDBも同じようにインストールする。
PHPは本体以外にWordPressに必須のモジュールもたくさんある。以下のページを参考にインストールしてみたりしたが、後から不足のモジュールも結構出てきた。
WordPressに必要なPHP拡張モジュールのインストール
追加するPHPモジュール
最終的にインストールしたPHPモジュールは以下。
apache2-mod_php8 | Apache 2.x Web サーバ向けPHP8モジュール |
php8 | PHP スクリプト言語バージョン 8 向けインタプリタ |
php8-cli | PHP スクリプト言語バージョン 8 向けコマンドラインインタプリタ |
php8-ctype | PHP 向け文字クラス拡張 |
php8-curl | PHP 向け libcurl 統合 |
php8-dom | PHP 向け Document Object Model 拡張 |
php8-exif | PHP 向けメタデータ拡張 |
php8-fileinfo | PHP 向けファイル識別拡張 |
php8-fpm | FastCGI プロセスマネージャ PHP8 モジュール |
php8-gd | PHP 向け GD グラフィックライブラリ拡張 |
php8-iconv | PHP 向け文字セット変換関数 |
php8-imagick | Wrapper to the ImageMagick library |
php8-intl | PHP 向け ICU 統合 |
php8-mbstring | PHP 向けマルチバイト文字列関数 |
php8-mysql | PHP 向け MySQL データベースクライアント |
php8-opcache | PHP 向け opcode キャッシュ拡張 |
php8-openssl | PHP 向け OpenSSL 統合 |
php8-pdo | PHP 向けデータオブジェクト拡張 |
php8-soap | PHP 向け SOAP/WSDL 拡張モジュール |
php8-sqlite | PHP 向け SQLite データベースクライアント |
php8-tokenizer | Zend エンジンの PHP トークナイザへのアクセスを行なう拡張モジュール |
php8-xmlreader | PHP 向けストリーム型 XML 読み込み拡張 |
php8-xmlwriter | PHP 向けストリーム型 XML 書き込み拡張 |
php8-zip | PHP 向け ZIP アーカイブサポート |
php8-zlib | PHP 向け Zlib 圧縮サポート |
php.iniの設定
PHP 8.0の設定ファイル「php.ini」はあちこちに点在するため、どこのphp.iniを使っているのか特定しなければならない。
以下のコマンドを実行するとPHPの設定ファイルの場所を確認することができる。
# php –ini |
この環境では実行結果は以下のとおりだった。
Configuration File (php.ini) Path: /etc/php8/cli
Loaded Configuration File: /etc/php8/cli/php.ini
Scan for additional .ini files in: /etc/php8/conf.d
Additional .ini files parsed: /etc/php8/conf.d/20-mysqlnd.ini,
/etc/php8/conf.d/ctype.ini,
/etc/php8/conf.d/curl.ini,
/etc/php8/conf.d/dom.ini,
/etc/php8/conf.d/exif.ini,
/etc/php8/conf.d/fileinfo.ini,
/etc/php8/conf.d/gd.ini,
/etc/php8/conf.d/iconv.ini,
/etc/php8/conf.d/imagick.ini,
/etc/php8/conf.d/intl.ini,
/etc/php8/conf.d/mbstring.ini,
/etc/php8/conf.d/mysqli.ini,
/etc/php8/conf.d/opcache.ini,
/etc/php8/conf.d/openssl.ini,
/etc/php8/conf.d/pdo.ini,
/etc/php8/conf.d/pdo_mysql.ini,
/etc/php8/conf.d/pdo_sqlite.ini,
/etc/php8/conf.d/soap.ini,
/etc/php8/conf.d/sqlite3.ini,
/etc/php8/conf.d/tokenizer.ini,
/etc/php8/conf.d/xmlreader.ini,
/etc/php8/conf.d/xmlwriter.ini,
/etc/php8/conf.d/zip.ini
/etc/php8/conf.d/zlib.ini
このうち、実際に読み込まれているphp.iniは「Loaded Configuration File:」行に書かれているパスだ。
この環境では
/etc/php8/cli/php.ini
だった。
php.iniを編集する前に以下のコマンドを実行してバックアップを取る。
# cp -p /etc/php8/cli/php.ini /etc/php8/cli/php.ini_org |
viで/etc/php8/cli/php.iniを開いて以下の通り編集する。
# vi /etc/php8/cli/php.ini |
#memory_limit = 128M
memory_limit = 256M → メモリ最大値を128MBから256MBへ変更
#upload_max_filesize = 2M
upload_max_filesize = 20M → アップロードできるファイルの最大サイズを2MBから20MBへ変更
#date.timezone = ‘UTC’
date.timezone = ‘Asia/Tokyo’ → タイムゾーンをUTCからAsia/Tokyoへ変更
;mbstring.language = Japanese
mbstring.language = Japanese → マルチバイト文字の言語を日本語に設定
mbstring.internal_encoding = UTF-8 → マルチバイト文字の内部エンコードをUTF-8に設定
mbstring.http_output = pass → HTTP出力時にマルチバイトを変換しない
mbstring.encoding_translation = On → HTTP入力時のマルチバイト文字自動変換を有効にする
;mbstring.detect_order = auto
mbstring.detect_order = auto → 文字コード自動判定の優先順位の自動設定を有効にする
;mbstring.substitute_character = none
mbstring.substitute_character = none → コードとして変換できない場合の代替の文字の出力無効を有効にする(ややこしい!)
上記の編集結果を保存したら以下のコマンドを実行してApacheを再起動して設定を反映する。
※SUSE系Linuxではhttpdではなく、apache2であることに注意
# systemctl restart apache2 |
mariaDBの設定
本環境ではデータベースにMySQLと完全互換のmariaDBを使用する。
mariaDBを使用する理由はMySQLがOracle傘下になったので、ライセンスがGPL準拠でなくなる可能性を考量したため。
まずはmysqlインターフェースをroot権限で起動する。この場合はmariaDBの認証は必要ない。
# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3008 Server version: 10.6.13-MariaDB MariaDB package Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. MariaDB [(none)]> |
データベース、DBユーザの作成
ここからはSQLコマンド。まずデータベースを作成し、ユーザ作成と権限付与を同時に行う。
MariaDB [(none)]> CREATE DATABASE <データベース名> → データベース作成 Query OK, 1 row affected (0.000 sec) MariaDB [(none)]> show databases; → 作成済データベースの一覧表示 +————————————–+ | Database | +————————————–+ | information_schema | | mysql | | <作成したデータベース> | | performance_schema | | sys | | test | +————————————–+ 6 rows in set (0.000 sec) MariaDB [(none)]> GRANT ALL ON <データベース名>.* TO ‘<DBユーザ名>’@’localhost’ IDENTIFIED BY ‘<パスワード>’; → DBユーザ作成と同時にDB権限、パスワード設定 Query OK, 0 rows affected (0.004 sec) MariaDB [(none)]> SELECT user, host FROM mysql.user; → 作成済DBユーザの一覧表示 +——————————–+——————–+ | User | Host | +——————————–+——————–+ | | localhost | | mariadb.sys | localhost | | mysql | localhost | | <追加したBDユーザ> | localhost | | root | localhost | | | <ホスト名> | +——————————–+——————–+ 6 rows in set (0.001 sec) MariaDB [(none)]> commit; → これまで行った操作結果の確定 ( ≒ 保存) Query OK, 0 rows affected (0.000 sec) MariaDB [(none)]> exit Bye # |
これでWordpressのインストールウィザードを動かす準備はできた。
データベースにデータを投入する前なら問題がある場合にデータベースを削除できる。
削除する場合はデータベースとDBユーザを以下の手順で同時に削除してDB操作を最初からやり直せばよいだろう。
MariaDB [(none)]> DROP USER ‘<削除したいDBユーザ’@’localhost’; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> SELECT user, host FROM mysql.user;; → 作成済DBユーザの一覧表示 +——————————–+——————–+ | User | Host | +——————————–+——————–+ | | localhost | | mariadb.sys | localhost | | mysql | localhost | | root | localhost | | | <ホスト名> | +——————————–+——————–+ 6 rows in set (0.001 sec) MariaDB [(none)]> drop database <削除したいデータベース名>; → データベースの削除 Query OK, 58 rows affected (0.252 sec) MariaDB [(none)]> show databases; → 作成済データベースの一覧表示 +————————————–+ | Database | +————————————–+ | information_schema | | mysql | | performance_schema | | sys | | test | +————————————–+ 5 rows in set (0.000 sec) |
情報によるとWordpress 6系では対策済みらしいけど、携帯絵文字の文字化け対策の話もやっとく。
これは簡単に言うと昔のmysqlのdefault-character-setがUTF8だったから携帯絵文字の文字コードのレンジに
対応してなくて、絵文字が化けたり消えたりする事象が起こるから、対応してるunicodeの種類に変更しないとって
はなし。
本当は最初のデータベースを作成する前に/etc/php8/cli/php.iniに以下の行を追記してmariaDBを再起動
すれば次から新規作成するデータベースはutf8mb4で作成されるんだけど、今回はすでにデータベースを作成
しちゃったんだよねぇ。
…
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
で、mariaDBを再起動する。
/etc/php8/cli/php.iniを修正する前にデータベース作っちゃったらできたデータベースのキャラセット変えるしかない。
現状のデータベースのキャラセットを確認するには以下のコマンドを実行する。
# mysql MariaDB [(none)]> MariaDB [(none)]>use <データベース名> MariaDB [(none)]>show variables like “chara%”; +————————————+——————————————-+ | Variable_name | Value | +————————————+——————————————-+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb4 | | character_sets_dir | /usr/share/mariadb/charsets/ | +————————————+——————————————-+ 8 rows in set (0.001 sec) |
databaseのキャラセットがutf8ということは、携帯絵文字が入ったら文字化けする恐れがあるので、
データベースのキャラセットをutf8mb4に変更する。
MariaDB [(none)]>ALTER DATABASE {<データベース名>} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; MariaDB [(none)]>show variables like “chara%”; +————————————+——————————————-+ | 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 | utf8mb4 | | character_sets_dir | /usr/share/mariadb/charsets/ | +————————————+——————————————-+ 8 rows in set (0.001 sec) MariaDB [(none)]> MariaDB [(none)]> commit; Query OK, 0 rows affected (0.000 sec) MariaDB [(none)]> exit Bye # |
これでデータベースのデフォルトキャラセットがutf8mb4になった。
しつこいようだが最初からWordpress 6系を使えばあとからデータベースのデフォルトキャラセットを変える
必要はない。
データベースの準備が整ったので、いよいよWordpressの導入を始めるが、続きは後編でw
Share this content:
ピンバック:Wordpress サイトの構成 – Yahn Kim's Blog