メニュー 閉じる

WordPressの導入 (前編)

SambaでActive Directory構築したり、ジャンクPCいじり倒したり、いろいろやろうと思ってるんだけど、
鳥頭なもんでメモっとかないと速攻忘れるのよね。だもんで備忘録書くブログが必要になったからWordpressで
メモっとくことにした。
第1回目はそのWordpressの導入手順。

目次

  • 前提
  • VPS構成、導入ソフトウェア
  •  追加するパッケージ
  •   追加するPHPモジュール
  • php.iniの設定
  • mariaDBの設定
  •  データベース、DBユーザの作成
  • 前提

    ・OSのインストール、諸設定は済んでいるものとする。
    ・Apacheの設定は済んでいるものとする。(別投稿で解説予定)
    ・httpsの設定は済んでいるものとする。(別投稿で解説予定)

    VPS構成、導入ソフトウェア

    まずは環境から。
    オッチャンはXserverさんのVPSを以下のスペックで借りている。

    OSopenSUSE Leap 15.4
    vCPU4コア
    メモリ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_php8Apache 2.x Web サーバ向けPHP8モジュール
    php8PHP スクリプト言語バージョン 8 向けインタプリタ
    php8-cliPHP スクリプト言語バージョン 8 向けコマンドラインインタプリタ
    php8-ctypePHP 向け文字クラス拡張
    php8-curlPHP 向け libcurl 統合
    php8-domPHP 向け Document Object Model 拡張
    php8-exifPHP 向けメタデータ拡張
    php8-fileinfoPHP 向けファイル識別拡張
    php8-fpmFastCGI プロセスマネージャ PHP8 モジュール
    php8-gdPHP 向け GD グラフィックライブラリ拡張
    php8-iconvPHP 向け文字セット変換関数
    php8-imagickWrapper to the ImageMagick library
    php8-intlPHP 向け ICU 統合
    php8-mbstringPHP 向けマルチバイト文字列関数
    php8-mysqlPHP 向け MySQL データベースクライアント
    php8-opcachePHP 向け opcode キャッシュ拡張
    php8-opensslPHP 向け OpenSSL 統合
    php8-pdoPHP 向けデータオブジェクト拡張
    php8-soapPHP 向け SOAP/WSDL 拡張モジュール
    php8-sqlitePHP 向け SQLite データベースクライアント
    php8-tokenizerZend エンジンの PHP トークナイザへのアクセスを行なう拡張モジュール
    php8-xmlreaderPHP 向けストリーム型 XML 読み込み拡張
    php8-xmlwriterPHP 向けストリーム型 XML 書き込み拡張
    php8-zipPHP 向け ZIP アーカイブサポート
    php8-zlibPHP 向け 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で作成されるんだけど、今回はすでにデータベースを作成
    しちゃったんだよねぇ。

    [mysqld]


    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:

    1件のコメント

    1. ピンバック:Wordpress サイトの構成 – Yahn Kim's Blog

    コメントを残す

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