jxyblog

jxyblog

email

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

まず、サーバーを構築するには、他の人が直接あなたのアドレスにアクセスできるパブリック IP が必要です。以前は IPv4 アドレスを使用していましたが、全世界で 42 億個のアドレスしかなく、全く足りません。そのため、多くの人が 1 つの IP を共有しています。

簡単に言うと、あなたが 1 つの IP を取得し、ルーターを使って他の人がインターネットに接続できる無数の IP を分配するという原理です。多くの人が共有しているため、サーバーを構築することができません。

そこで、IPv6 が登場しました。地球上のすべての砂粒にアドレスを割り当てることができると言われており、その数は私たちが宇宙時代に入らない限り使い切ることは不可能です。

現在、IPv6 はほぼ全面的に普及していますが、国内のネットワーク環境は本当に複雑で、多くの人が古いルーターを使用していたり、ルーターの設定ができなかったりするため、多くの人が正常に IPv6 のウェブサイトにアクセスできません。

現在、すべての通信事業者のブロードバンドはほぼ IPv6 をサポートしていますが、アクセスできない理由は、あなたのルーターが古すぎるか、IPv6 が設定されていないためです。しかし、あなたはコンピュータを光モデムに直接接続するか、スマートフォンの Wi-Fi をオフにしてモバイルデータを使用すれば、IPv6 のウェブサイトにアクセスできます。

もちろん、悪いニュースもあります。一部の地域では、通信事業者がポート 80 と 443 を封鎖しています。この 2 つのポートはウェブサイト専用のポートで、封鎖されると非常に厄介です。例えば、私のブログにアクセスする場合、通常はhttp://jxyblog.top です。

ポートが封鎖されている場合、ポートを変更する必要があります。http://jxyblog.top:89 のように、ブラウザでアクセスする際には後ろのポート番号を付けなければならず、非常に面倒です。

また、光モデム内部にファイアウォールが設定されている場合、外部からあなたのウェブサイトにアクセスすることはできません。光モデムのスーパーパスワードを取得してファイアウォールをオフにするか、ブリッジモードに変更してルーターでダイヤルアップする必要があります。この 2 つの状況では、光モデムのスーパーパスワードが必要です。

ですので、あなたの光モデムの内部ファイアウォールがデフォルトでオフになっていることを祈ってください。そうすれば、面倒なことはなく、接続するだけで直接使用できます。

OpenWRT ルーターを手に入れた後のいくつかの必須準備作業#

まず、IPv6 アドレスを取得できる必要があります。私のネットワークは光モデムでダイヤルアップしており、ルーターではなく、私のコンピュータは光モデムの 1 つのポートに直接接続され、ルーターは別のポートに接続されています。私のコンピュータとルーターの両方が IPv6 アドレスを取得できます。

ルーターが正常にインターネットに接続できることを確認し、まずコンピュータをルーターの LAN ポートに接続し、次に 192.168.1.1 のルーター管理インターフェースにログインします。最初に中国語サポートとシステムタイムゾーンをインストールします。

初回ログイン時にデフォルトのパスワードを変更するように求められますので、そのまま変更してください。ユーザー名は変更せず、デフォルトの root のままで大丈夫です。

111

次に、上部の 2 番目の system タブをクリックし、software オプションを選択し、最後に update opkg ボタンをクリックします。このステップは正常にインターネットに接続されている必要があります。

しばらく待つと更新が完了し、すべてのインストール可能なソフトウェアパッケージが表示されます。最初のボックスに luci-i18n-base-zh-cn と入力すると、OpenWRT の中国語パッケージがインストールされ、これでリフレッシュすると直接中国語のインターフェースに変わります。

次に、zoneinfo-asia を入力してシステムタイムゾーンサポートパッケージをインストールします。インストールが完了したら、上部のシステム - システムをクリックし、タイムゾーンを設定し、Asia/Shanghai に設定します。

222222222

セカンダリールーターとして、ルーターの LAN ポートアドレスを変更することをお勧めします。上部のネットワーク - インターフェースをクリックし、緑色の LAN ポートが表示されます。右側の編集をクリックし、IPv4 の 192.168.1.1 を 192.168.2.1 に変更します。

その後、右下の保存して適用をクリックすると、ルーターが再起動します。以降は 192.168.2.1 でルーターの管理にログインします。

ルーターの準備が整ったら、lighttpd サーバーをインストールします#

すべてが始まる前に、WinSCP というツールが必要です。もちろん、公式サイトからダウンロードできますが、公式のものは英語版のようですので、ここでは中国語版を提供します。
WinSCP 中文版.rar,提取码: 9tsm,大小:6.18Mb

私たちは始めから終わりまでこのツールだけを使用します。ルーターにファイルを直接コピーすることも、コマンドラインを打たずに設定ファイルを直接変更することもできますので、事前にダウンロードしておきましょう。

ウェブサイトがポート 80 でアクセスできるようにするために、ルーターのポートを変更する必要があります。そうしないと、ポートの競合が発生し、lighttpd を起動できません。
/etc/config/ を開き、その中に uhttpd ファイルがあります。右クリックして編集し、以下の 4 つの項目を次のように変更します。

list listen_http '0.0.0.0:8080'
list listen_http '[::]:8080'
list listen_https '0.0.0.0:444'
list listen_https '[::]:444'

ここでは、ルーターの管理インターフェースのポートを 8080 に変更しています。これからルーターを管理する際には、192.168.2.1:8080 というアドレスでログインします。

ここで uhttpd について説明します。これは lighttpd と同様にウェブサーバーであり、私たちがウェブページでルーターの管理インターフェースにログインするのはこれによって実現されています。2 つのサーバーが競合しないようにするために、ポートを変更する必要があります。
もちろん、上級者は lighttpd をインストールせずに、uhttpd+php を直接使用してデプロイすることもできます。

次に、ルーターのシステム - 再起動をクリックします。ルーターが再起動したら、ブラウザのアドレスにhttp://192.168.2.1:8080 と入力してルーターにログインします。

ルーターにログインしたら、システム - ソフトウェアパッケージをクリックし、まずソフトウェアパッケージを更新します。
更新が完了したら、フィルターに lighttpd と入力してインストールをクリックします。自動的に他の依存パッケージもインストールされます。

インストールが完了したら、lighttpd-mod-fastcgi と lighttpd-mod-rewrite をインストールします。fastcgi は PHP と接続するためのインターフェースで、必ずインストールする必要があります。

rewrite はリライトコンポーネントで、ウェブサイトの擬似静的用に使用されます。インストールしてもしなくても構いませんが、実際にはこのコンポーネントには 1 つの設定ファイルしかなく、サイズは 1Kb 未満ですので、インストールしておくと良いでしょう。

次に、上記で言及した WinSCP を使用します。ソフトウェアを開くと、新しいサイトを作成するためのウィンドウがポップアップします。

ファイルプロトコル:scp
ホスト名:192.168.2.1 ポート番号:22 #ルーター管理アドレス
ユーザー名:root パスワード:123456 #あなたのルーターのアカウントとパスワード
次に保存をクリックし、パスワードを保存するオプションを選択します。
その後、ログインをクリックすれば、ルーター内のすべてのファイルを見ることができます。

次に、設定ファイルを変更します。/etc/lighttpd/lighttpd.conf を開き、lighttpd.conf を右クリックして編集します。

以下の項目を変更します。後ろはあなたのウェブサイトファイルの保存ディレクトリで、自由に変更できます。
注意:ルーターのストレージが十分でない限り、RAM に置く方が良いです。ROM のストレージが十分であるか、外付けの USB メモリがある場合は無視してください。
tmp ディレクトリは RAM 内にあり、一度電源が切れると、内部のデータはすべて失われます。私は www ディレクトリを作成してウェブサイトファイルを保存しています。
var.server_root = "/tmp/www/"

変更が完了したら、他の部分はそのままで、以下の項目を追加します。

server.use-ipv6 = "enable"
server.port = 80
$SERVER["socket"] == "0.0.0.0:80"

これらの 3 行は、IPv6 を有効にし、ポート 80 をリッスンし、IPv6 と IPv4 の両方を同時にリッスンできることを意味します。
変更が完了したら、左上の保存をクリックします。

変更後、lighttpd を再起動する必要があります。ルーター - システム - 起動項目の中で lighttpd を見つけてクリックし、再起動します。

次に、ルーター - 状態 - システムプロセスをクリックして、以下のタスクが実行されているか確認します。
2954 http /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

もしあれば、ウェブサーバーが正常に起動したことを示しています。/tmp/www/ に index.html ファイルをコピーし、ブラウザでhttp://192.168.2.1 にアクセスします。

ウェブページが正常に表示されれば、ウェブサーバーの構築が成功したことになります。この時点では静的ファイルしか置けず、PHP は実行できませんが、これらは後で徐々に書いていきます。

lighttpd がインストールされたので、次は PHP と SQLite、ウェブサイトのアップロードをインストールします#

引き続き、ルーターのシステム - ソフトウェアパッケージをクリックし、テキストボックスに php と入力します。
インストールする必要がある主なものは php8 と php8-cgi の 2 つです。この 2 つがインストールされたら、以下の一連のサポートパッケージもインストールします。
php8-mod-bcmath
php8-mod-calendar
php8-mod-ctype
php8-mod-dom
php8-mod-filter
php8-mod-iconv
php8-mod-mbstring
php8-mod-session
php8-mod-sockets
php8-mod-sqlite3
php8-mod-tokenizer
php8-mod-xml

以上がすべてインストールされたら、最後にデータベース libsqlite3-0 をインストールします。
すべてのインストールが完了し、すべての準備が整ったら、次は設定ファイルを変更するだけです。

PHP 設定ファイルの変更
以前使用した WinSCP を使って /etc ディレクトリを開き、php.ini を見つけて右クリックして編集します。
変更する必要があるのは 2 つの場所だけです。

cgi.fix_pathinfo = 1
doc_root = "/tmp/www"

上記の 2 つの項目を変更するだけで、他はそのままで大丈夫です。
最後に、以下のタイムゾーン設定を末尾に追加して保存し、閉じます。
date.timezone = Asia/Shanghai
PHP 設定の変更が完了しました。

次は lighttpd の fastcgi 設定です。
WinSCP を使って /etc/lighttpd/conf.d/30-fastcgi.conf ファイルを右クリックして編集します。
下部に以下のコードを追加します。

fastcgi.server = ( ".php" =>
                     ((
                       "socket" => "/tmp/php-fastcgi.socket",
                       "bin-path" => "/usr/bin/php8-cgi",
                       "bin-environment" => (
                         "PHP_FCGI_CHILDREN" => "2",
                         "PHP_FCGI_MAX_REQUESTS" => "100",
                       ),
                       "max-procs" => 1,
                       "broken-scriptfilename" => "enable",
                     )
               )
        )

その後、保存して閉じます。
次に、ルーターのシステム - 起動項目をクリックし、lighttpd を再起動します。

次に、ルーターの状態 - システムプロセスをクリックして、以下のプログラムが実行されているか確認します。
/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
/usr/bin/php8-cgi
php8-cgi のプロセスは 3 つあるはずです。ルーターの設定が低いため、私は 3 つのプロセスに設定しました。
これで大功告成です。

サーバーの構築が完了しました。最新の Typecho ファイルをダウンロードし、WinSCP を使って /tmp/www/ にコピーします。index.php が www ディレクトリにあることを確認してください。

次に、www フォルダを右クリックし、プロパティをクリックしてファイル権限を変更します。以下のチェックを入れます。
√R √W √X
√R √W √X
√R √W √X
八進法表 0777
√ グループ、所有者、権限を循環設定

完了したら、ブラウザを開いてhttp://192.168.2.1 と入力します。
この時点で Typecho のインストール画面が開くはずですので、指示に従ってインストールしてください。
これでウェブサイトの構築が完全に完了しました。

次に、ルーターに IPv6 アドレスがあり、ドメインがバインドされている場合は、ルーターのファイアウォールで WAN ポートの受信データを設定します。
ルーターのネットワーク - ファイアウォールをクリックし、WAN ポートを開放します。

3333333

その後、保存して適用をクリックします。この時点で、スマートフォンからアクセスできるはずです。

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