OpenWRTでWordPressを運用
基本、本家のページに書かれたまま進めます。
結局、かなりかけている情報があったので、いろいろとつまづきました。
なお、このページは、この記事(OpenWRT インストール中 (ビルド ver.))の続きです。以下に出てくるパッケージは、すべてmake menuconfigにて設定しています。
インストール
パッケージ群
本家の情報ですと、次のものをインストール、となっています。ただ、情報が古いので、いくつかは、入りません。気にせず進めます。
mysql-server- mariadb-server
- php7
- php7-cgi
- php7-cli
- php7-mod-gd
php7-mod-hash- php7-mod-json
- php7-mod-mbstring
- php7-modmysqli
- php7-mod-opcache
- php7-mod-pdo
- php7-mod-pdo-mysql
- php7-mod-session
php7設定変更
uhttpd設定によると、doc_rootは空にせよ、とあるので、空にする。
- doc_root = "/www"
+ doc_root =
+ pdo_mysql.default_socket = /var/tmp/mysql.sock
+ mysql.default_socket = /var/tmp/mysql.sock
+ mysqli.default_socket = /var/tmp/mysql.sock
下の3つは、mysqli_connect(): (HY000/2002): No such file or directoryエラー対応でいれました。
mysql (mariadb)設定
# mysql_install_db --force
# /etc/init.d/mysqld start
うちの環境(v19相当)では、/mnt/data/mysqlが作られた。
また、/etc/config/mysqldのenableを'1'に変更しないと、startしないです。
WordPressのDB操作
WordPressのインストール作業につき、割愛可能
引き続き、本家の内容に従って、DBを操作します。
# mysqladmin -u root password 'password'
# mysql -u root -p
mysql> CREATE DATABASE databasename;
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname" IDENTIFIED BY "password";
mysql> FLUSH PRIVILEGES;
mysql> EXIT
本家のまんまです。
WordPressの設定で、次の3つを使います。
- databasename
- wordpressusername
- password
そのため、wordpress運用で使いたいイメージがあれば、それで命名したほうがよいでしょう。
uhttpd設定変更
uciでたたいても、/etc/config/uhttpdを変更しても同じ
(/etc/config/uhttpd追加部分)
config uhttpd 'wordpress'
option listen_http '81'
option home '/mnt/data/wordpress'
option index_file 'index.php'
option index_page 'index.php'
list interpreter ".php=/usr/bin/php-cgi"
本家筋の情報だと、interpreterは、mainブロックにあればよい、となっていましたが、ここ(wordpressブロック)にないと動きませんでした。
WordPress
wordpressから、最新のシステムをダウンロードし、どこか解凍+scpできるところに保管します。
$ cd /tmp
$ wget https://wordpress.org/latest.zip
$ unzip latest.zip
$ scp -r wordpress root@openwrt:/mnt/data/wordpress
本家では、/srv/wwwとなっていますが、mysqlが入ったところを間借りします。ポイントは、ディレクトリによっては、再起動時消されるものがあるところです。
このあと、wp-config-sample.phpをwp-config.phpに直して、4か所修正します。
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'wordpress' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
/** MySQL hostname */
define( 'DB_HOST', '127.0.0.1' );
注意点は、localhostではなく、127.0.0.1とするところ。
WordPress起動
初回は、http: //(openwrt)/wp-admin/へアクセスします。すると、おなじみの画面が登場します。
ここまでくると、openwrtでwordpressを起動する話なのか、wordpressをインストールする話か分からなくなるので、この辺でおしまい。
外とつなぐ
uhttpdにて、portを指定しているので、gatewayルータのnat設定を、80できたら、openwrtのIPアドレスと81ポートへフォワードするように設定すればよいでしょう。
問題は、構築方法によっては、すべての80トラフィックをwordpressが受けてしまうことでしょうか。
補足
128M Ram機で試してみた
メモリサイズ128Mのopenwrt機に入れてみました。mysql_install_dbで、こけて終了です。エラーから推測するに、128M以下ではメモリ不足で動かないと思われます。
# mysql_install_db --force --dasedir=/usr
~snip~
2020-XX-XX X:XX:XX 2002709772 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(138543104 bytes) failed; errno 12
2020-XX-XX X:XX:XX 2002709772 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
~snip~
shell> /usr/bin/mysql -u root mysql
mysql> show tables;
Try 'mysqld --help' if you have problems with paths. Using
--general-log gives you a log in /mnt/data/mysql/ that may be helpful.
The latest information about mysql_install_db is available at
https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
You can find the latest source at https://downloads.mariadb.org and
the maria-discuss email list at https://launchpad.net/~maria-discuss
Please check all of the above before submitting a bug report
at http://mariadb.org/jira
グーグル先生に、"InnoDB: Cannot allocate memory for the buffer pool"の解決法帆を聞くと、my.cnfのinnodb_buffer_pool_sizeを変更しましょう、と言われます。
そこで、小さくします。
~snip~
[mysqld]
user = mariadb
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
~snip~
#innodb_buffer_pool_size = 128M
innodb_buffer_pool_size = 16M
~snip~
[mysqld]以降、[mysqldump]以前に追記します。
再び実行すると、今度はOut of memoryのエラーが出ます。
XXXX-XX-XX X:XX:XX 1998417164 [Note] InnoDB: Initializing buffer pool, size = 16.0M
XXXX-XX-XX X:XX:XX 1998417164 [Note] InnoDB: Completed initialization of buffer pool
XXXX-XX-XX X:XX:XX 1998417164 [Note] InnoDB: Highest supported file format is Barracuda.
XXXX-XX-XX X:XX:XX 1998417164 [Note] InnoDB: 128 rollback segment(s) are active.
XXXX-XX-XX X:XX:XX 1998417164 [Note] InnoDB: Waiting for purge to start
XXXX-XX-XX X:XX:XX 1998417164 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1616777
XXXX-XX-XX X:XX:XX 1998417164 [ERROR] mysqld: Out of memory (Needed 130760704 bytes)
XXXX-XX-XX X:XX:XX 1998417164 [ERROR] mysqld: Out of memory (Needed 98058240 bytes)
XXXX-XX-XX X:XX:XX 1998417164 [ERROR] mysqld: Out of memory (Needed 73531392 bytes)
XXXX-XX-XX X:XX:XX 1998417164 [ERROR] mysqld: Out of memory (Needed 55148544 bytes)
一行目に、size = 16.0Mとでているので、my.cnfの設定は、反映されているように見えます。どの要因でOut of memoryになったのかは、調査しておりません。(時間があったら、今度挑戦します)
mariabackupでバックアップ
別環境の話ですが、maribackupを使ったDBのバックアップを行ったので、備忘録としてメモ
$sudo mariabackup --backup --target-dir /backup -u root -p (passwd)
[おしまい]
Author And Source
この問題について(OpenWRTでWordPressを運用), 我々は、より多くの情報をここで見つけました https://qiita.com/mbamba/items/862b2554fe9c653303e1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .