もしルーターに USB ポートがあり、フラッシュメモリが少なくとも 32Mb 以上であれば、サーバーを Nginx+php+Sqlite に変更できます。
以前、openwrt ルーターで lighttpd+php+Sqlite を構築するチュートリアルを投稿しましたが、大体同じ内容なので、最初にそちらを見てください。このページでは主に設定ファイルについて記録します。
openwrt ルーターで lighttpd+sqlite+php ウェブサーバーを構築する
最初はルーターのルートディレクトリを拡張しようと思いましたが、後でバックアップやメンテナンスが難しいことに気づきました。USB が壊れたらすべてのサービスを再インストールしなければなりません。
現在はウェブサイトのディレクトリを USB に置いており、Sqlite データベースの利点はウェブサイトと一緒に保存できることです。一括でバックアップを取り、サーバーを移行するのも簡単で、データベースのアドレスを変更するだけで済みます。
今は nginx に移行しており、すべてのソフトウェアはルーターにインストールされています。電源が切れてもデータは失われません。Nginx+php+Sqlite の三点セットにいくつかの他のコンポーネントを加えても、ルーターのフラッシュメモリの使用量は約 10Mb です。
openwrt 上の nginx は php-fpm と一緒にしか使用できないようです。
openwrt を維持している方々に感謝します。これらのソフトウェアはそのまま使えるもので、せいぜい設定ファイルを微調整するだけで、私のような初心者でも扱えます。
以前 lighttpd を使用していたときは php-cgi というパッケージをインストールしましたが、今は nginx を使っているのでそれは必要ありません。直接 php-fpm パッケージをインストールすれば大丈夫で、その中には php8 のインタープリターが含まれています。
以下は Nginx で使用する設定ファイルで、設定ファイルのディレクトリは /etc/nginx/nginx.conf です。
worker_processes 2;
user root;
include module.d/*.module;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 100M;
large_client_header_buffers 4 64k;
server {
listen 80;
listen [::]:80;
server_name jxyblog.top;
root /mnt/www;
location / {
index index.php index.html;
autoindex off;
}
location ~ \.php(.*)$ {
root /mnt/www;
fastcgi_pass unix:/var/run/php8-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
include conf.d/*.conf;
}
以下は Nginx の擬似静的設定で、typecho ブログに適用されます。これを有効にするには、上記の設定ファイルに追加してください。
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
注意点がいくつかあります:
nginx を起動するとき、デフォルトでルーターに付属の LUCI を置き換えるため、インストール時にルーターのデフォルトの 80 番ポートを先に変更する必要があります。例えば 8080 に変更します。前のチュートリアルでも触れました。
そうしないとエラーが発生する可能性があります。また、起動時の自動起動スクリプトでは nginx.conf を使用して起動しないため、別の設定ファイルを変更する必要があります。
ディレクトリは /etc/config/nginx で、拡張子のないファイル nginx を右クリックして開きます。
config main global
option uci_enable 'false' #ここをfalseに変更すれば大丈夫です。その後、システムの起動項目で再起動すれば、私たちの設定ファイルが使用されます。
これで大体の説明は終わりです。