WordPressとは?
コンテンツマネジメントシステム(CMS)というもので、簡単に記事などのコンテンツを管理できて、HTMLのコードが分からなくても、文書を作成する感覚でホームページを更新できるツールみたいです。(実際に使ったことがないので実感がわかない…)
思いついたものを書きとめといて、自分の記憶をたどるときにも非常に役に立ちそうですね。ただ、実際にどういう仕組みで動作しているのか気にすることもなかったので、この機会に使ってみて理解を深めようと思います。HTMLやPHP,MySQLの動作も含めて少しだけ仕組みを掘り下げてみました。
今回、実際にラズパイにインストールしてWordPressの環境を構築したので紹介します。
WordPressの導入にあたっては、以下5つの手順が必要です。さっそく設定してみましょう。
- Apache2インストール
- PHPのインストール
- MariaDB(MySQLのオープンソース版)のインストール
- WordPressのインストール
- WordPress用のDBセットアップ
1.Apache2のインストール
Apache2をインストール
$sudo apt-get install -y apache2
Apache2の稼働確認
ブラウザから、http://192.168.0.101(ラズパイのIP)にアクセスして、以下のページが表示されればOKです。
2.PHPのインストール
PHPをインストール
$sudo apt-get install -y php
PHP稼働確認用ファイルの作成
$cd /var/www/html $sudo vi test.php
<test.phpの中身>
<?PHP echo date("Y/m/d"); ?>
Apache2を再起動
sudo service apache2 restart
ブラウザから、http://192.168.0.101(ラズパイのIP)/test.phpにアクセスして本日の日付が表示されればOKです。
3.MariaDB(MySQL)のインストール
MariaDB(MySQLのオープンソース版)をインストールします。
$sudo apt-get install -y mariadb-server
PHPと連携するための拡張機能をインストールします。
$sudo apt-get install -y php7.3-mysql $sudo apt-get install -y php7.3-curl $sudo apt-get install -y php7.3-gd $sudo apt-get install -y php-imagick
MariaDBを有効にして起動します。
$sudo systemctl enable mariadb $sudo systemctl start mariadb
4.WordPressのインストール
インストール場所に異動してWordPressの最新版をダウンロードします。
$cd /var/www/html $sudo wget https://wordpress.org/latest.tar.gz
あとは、tarを展開、html配下に移動、不要ファイルとディレクトの削除します。最後に、忘れずに今居るフォルダのすべてにwww-data(Apache)所有権を与えれば完了です。
$sudo tar xzf latest.tar.gz $sudo mv wordpress/* . $sudo rm latest.tar.gz $sudo rmdir wordpress $sudo chown -R www-data .
5.WordPress用のDBセットアップ
※ここでは、データベース名は「wordpress」、ユーザー名は「user」,パスワードは「password」として設定します。
MariaDBにログイン
$sudo mysql
WordPress用のデータベース「wordpress」を作成
MariaDB [(none)]>create database wordpress;
DBの存在確認
MariaDB [(none)]>show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | wordpress | <-作成した「wordpress」が表示されればOK +--------------------+
WordPress用のユーザを作成
(ユーザ名:user、パスワード:passwordの場合)
MariaDB [(none)]> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
DBに入って登録したユーザーを確認
$sudo mysql MariaDB [(none)]>use mysql; MariaDB [mysql]>select user, password, host from user; ↓登録したuser1が登録されていればOKです。 +-------+-------------------------------------------+-------------+ | user | password | plugin | +-------+-------------------------------------------+-------------+ | root | | unix_socket | | user1 | *34D3B87A652E7F0D1D371C3DBF28E291705468C4 | | +-------+-------------------------------------------+-------------+
一度ログアウトして、再度ログイン
MariaDB [mysql]> exit; $sudo mysql
WordPressデータベースに、先ほど作成したユーザに対して権限を付与
ユーザ名:user、パスワード:passwordの場合
MariaDB [(none)]> GRANT ALL on wordpress.* TO 'user'@'localhost' IDENTIFIED BY 'password';
作成したユーザー(ユーザー名:user)に全ての権限の付与確認
GRANT ALL PRIVILEGES ON wordpress
.* TO ‘user’@’localhost’ と表示されればOK
MariaDB [(none)]> use mysql;
MariaDB [mysql]> SHOW GRANTS for 'user'@'localhost’;
+--------------------------------------------------------------------------------------------------------------+
| Grants for user1@localhost |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON . TO 'user1'@'localhost' IDENTIFIED BY PASSWORD '34D3B87A652E7F0D1D371C3DBF28E291705468C4' | | GRANT ALL PRIVILEGES ON wordpress
. TO 'user1'@'localhost' |
+--------------------------------------------------------------------------------------------------------------+
MariaDB [mysql]> exit;
Apache2を再起動
sudo service apache2 restart WordPress管理者画面の稼働確認
ブラウザから、http://192.168.0.101(ラズパイのIP)にアクセスして、WordPressのロゴとともに、言語選択画面が表示されればOK
WordPressの初期設定
特定のパーマリンク設定のコメント投稿画面が表示されなくなってはまったので解決方法を残しておきます。
解決方法しては、パーマリンク設定を以下に変更すればOKです。
【変更前】
/%year%/%monthnum%/%day%/%hour%%minute%%second%
【変更後】
/%year%/%monthnum%/%day%/%hour%%minute%%second%/%post_id%/
↓以下のページを参考に修正しました。(1日悩んじゃいました・・・)
https://jugedred.net/2020/05/01/045159/5727/
メニューを追加すると文字化けするようになった…
とりあえず、「php.ini」の設定で、以下を変更
mbstring.encoding_translation on -> off
反映するために、apacheを再起動
sudo service apache2 restart
これで、日本語の文字化けは解消したけど原因が?
いままではうまくいってたのでなぜだか…
「mbstring.http_input」を「pass」に変更するのが正しそうです。
↓以下参考にしたコメント
mbstring.encoding_translationをoffにするのはあまりお勧めできません。アップロードされたファイル名の文字コードの扱いにも影響する値です。内部エンコードに変換して処理した方が無難です。
とりあえず、こちらでも文字化けは解消しました。
はじめまして。よろしくお願いします。
ラズパイでWordPressブログを公開していたのですが、突然ログインできなくなってしまいました。
HPにも、以下のようなメッセージが現れております。
Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/wp-includes/wp-db.php on line 3030
何かご存知のことがありましたら、お知らせください。