Wymagana wstępna konfiguracja od instalacji Apache na CentOS do uruchomienia.


Data publikacji:8 grudnia 2020 r.



INFOMARTION > Wymagana wstępna konfiguracja od instalacji Apache na CentOS do uruchomienia.

Przegląd.

Jest to procedura wstępnej konfiguracji wymagana do zainstalowania i uruchomienia Apache w systemie CentOS. Informacje opierają się na założeniu, że używany jest system CentOS7.

Wersje są następujące.

Wersja CentOS7.6 (1810)
Wersja Apache2.4.6

Spis treści

  1. zainstalować
  2. ustawienie podstawowe
  3. streszczenie

1. zainstalować

W tym rozdziale opisano konfigurację Apache od momentu instalacji do uruchomienia.

1-1. Instalowanie Apache

Instalację Apache przeprowadza się za pomocą polecenia yum. Wykonaj pracę jako użytkownik root.

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

1-2. Kontrola uruchamiania (dostęp przez http)

Sprawdź krótko, czy jest on dostępny. Zainstalowanie Apache (httpd) za pomocą polecenia yum umożliwia korzystanie z polecenia apachectl. Użyj tego przycisku, aby uruchomić 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.

Jeśli w wyniku wykonania polecenia "apachectl status" zostanie zwrócony komunikat "Active: active (running)", oznacza to, że system został uruchomiony pomyślnie.

Następnie należy uzyskać dostęp do Apache z poziomu przeglądarki. Ustaw uprawnienia http, ponieważ firewall (lub iptables dla CentOS6 i wcześniejszych) domyślnie zezwala na dostęp tylko do ssh w CentOS7. Chciałbym również wprowadzić zbiorcze ustawienia uprawnień dla https. Dodaj także opcję "permanent", aby konfiguracja była trwała.

[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:

Jeśli do pola "services" zostały dodane słowa "http" i "https", jest w porządku. Dostęp przez przeglądarkę. W moim przypadku adres IP serwera to 192.168.50.10, więc wchodzę na stronę "http://192.168.50.10". Jeśli zostanie wyświetlona następująca strona, będzie dobrze.

Po pomyślnym uruchomieniu systemu należy go zatrzymać.

[root@hostname ~]# apachectl stop

2. ustawienie podstawowe

2-1. Tworzenie folderu wyjściowego pliku dziennika

Aby zarządzać logowaniem pod /var/log/, należy utworzyć katalog httpd pod /var/log/ jako folder dla logów Apache'a.

Uprawnienia (permissions) powinny wynosić 755. Dzięki temu Apache może pisać, ale inni użytkownicy mogą tylko czytać. Jeśli inni użytkownicy mogą pisać, dzienniki mogą zostać zmanipulowane.

Nie trzeba wykonywać polecenia 'mkdir /var/log/httpd', jeśli katalog o tej samej nazwie został już utworzony.

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

Ta ostatnia procedura służy do zmiany ustawień miejsca docelowego wyjścia dziennika Apache.

Ta procedura służy jedynie do utworzenia folderu, w którym będą przechowywane dzienniki.

2-2. Ustawienie domeny

Zmień ustawienia domeny wymienione w pliku httpd.conf. Konfiguracja Apache'a jest w zasadzie scentralizowana w pliku httpd.conf, więc jeśli chcesz zmienić konfigurację, zmodyfikuj httpd.conf. Domeny nie muszą być zakładane, jeśli środowisko jest lokalne (nie jest publicznie dostępne w Internecie).

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

# Usunąć fragment i włączyć ustawienie ServerName. Nazwa domeny jest ustawiana w zależności od środowiska.

httpd.conf【Przed zmianą】


#ServerName www.example.com:80

httpd.conf【po zmianie】


ServerName domainname:80

2-3. Aktywacja modułów SSL i plików konfiguracyjnych

Włącz protokół SSL, aby umożliwić dostęp przez protokół https. Ustawienia SSL są związane z SEO, a http nie jest dobrym pomysłem ze względów bezpieczeństwa, więc jeśli nie musisz używać http, używaj https.

Zainstaluj moduł ssl za pomocą programu yum.

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

Instalacja za pomocą yum automatycznie włącza moduł ssl, więc wystarczy go zainstalować. Automatycznie tworzony jest także plik konfiguracyjny. (Plik /etc/httpd/conf.d/ssl.conf jest tworzony automatycznie).

2-4. Zmień ścieżkę wyjścia dziennika

Zmień miejsce docelowe wyjścia logów Apache na folder wyjściowy plików logów, który właśnie utworzyłeś. Zmień tylko plik konfiguracyjny ssl, ponieważ w kolejnym kroku zostanie on skonfigurowany tak, aby dostęp do niego był możliwy tylko przez protokół ssl (https).

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


ssl.conf【Przed zmianą】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~streszczenie~

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


ssl.conf【po zmianie】


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

~streszczenie~

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

Powyższa modyfikacja zmienia miejsce docelowe wyjścia dziennika na "/var/log/httpd".


'%t, %h' itd., jest to ustawienie formatowania dziennika. Poniżej znajduje się lista formatów, które mogą być często używane w celach referencyjnych.

【参考】

・%T:Czas potrzebny na przetworzenie żądania (sekundy)

・%h:Nazwa hosta lub adres IP klienta. Podejmuj próby rozwiązywania nazw hostów tylko wtedy, gdy opcja HostnameLookups jest ustawiona na On

・%r:Pierwszy wiersz wniosku

・%b:Bajty odpowiedzi (bez nagłówków HTTP). format CLF, tzn. jeśli żaden z bajtów nie zostanie wysłany

・%D:Czas potrzebny na przetworzenie żądania (mikrosekundy)

・%>s:Status HTTP

2-5. Tworzenie certyfikatów SSL

Procedura tworzenia certyfikatów. Samocertyfikacja jest dobra w przypadku operacji prywatnych. W przypadku publicznie dostępnych serwerów należy odradzać samocertyfikację.

Nie ma różnicy w bezpieczeństwie między zwykłymi certyfikatami a certyfikatami własnymi. Może to stanowić różnicę między certyfikatem, który może zostać uznany za wiarygodny przez stronę trzecią, a takim, który nie może. (W przypadku autocertyfikacji pasek adresu URL zmienia kolor na czerwony). Dlatego w przypadku publicznie dostępnych serwerów (serwerów, które są widoczne dla osób trzecich) należy wystawić zwykły certyfikat.

Domyślne ustawienia certyfikatów dla Apache to "/etc/pki/tls/certs/localhost.crt" i "/etc/pki/tls/private/localhost.key".

Ustawienia te można znaleźć w "SSLCertificateFile" i "SSLCertificateKeyFile" w pliku "/etc/httpd/conf.d/ssl.conf".


【W przypadku autocertyfikacji】

Aby utworzyć certyfikat własny, wykonaj następujące polecenie. Uruchom jako użytkownik root.

Uruchomienie polecenia 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' kilkakrotnie wyświetli monit o odpowiedź, wszystkie z Enterem, bez problemu. Będą to informacje o tym, kto wystawia certyfikat (np. w jakim kraju mieszka i jaki jest jego adres e-mail). Jeśli wystawiasz zwykły certyfikat, wprowadź prawidłowe informacje i skonfiguruj go.

[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

【W przypadku normalnych certyfikatów】

Aby utworzyć zwykły certyfikat, wykonaj następujące polecenie. Uruchom jako użytkownik 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

W przypadku zwykłych certyfikatów nie jest to wystarczające do zakończenia procesu. Praca polega na przekazaniu utworzonego pliku "server.csr" do Urzędu Certyfikacji w celu wydania certyfikatu serwera oraz zainstalowaniu wydanego certyfikatu serwera.

2-6. trwałe połączenie SSL (Secure Socket Layer)

Dostęp przez http nie jest dobrym zabezpieczeniem, dlatego dodaj ustawienie przekierowujące na https, jeśli dostęp odbywa się przez http.

Można zabronić dostępu przez protokół http, ale z punktu widzenia użyteczności zaleca się utworzenie przekierowania. Wykonaj następujące zadania jako użytkownik root.

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

Na końcu dodaj następującą treść.

httpd.conf


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

Można zmienić to ustawienie tak, aby dostępy przychodzące przez http były obsługiwane przez https.

Stwierdzono, że to ustawienie nie działa w przypadku połączenia przez protokół https. (RewriteCond %{HTTPS} off)

Nie należy zapominać, że bez tego ustawienia przekierowywane będą również wejścia https, co spowoduje powstanie niekończącej się pętli.

2-7. Potwierdzenie aktywacji (dostęp przez https).

Po wprowadzeniu różnych ustawień sprawdź, czy dostęp do witryny jest możliwy przez protokół https. Najpierw rozpocznij pracę.

[root@hostname ~]# apachectl start

Dostęp przez przeglądarkę. Tak samo jak w przypadku dostępu przez http, ale w moim przypadku adres IP serwera to 192.168.50.10, więc dostęp jest możliwy przez "http://192.168.50.10".

Adres URL został zmieniony z "http://192.168.50.10" na "https://192.168.50.10", ponieważ uwzględniono ustawienie przekierowania http.

Po pomyślnym uruchomieniu Apache'a należy go zatrzymać.

[root@hostname ~]# apachectl stop

2-8. Ustawienie automatycznego rozruchu

Wreszcie, choć nie jest to obowiązkowe, trudno jest uruchamiać Apache'a za każdym razem, gdy serwer jest restartowany, dlatego wprowadza się taką konfigurację, aby Apache uruchamiał się automatycznie przy starcie serwera. Rejestruje się również do polecenia systemctl. Należy pamiętać, że ta procedura dotyczy systemu CentOS7, więc jeśli używasz systemu innego niż CentOS7, będziesz musiał użyć polecenia Service, aby poradzić sobie z tym problemem.

Utwórz plik "apache.service" i opisz wymagane ustawienia.

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

Podane są następujące informacje.

[Unit]
#Opis.
Description=Apache
#Kontrola przed- i porealizacyjna.
#Before=xxx.service
#After=xxx.service

[Service]
#Oznaczenie użytkownika i grupy
User=root
Group=root
#Po aktywacji należy ustawić status na Aktywny.
Type=oneshot
RemainAfterExit=yes
#Uruchomienie, zatrzymanie i przeładowanie.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Ustawienia równoważne Runlevel 3.
WantedBy=multi-user.target

Po zakończeniu opisywania go należy go zarejestrować za pomocą polecenia 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. streszczenie

Opisaliśmy wstępną konfigurację wymaganą po zainstalowaniu Apache.

Apache zasadniczo działa w pewnym zakresie z ustawieniami domyślnymi, ale jeśli chcesz go dostosować do własnych potrzeb, zapoznaj się z ustawieniami miejsca docelowego wyjścia dziennika oraz ustawieniami SSL, które należy zmienić podczas pracy systemu.

Dziękujemy, że oglądaliście do końca.