새 집으로 이사한 후 LAMP 웹서버가 작동하지 않습니다

새 집으로 이사한 후 LAMP 웹서버가 작동하지 않습니다

저는 Raspberry Pi3에서 실행되는 Apache2 인스턴스에서 두 개의 웹 사이트를 자체 호스팅합니다(버전 및 구성에 대한 자세한 내용은 아래 참조). Website1은 제가 처음부터 코딩한 정적 웹 사이트이고, 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-B)에서 열었습니다.http용 포트 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

두 개의 웹사이트가 활성화된 경우

$ 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가 더 문제가 됩니다. 문이 닫혀 있음에도 불구하고(적어도 포트 검사기에 따르면) 다음에서 website1(아파치의 기본 서버)을 볼 수 있습니다.

    • 내부 IP 주소: 192.168.1.100:XX
    • 공개 IP 주소: {my-public-ip}:XX
    • 동적 DNS 호스트 이름 mydomain.ddns.net

하지만 이 방법으로는 website1에만 접속할 수 있고 website2에는 접속할 수 없기 때문에 website1을 비활성화하고 ( ) Apache를 다시 시작하려고했습니다 sudo a2dissite website1.com.conf( 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나 DDNS 호스트 이름에서는 여전히 website2에 액세스할 수 없습니다.

워드프레스 URL 변경

나는 이것이 Wordpress와 관련이 있을 것이라고 생각했고 실제로 발견했습니다.이 기사[데이터베이스에서 직접 URL을 변경][2]하라는 지침을 따랐습니다. 실제로 'home' 및 'url' 값은 이전 공용 고정 IP와 동일했기 때문에 DDNS(myhostname.ddns.net)로 변경했습니다. 그런데 아직 사이트 접속이 안되네요

참고로, 내 최우선 순위는웹사이트에 접속할 수 있도록 2내부 또는 외부 IP 또는 DDNS 호스트 nmae를 통해 내용을 볼 수 있습니다.

답변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을 선택하세요.

작동한다면 해당 웹사이트가 외부 IP 주소를 가리키도록 호스트 파일을 변경하세요.

설명: 웹 브라우저와 웹 서버 간 핸드셰이크의 일부에는 사용자가 요청하는 사이트가 포함됩니다. 이를 통해 동일한 웹 서버에서 둘 이상의 사이트를 호스팅할 수 있습니다. Apache 구성에는 별칭이 www.website1.com 및 www.website2.com으로 명시되어 있지만 IP 주소에 대한 웹 사이트를 요청하고 있습니다. Apache는 www.website1.com이 기본 사이트로 설정되어 있으므로 응답했습니다.

답변2

결국 그것은 라우터 구성이었습니다. 수신 포트(WAN 포트)는 80으로 설정되어야 하고, 내부 포트(LAN 포트)는 내 라우터가 수신하는 포트로 설정되어야 합니다.

관련 정보