投稿

8月, 2020の投稿を表示しています

WordPress を低スペック OpenWrt ルーターにインストール

イメージ
Buffalo WZR-HP-AG300H に OpenWrt をセットアップし、WordPress をインストールしてみる。 Buffalo WZR-HP-AG300HCPU: 680MHz; ROM: 32MB; RAM: 128MBOpenWrt19.07.3HTTPdNGINX (with SSL)PHP7 (FPM)MySQLMariaDB 10.2WordPress5.4.2USB フラッシュドライブ今回は 8GB のフラッシュドライブを使った。256MB を swap 用に割り当て、残りをデータ用(/mnt/data)に使い、続く作業で nginx の Web ルート、MariaDB のインストール場所として割り当てるために利用する。👉 OpenWrt での USB フラッシュドライブWeb サーバーの NGINX 化と、PHP 7(FPM)との連携WordPress をインストールする前提として、Web サーバーを通じて PHP 7 が使える環境を整えておく必要がある。ここでは Web サーバー(HTTPd)としてNGINX(SSL 対応版)を使い、PHP は FPM で NGINX と連携させた。👉 OpenWrt で NGINX と PHP 7(FPM)環境を整えるMariaDB のインストール本当は SQLite3 にしたかったが、WordPress の SQLite 用プラグイン(sqlite-integration)が開発が停止したままとなっていて将来性が不透明なため、素直に MySQL 互換の MariaDB を使うことにする(MariaDB にするとサイズ的に 6.6MB と比較的大きいので、可能であれば避けたかったが)。MariaDB を適切にセットアップ(👉 OpenWrt で MariaDB を使えるようにする)した後、例えば、データベース名:wordpress;ユーザー名:wordpress;パスワード:******** で WordPress 用のデータベースを用意する。そのためには下のようにする(👉 WordPress 公式)。 CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"l…

OpenWrt で MariaDB を使えるようにする

イメージ
WordPress をインストールするために、MySQL 互換で MySQL よりは軽量の(とはいってもそれなりに ROM 容量は食うが)MariaDB を使えるようにする。前提状況:USB フラッシュドライブデータ領域として USB フラッシュの外部ドライブを用意(👉 OpenWrt での USB フラッシュドライブ)し、/mnt/data にマウントしていることを前提としている。アプリケーション自体(MariaDB)のインストール opkg install mariadb-server設定は /etc/mysql にあるmy.cnf はサーバー・クライアントに共通のグローバル設定用conf.d/50-server.cnf はサーバー専用のグローバル設定conf.d/60-galera.cnf は Galera Cluster 用のグローバル設定(Galera Cluster を使わない限り無関係)ユーザー別のローカル設定用は ~/.my.cnf を作成するということなので、基本的に /etc/mysql/conf.d/50-server.cnf を編集して設定を調整することになる。MariaDB の設定デフォルトの /etc/mysql/conf.d/50-server.cnf(抜粋) # # * Basic Settings # user = mariadb pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr # Don't put this on flash memory # Figure out where you are going to put the databases and run # mysql_install_db --force datadir = /mnt/data/mysql # tmpdir should also not go on flash memory tmpdir = /tmp lc-messages-dir = /usr/share/mariadb skip-external-locking # Instead of skip-networkin…

OpenWrt での uHTTPd 設定

USB フラッシュドライブを前提として、uHTTPd がそのマウントされた外部領域を使うように設定することにする。やったことは以下で、SSH で設定ファイルを直接編集して行なった。(参考 👉 uHTTPd Web Server Configuration)uHTTPd 用に /etc/config/uhttpd の option home を linux home パーティションのマウントポイント(/mnt/data)下に指定する。/www/luci-static, /www/cgi-bin/luci のコピーを /mnt/data 下の対応する場所に置くあとは、index.html を自前のものに変更するなりして、動作を確認した。デフォルトの index.html は、LuCI の管理画面である、/cgi-bin/luci にリダイレクトされるようになっているので、この index.html を別のものに変更してしまったとしても、直接 /cgi-bin/luci にアクセスすればちゃんと管理画面に入ることができるので、何も問題はない。CGIちなみに、/etc/config/uhttpd を見ると、PHP や Perl は cgi-bin 以外の場所でも実行可能なように設定できるようだが、Python ではできないようだった(設定してみても、無効のようだった)。その他試しに uHTTPd の代わりに Apache を入れようとしたが、正常に動かすことができなかった。現在(OpenWrt 19.07)では、NGINX の環境が整っており、自分の場合は uHTTPd はアンインストールして使わず、LuCI も含めて SSL 対応版の NGINX で使っている(👉 OpenWrt で NGINX と PHP 7(FPM)環境を整える)。

OpenWrt で NGINX と PHP 7(FPM)環境を整える

イメージ
例えば WordPress をインストールするためには PHP 7 が Web サーバーと連携して使える状態(FastCGI)を整えておく必要がある。この文書では、WordPress のことはとりあえずおいておいて、一般的に OpenWrt に Web サーバーとして NGINX(SSL 版)を利用し、PHP 7 を FPM(FastCGI Process Manager)で連携する方法について記す。 前提状況:USB フラッシュドライブWWW 用のデータを置く場所として USB フラッシュの外部ドライブを用意(👉 OpenWrt での USB フラッシュドライブ)し、/mnt/data にマウントしていることを前提としている。LuCI もろとも Web サーバー(HTTPd)を SSL 対応 NGINX 化する以前の OpenWrt 18.x とは飛躍的に進歩して、19.07 では SSL 対応版の NGINX が opkg として用意されている(以前は自前で Linux ソースコードからモジュールをビルドする必要があった)のみならず、NGINX 版 LuCI がセットアップされている opkg すら用意されており、OpenWrt コミュニティの旺盛な活動を感じる(👉 LuCI on other web servers > LuCI on nginx)。 opkg update opkg install luci-ssl-nginx opkg remove uhttpdLuCI 用にデフォルトでインストールされている uHTTPd は不要になるのでアンインストールした。用意した USB の外部領域(/mnt/data)があるので、デフォルトの Web ルート(/www 以下)を /mnt/data/www/default 以下にコピー。 mkdir -p /mnt/data/www/default cp -rp /www/* /mnt/data/www/defaultそれに連動して /etc/nginx/nginx.conf の設定を変更して、Web ルートが /mnt/data/www/default を指し示すように修正する。ただし、元々の root オプションが http ブロック直下にあったのを、2 番目の ssl 用の server ブロック内…

OpenWrt での USB フラッシュドライブ

イメージ
(公式ガイド:👉 Using storage devices)関連パッケージのインストール opkg install kmod-usb-storage opkg install usbutils opkg install block-mount opkg install gdisk opkg install f2fs-tools opkg install kmod-fs-f2fsUSB ドライバーは kmod-usb-storage のみusbutils はコマンド lsusb -t を使って USB メモリーが接続されているかどうかを調べるため(オプショナル)block-mount はコマンド block info を使ってパーティション情報を表示するため(オプショナル)gdisk はパーティション操作のため(後述)f2fs-tools と kmod-fs-f2fs が USB メモリーフラッシュ用のファイルシステムのためのドライバー gdisk によるパーティション操作今回は 2GB の USB フラッシュドライブを使い、そのうち 256MB を swap パーティションに、残り 1.6GB をデータ用パーティションにした。gdisk コマンドでデバイス(/dev/sd*)を指定して実行すれば、あとは対話形式でパーティションデザインを行う形となる。 Disk /dev/sda: 3915776 sectors, 1.9 GiB Model: Storage Media Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 257F8D9E-B548-49DA-AC35-DF64271AA16E Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 3915742 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 secto…

複式簿記システムの構築

イメージ
[STEP 1] Google SpreadSheets に蓄積した仕訳を SQLite + Python で処理するシステムの確立個人的に青色申告による複式簿記が必要なので、そのための必要十分なシステムを構築する。
(市販の会計ソフトは決して「必要十分」ではなく、単なる「十分」(つまり不必要な余計な要素を過剰に備えている)ので、論外。)おおまかなイメージとしては:逐次発生する会計イベントは人手によって「仕訳」してデータを入力し、1 年を通じてデータベース(仕訳帳)に蓄積する年間の蓄積された仕訳帳に基く年度末の「総勘定元帳の集計」と「決算整理仕訳」と「損益計算書の作成」は、Python プログラムで自動化する。具体的には:仕訳帳は Google SpreadSheets を利用して家族で共有集計・決算整理・損益計算は、Google SpreadSheets から TSV をダウンロードして、SQLite にインポートし、Python で SQL を駆動してそれらの定型化された作業を行い、結果を複数の TSV としてアウトプットする。最後にそれら TSV を単一の .xlsx ファイルにマージして一つの総勘定元帳として得る。仕訳帳のスキーマ(Google SpreadSheets) create table Journal ( id integer primary key, parent_id integer, date date, amount integer, debit text, credit text, description text ); ID は Google SpreadSheets 上では、単に「行番号+1」の計算式を使っただけのもの。親IDは、借方 or 貸方が諸口(複数科目)となる場合の「一対多」または「多対多」の仕訳のために用意した要素。グルーピングするエントリーのIDを親ID として指し示す。通常の一対一の仕訳「ID」「日付」「金額」「借方科目」「貸方科目」を示し、「親ID」は NULL一対多(または多対多)の仕訳の親エントリー「ID」「日付」を示し、「親ID」は NULL
「金額」「借方科目」「貸方科目」は両方とも「諸口」の場合は NULL だが、片方が単一の場合は、そのままその科目…