Configuração inicial necessária desde a instalação do Apache no CentOS até ao arranque.


Data de Publicação:8 de Dezembro de 2020.



INFOMARTION > Configuração inicial necessária desde a instalação do Apache no CentOS até ao arranque.

Visão geral.

Este é o procedimento de configuração inicial necessário para instalar e iniciar o Apache no CentOS. A informação baseia-se no pressuposto de que o CentOS7 é utilizado.

As versões são as seguintes.

Versão CentOS7.6 (1810)
Versão Apache2.4.6

Tabela de Conteúdos

  1. instalar
  2. configuração básica
  3. resumo

1. instalar

Esta secção descreve a configuração do Apache desde a instalação até ao arranque.

1-1. Instalar o Apache

Executar a instalação do Apache através do comando yum. Efectuar o trabalho como utilizador root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd

1-2. Verificação do arranque (acesso http)

Verificar brevemente se está acessível. A instalação do Apache (httpd) com o comando yum permite o comando apachectl. Use isto para iniciar o Apache.

[root@hostname ~]# apachectl start
[root@hostname ~]# apachectl status
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-12-06 17:08:12 JST; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1303 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           |-1303 /usr/sbin/httpd -DFOREGROUND
           |-1304 /usr/sbin/httpd -DFOREGROUND
           |-1305 /usr/sbin/httpd -DFOREGROUND
           |-1306 /usr/sbin/httpd -DFOREGROUND
           |-1307 /usr/sbin/httpd -DFOREGROUND
           `-1308 /usr/sbin/httpd -DFOREGROUND

Dec 06 17:08:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Dec 06 17:08:12 localhost.localdomain httpd[1303]: AH00558: httpd: Could not reliably determ...ge
Dec 06 17:08:12 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

Se 'Active: active (running)' for devolvido como resultado da execução do comando 'apachectl status', o sistema começou com sucesso.

Depois aceda ao Apache a partir do seu navegador. Definir permissões http como firewall (ou iptables para CentOS6 e anteriores) só permite o acesso ssh por defeito no CentOS7. Gostaria também de colocar um conjunto de permissões colectivas para https. Adicionar também a opção 'permanente' para tornar a configuração permanente.

[root@hostname ~]# firewall-cmd --permanent --add-service=http
[root@hostname ~]# firewall-cmd --permanent --add-service=https
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Não há problema se 'http' e 'https' tiverem sido acrescentados a 'serviços'. Acesso via browser. No meu caso, o endereço IP do servidor é 192.168.50.10, pelo que acedo a "http://192.168.50.10". Não há problema se aparecer a seguinte página

Uma vez que o sistema tenha sido iniciado com sucesso, pare-o.

[root@hostname ~]# apachectl stop

2. configuração básica

2-1. Criação de pasta de saída de ficheiros de registo

Para gerir o registo sob /var/log/, criar um directório httpd sob /var/log/ como uma pasta para registos Apache.

As permissões (permissões) devem ser 755. Esta configuração permite ao Apache escrever, mas outros utilizadores só podem ler. Se outros utilizadores puderem escrever, os registos podem ser adulterados.

mkdir /var/log/httpd' não precisa de ser executado se já tiver sido criado um directório com o mesmo nome.

[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd

Utilize este último procedimento para alterar as definições de destino de saída de registo Apache.

Este procedimento é apenas um procedimento para a criação de uma pasta para os registos a serem armazenados.

2-2. Definição do domínio

Alterar as definições de domínio listadas em httpd.conf. A configuração do Apache é basicamente centralizada em httpd.conf, por isso, se quiser alterar a configuração, modifique o httpd.conf. Os domínios não precisam de ser criados se o ambiente for local (não aberto ao público na Internet).

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

# Descomentar e activar a configuração ServerName. O nome de domínio é definido de acordo com o ambiente.

httpd.conf【Antes da mudança】


#ServerName www.example.com:80

httpd.conf【após a mudança】


ServerName domainname:80

2-3. Activação de módulos e ficheiros de configuração SSL

Habilitar SSL para permitir o acesso sobre https. As definições SSL estão relacionadas com SEO, e http não é uma boa ideia por razões de segurança em primeiro lugar, por isso, a menos que tenha de usar http, use https.

Instalar o módulo ssl com yum.

[root@hostname ~]# yum -y install mod_ssl

A instalação com yum activa automaticamente o módulo ssl, pelo que só precisa de o instalar. É também criado automaticamente um ficheiro de configuração. (/etc/httpd/conf.d/ssl.conf é criado automaticamente).

2-4. Alterar o caminho de saída do registo

Altere o destino de saída do registo Apache para a pasta de saída do ficheiro de registo que acabou de criar. Alterar apenas o ficheiro de configuração ssl, uma vez que será criado num passo posterior para ser acedido apenas via ssl (https).

[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf


ssl.conf【Antes da mudança】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~abridgement~

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


ssl.conf【após a mudança】


ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log

~abridgement~

CustomLog /var/log/httpd/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

A modificação acima muda o destino de saída do registo para "/var/log/httpd".


%t, %h', etc., esta é a configuração de formatação de registo. Segue-se uma lista de formatos que podem ser utilizados frequentemente como referência.

【参考】

・%T:Tempo necessário para processar o pedido (segundos)

・%h:Nome do anfitrião ou endereço IP do cliente. Só tentar resolver hostnameLookups se HostnameLookups estiver definido para On

・%r:Primeira linha do pedido

・%b:Bytes da resposta (excluindo os cabeçalhos HTTP). formato CLF, ou seja - se nenhum dos bytes for enviado

・%D:Tempo necessário para processar o pedido (microssegundos)

・%>s:Estado HTTP

2-5. Criação de certificados SSL

Procedimento para a criação de certificados. A auto-certificação é multa para operações privadas. Para servidores publicamente disponíveis, a auto-certificação deve ser desencorajada.

Não há diferença na segurança entre certificados normais e auto-certificados. Esta pode ser a diferença entre um certificado que pode ser julgado fiável por um terceiro e um que não pode. (Com auto-certificação, a barra URL fica vermelha). Assim, para servidores disponíveis ao público (servidores que são vistos por terceiros), emitir um certificado normal.

As configurações padrão do certificado para Apache são "/etc/pki/tls/certs/localhost.crt" e "/etc/pki/tls/private/localhost.key".

As definições podem ser encontradas em "SSLCertificateFile" e "SSLCertificateKeyFile" em "/etc/httpd/conf.d/ssl.conf".


【Para auto-certificação】

Para criar um auto-certificado, executar o seguinte comando. Funciona como utilizador root.

Executando 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' pedir-lhe-á uma resposta várias vezes, todas com Enter, sem problemas. Isto será informação sobre quem está a emitir o certificado (por exemplo, em que país vivem e qual é o seu endereço electrónico). Se estiver a emitir um certificado normal, introduza as informações correctas e configure-o.

[root@hostname ~]# openssl genrsa > /etc/pki/tls/private/localhost.key
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.csr
[root@hostname ~]# openssl x509 -req -signkey /etc/pki/tls/private/localhost.key < /etc/pki/tls/certs/localhost.csr > /etc/pki/tls/certs/localhost.crt

【Para certificados normais】

Para criar um certificado normal, executar o seguinte comando. Funciona como utilizador root.

[root@hostname ~]# openssl genrsa -out /etc/pki/tls/private/localhost.key 2048
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.csr

Para certificados regulares, isto não é suficiente para completar o processo. O trabalho envolve a entrega do 'server.csr' criado à Autoridade Certificadora para que seja emitido um certificado de servidor e a instalação do certificado de servidor que tenha sido emitido.

2-6. SSL (Secure Socket Layer) permanente

Não é boa segurança se o acesso for feito através de http, por isso adicione uma configuração para redireccionar para https se o acesso for feito através de http.

É possível proibir o acesso via http, mas de um ponto de vista de usabilidade, recomenda-se a criação de um redireccionamento. Executar as seguintes tarefas como utilizador root.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Acrescentar o seguinte no final.

httpd.conf


<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

É possível alterar esta configuração para que os acessos que entram em http sejam tratados em https.

Afirma-se que esta configuração não funciona se vier por https. (RewriteCond %{HTTPS} off)

Não se esqueça de mencionar que sem esta configuração, os acessos https também serão redireccionados, resultando num loop infinito.

2-7. Confirmação da activação (acesso https).

Agora que as várias configurações foram concluídas, verifique se o site pode ser acedido através de https. Comece primeiro.

[root@hostname ~]# apachectl start

Acesso via browser. O mesmo que para o acesso http, mas no meu caso o endereço IP do servidor é 192.168.50.10, por isso acedo a "http://192.168.50.10".

O URL é alterado de "http://192.168.50.10" para "https://192.168.50.10" porque a configuração do redireccionamento http está incluída.

Agora que foi iniciado com sucesso, parar o Apache.

[root@hostname ~]# apachectl stop

2-8. Configuração de arranque automático

Finalmente, embora não seja obrigatório, é difícil iniciar o Apache de cada vez que o servidor é reiniciado, pelo que é posta em prática uma configuração para que o Apache arranque automaticamente quando o servidor é iniciado. Também se regista para o comando systemctl. Note que este procedimento é para o CentOS7, por isso, se estiver a utilizar algo que não o CentOS7, terá de usar o comando Service para lidar com isto.

Criar um ficheiro 'apache.service' e descrever as configurações necessárias.

[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service

É fornecida a seguinte informação.

[Unit]
#Descrição.
Description=Apache
#Controlo pré e pós-execução.
#Before=xxx.service
#After=xxx.service

[Service]
#Designação do utilizador e do grupo
User=root
Group=root
#Uma vez activado, definir o estado para Activado.
Type=oneshot
RemainAfterExit=yes
#Iniciar, parar e recarregar.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Configurações equivalentes ao nível de execução 3.
WantedBy=multi-user.target

Quando tiver terminado de o descrever, registe-o com o comando systemctl.

[root@hostname ~]# systemctl enable apache
[root@hostname ~]# systemctl is-enabled apache
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep apache
apache.service                                enabled
[root@hostname ~]# systemctl daemon-reload


3. resumo

Descrevemos a configuração inicial necessária quando o Apache é instalado.

O Apache funciona basicamente até certo ponto com as configurações padrão, mas se realmente o personalizar, consulte por favor as configurações de destino de saída de registo e as configurações SSL, que deverá alterar ao operar o sistema.

Obrigado por ter observado até ao fim.