Meu servidor LAMP não funciona depois de mudar para uma nova casa

Meu servidor LAMP não funciona depois de mudar para uma nova casa

Eu hospedo dois sites em uma instância Apache2 que roda em um Raspberry Pi3 (mais informações sobre versões e configurações abaixo): Website1 é um site estático que codifiquei do zero, enquanto website2 roda em Wordpress.

Eu morava em um apartamento onde o ISP fornecia um IP público estático, mas recentemente me mudei para uma nova casa, onde o ISP não oferece essa opção. Tenho tentado reconfigurar tudo, mas não consigo fazer tudo funcionar novamente.

Configurações

Eu tenho um Raspberry Pi 3 rodando a versão mais recente do Raspbian

$ 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"

No meu roteador (modelo Alcatel-Lucent G240W-B:) eu abriporta XX para httpeporta YY para ssh(Não estou usando portas padrão para aumentar a segurança)

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

Estou executando o apache2

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

com dois sites ativados

$ 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

Este é meuports.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

O/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

E o O/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

Eu configurei um DNS dinâmico com NoIP (mydomain.ddns.net) que é atualizado através do meu roteador

O que funciona e o que não funciona

  • O SSH funciona bem e posso me conectar ao meu raspberry pi dentro e fora da minha rede doméstica - quando verifico se a porta YY está aberta a partir de uma ferramenta de verificação de porta, recebo uma resposta positiva

  • HTTP é mais problemático: apesar da porta estar fechada (pelo menos de acordo com os verificadores de porta), posso ver o site1 (que é o servidor padrão do Apache) de

    • endereço IP interno: 192.168.1.100:XX
    • endereço IP público: {my-public-ip}:XX
    • nome de host DNS dinâmico meudomínio.ddns.net

Porém, como desta forma só consigo acessar o site1, e não o site2, tentei desabilitar o site1 ( sudo a2dissite website1.com.conf) e reiniciar o 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

No entanto, ainda não consigo acessar o site2 pelo IP interno ou público, nem pelo nome do host DDNS.

Alterando URL do Wordpress

Eu pensei que isso poderia estar relacionado ao Wordpress e de fato descobriEste artigoe segui as instruções para [alterar a URL diretamente no banco de dados][2]. Na verdade, os valores 'home' e 'url' eram iguais ao meu antigo IP estático público, então mudei para o meu DDNS (myhostname.ddns.net). No entanto, o site ainda está inacessível

Para sua informação, minha primeira prioridade seriapara poder acessar o site2e veja seu conteúdo, seja através de IP interno ou externo, ou DDNS hostnmae.

Responder1

Então acho que entendi... talvez... O problema pode ser a maneira como você está testando isso. No computador que você está usando para testar (não no RPi), edite seu arquivo host para apontar www.website1.com e www.website2.com para o endereço IP interno do seu RPi (enquanto você estiver na mesma rede).

Instruções sobre o arquivo hosts: https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/

Em seguida, aponte seu navegador para www.website1.com e depois para www.website2.com.

Se funcionar, altere seu arquivo hosts para apontar esses sites para seu endereço IP externo.

Explicação: Parte do handshake entre o navegador e o servidor web inclui o site que você está solicitando. Isso permite que mais de um site seja hospedado no mesmo servidor web. Como sua configuração do Apache indica os aliases como www.website1.com e www.website2.com, mas você está solicitando seu endereço IP no site. O Apache respondeu com www.website1.com porque esse está definido como seu site padrão.

Responder2

No final foi a configuração do roteador: a porta de entrada (porta WAN) deveria ser configurada para 80, e a porta interna (porta LAN) para qualquer porta que meu roteador estivesse escutando.

informação relacionada