新しい家に引っ越した後、LAMP ウェブサーバーが動作しなくなりました

新しい家に引っ越した後、LAMP ウェブサーバーが動作しなくなりました

私は、Raspberry Pi3 で実行される Apache2 インスタンスで 2 つの Web サイトを自分でホストしています (バージョンと構成の詳細については以下を参照)。Website1 は私が最初からコーディングした静的 Web サイトであり、website2 は Wordpress で実行されます。

以前、ISP が静的パブリック IP を提供していたアパートに住んでいましたが、最近、ISP がそのオプションを提供していない新しい家に引っ越しました。すべてを再設定しようとしましたが、すべてを再び機能させることができません。

構成

私はRaspbianの最新バージョンを実行しているRaspberry Pi 3を持っています

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

私のルーター(モデル:)Alcatel-Lucent G240W-Bhttp のポート XXそしてssh のポート YY(セキュリティを強化するために標準ポートは使用していません)

Application Name | WAN Connection | WAN Port | LAN Port | Internal Client | Protocol | Status
Customer settings | {my_wan_connection} |   XX~XX | XX~XX | 192.168.1.100 | TCPorUDP | ACTIVE
Customer settings | {my_wan_connection} | YY~YY | YY~YY | 192.168.1.100 | TCPorUDP | ACTIVE

私はapache2を実行しています

$ apache2 -v
Server version: Apache/2.4.25 (Raspbian)
Server built:   2019-08-19T19:25:31

2つのウェブサイトが有効

$ sudo apache2ctl -S
VirtualHost configuration:
*:XX                 is a NameVirtualHost
         default server mydomain.ddns.net (/etc/apache2/sites-enabled/website1.com.conf:1)
         port XX namevhost mydomain.ddns.net (/etc/apache2/sites-enabled/website1.com.conf:1)
                 alias website1.com
                 alias www.website1.com
         port XX namevhost mydomain.ddns.net (/etc/apache2/sites-enabled/website2.com.conf:1)
                 alias www.wesbiste2.com
                 alias wesbiste2.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: MODSEC_2.5
Define: MODSEC_2.9
User: name="www-data" id=33
Group: name="www-data" id=33

これは私のports.conf

$ sudo cat ports.conf 
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 0.0.0.0:XX

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

/etc/apache2/sites-enables/website1.conf


<VirtualHost *:XX>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin [email protected]
        ServerName mydomain.ddns.net
        ServerAlias website1.com
        ServerAlias www.website1.com
        DocumentRoot /var/www/website1/public_html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

そして、/etc/apache2/sites-enables/website2.conf

<VirtualHost *:XX>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin [email protected]
        ServerName mydomain.ddns.net
        ServerAlias www.website2.com
        ServerAlias website2.com
        DocumentRoot /var/www/website2/public_html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

私はルーターを通じて更新されるNoIP(mydomain.ddns.net)でダイナミックDNSを設定しました

何が機能し、何が機能しないか

  • SSHは正常に動作し、自宅のネットワーク内と外部の両方からラズベリーパイに接続できます。ポートチェックツールからドアYYが開いているかどうかを確認すると、肯定的な応答が得られます。

  • HTTPはもっと問題があります。ポートチェッカーによると、少なくともドアは閉じられているにもかかわらず、apacheのデフォルトサーバであるwebsite1が

    • 内部 IP アドレス: 192.168.1.100:XX
    • パブリック IP アドレス: {my-public-ip}:XX
    • ダイナミック DNS ホスト名 mydomain.ddns.net

sudo a2dissite website1.com.confしかし、この方法ではウェブサイト1にしかアクセスできず、ウェブサイト2にはアクセスできないため、ウェブサイト1( )を無効にしてApache(sudo systemctl restart apache2)を再起動しようとしました。

$ sudo apache2ctl -S
VirtualHost configuration:
*:XX                 mydomain.ddns.net (/etc/apache2/sites-enabled/website2.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: MODSEC_2.5
Define: MODSEC_2.9
User: name="www-data" id=33
Group: name="www-data" id=33

ただし、内部 IP やパブリック IP、DDNS ホスト名からでも website2 にアクセスできません。

Wordpress URLの変更

これはWordpressに関連しているかもしれないと思ったのですが、実際にこの記事そして、[データベースで直接URLを変更する]という指示に従いました[2]。確かに、「home」と「url」の値は私の古いパブリック静的IPと同じだったので、DDNS(myhostname.ddns.net)に変更しました。しかし、サイトはまだアクセスできません。

ちなみに、私の最優先事項はウェブサイト2にアクセスできるようにする内部または外部 IP、あるいは DDNS ホスト名を介してその内容を確認できます。

答え1

それで、私は理解したと思います... 多分... 問題は、これをテストする方法にあるかもしれません。テストに使用しているコンピューター (RPi ではありません) で、ホスト ファイルを編集して、www.website1.com と www.website2.com の両方を RPi の内部 IP アドレスにポイントします (同じネットワーク上にいる場合)。

ホストファイルに関する説明: https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/

次に、ブラウザで www.website1.com にアクセスし、次に www.website2.com にアクセスします。

それが機能する場合は、ホスト ファイルを変更して、それらの Web サイトを外部 IP アドレスにポイントします。

説明: Web ブラウザと Web サーバー間のハンドシェイクの一部には、要求するサイトが含まれます。これにより、同じ Web サーバーで複数のサイトをホストできます。Apache 構成ではエイリアスが www.website1.com および www.website2.com と指定されていますが、IP アドレスの Web サイトを要求しています。Apache は、デフォルト サイトとして設定されているため、www.website1.com で応答しました。

答え2

結局、それはルーターの設定でした。着信ポート (WAN ポート) は 80 に設定し、内部ポート (LAN ポート) はルーターがリッスンしているポートに設定する必要があります。

関連情報