jxyblog

jxyblog

email

openwrtルーターでウェブサーバーを構築する、Nginx+php+Sqlite

もしルーターに USB ポートがあり、フラッシュメモリが少なくとも 32Mb 以上であれば、サーバーを Nginx+php+Sqlite に変更できます。

以前、openwrt ルーターで lighttpd+php+Sqlite を構築するチュートリアルを投稿しましたが、大体同じ内容なので、まずは前のものを見てください。この記事では主に設定ファイルを記録します。

openwrt ルーターで lighttpd+sqlite+php ウェブサーバーを構築する

最初はルーター全体のルートディレクトリを拡張しようと思いましたが、後でバックアップやメンテナンスが難しいと思い直しました。USB が壊れたらすべてのサービスを再インストールしなければなりません。

現在はウェブサイトのディレクトリを USB に置いており、Sqlite データベースの利点はウェブサイトと一緒に置けることです。一括でバックアップでき、サーバーを移動するのも簡単で、データベースのアドレスを変更するだけで済みます。

今は nginx に移行しており、すべてのソフトウェアはルーターにインストールされています。電源が切れても失われることはなく、Nginx+php+Sqlite の 3 つのセットにいくつかの他のコンポーネントを加えても、ルーターのフラッシュメモリの使用量は約 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に変更すれば大丈夫です。そうすれば、システムの起動項目で再起動する際に私たちの設定ファイルが使用されます。

これで大体の設定は完了です。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。