Configurația inițială necesară de la instalarea Apache pe CentOS până la pornire.


Data publicării:8 decembrie 2020.



INFOMARTION > Configurația inițială necesară de la instalarea Apache pe CentOS până la pornire.

Prezentare generală.

Aceasta este procedura de configurare inițială necesară pentru a instala și porni Apache pe CentOS. Informațiile se bazează pe ipoteza că se utilizează CentOS7.

Versiunile sunt următoarele.

Versiunea CentOS7.6 (1810)
Versiunea Apache2.4.6

Cuprins

  1. instalați
  2. setarea de bază
  3. rezumat

1. instalați

Această secțiune descrie configurarea Apache de la instalare până la pornire.

1-1. Instalarea Apache

Efectuați instalarea Apache prin intermediul comenzii yum. Efectuați lucrările ca utilizator root.

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

1-2. Verificare la pornire (acces http)

Verificați pe scurt dacă este accesibil. Instalarea Apache (httpd) cu ajutorul comenzii yum activează comanda apachectl. Utilizați acest lucru pentru a porni 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.

Dacă "Active: active (running)" este returnat ca rezultat al executării comenzii "apachectl status", înseamnă că sistemul a pornit cu succes.

Apoi accesați Apache din browserul dumneavoastră. Setați permisiunile http, deoarece firewall-ul (sau iptables pentru CentOS6 și versiunile anterioare) permite doar accesul ssh în mod implicit pe CentOS7. Aș dori, de asemenea, să introduc o setare de permisiune colectivă pentru https. Adăugați, de asemenea, opțiunea "permanent" pentru a face configurația permanentă.

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

Este în regulă dacă "http" și "https" au fost adăugate la "services". Accesat prin browser. În cazul meu, adresa IP a serverului este 192.168.50.10, așa că am accesat "http://192.168.50.10". Este în regulă dacă apare următoarea pagină

După ce sistemul a fost pornit cu succes, opriți-l.

[root@hostname ~]# apachectl stop

2. setarea de bază

2-1. Crearea unui dosar de ieșire a fișierului jurnal

Pentru a gestiona jurnalizarea sub /var/log/, creați un director httpd sub /var/log/ ca un dosar pentru jurnalele Apache.

Permisiunile (permissions) ar trebui să fie 755. Această setare permite ca Apache să scrie, dar alți utilizatori pot doar să citească. Dacă alți utilizatori pot scrie, jurnalele pot fi falsificate.

'mkdir /var/log/httpd' nu trebuie să fie executat dacă un director cu același nume a fost deja creat.

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

Utilizați această din urmă procedură pentru a modifica setările privind destinația de ieșire a jurnalului Apache.

Această procedură este doar o procedură de creare a unui dosar în care să fie stocate jurnalele.

2-2. Setarea domeniului

Modificați setările de domeniu enumerate în httpd.conf. Configurația Apache este în principiu centralizată în httpd.conf, așa că, dacă doriți să schimbați configurația, modificați httpd.conf. Domeniile nu trebuie să fie configurate dacă mediul este local (nu este deschis publicului pe internet).

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

# Decomentați și activați setarea ServerName. Numele de domeniu este setat în funcție de mediu.

httpd.conf【Înainte de schimbare】


#ServerName www.example.com:80

httpd.conf【după modificare】


ServerName domainname:80

2-3. Activarea modulelor SSL și a fișierelor de configurare

Activați SSL pentru a permite accesul prin https. Setările SSL sunt legate de SEO, iar http nu este o idee bună din motive de securitate în primul rând, așa că, dacă nu trebuie să folosiți http, folosiți https.

Instalați modulul ssl cu yum.

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

Instalarea cu yum activează automat modulul ssl, așa că trebuie doar să îl instalați. De asemenea, se creează automat un fișier de configurare. (/etc/httpd/conf.d/ssl.conf este creat automat.)

2-4. Modificarea căii de ieșire a jurnalului

Schimbați destinația de ieșire a jurnalului Apache în folderul de ieșire a fișierului jurnal pe care tocmai l-ați creat. Modificați numai fișierul de configurare ssl, deoarece acesta va fi configurat într-o etapă ulterioară pentru a fi accesat numai prin ssl (https).

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


ssl.conf【Înainte de schimbare】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~abrevierea~

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


ssl.conf【după modificare】


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

~abrevierea~

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

Modificarea de mai sus schimbă destinația de ieșire a jurnalului în "/var/log/httpd".


"%t, %h", etc., aceasta este setarea de formatare a jurnalului. În cele ce urmează este prezentată o listă de formate care pot fi utilizate frecvent ca referință.

【参考】

・%T:Timpul necesar pentru procesarea cererii (secunde)

・%h:Numele de gazdă sau adresa IP a clientului. Încearcă să rezolve numele de gazdă numai dacă HostnameLookups este setat la Activat

・%r:Prima linie a cererii

・%b:Byte ale răspunsului (cu excepția antetelor HTTP). Formatul CLF, adică - dacă niciunul dintre octeți nu este trimis

・%D:Timpul necesar pentru procesarea cererii (microsecunde)

・%>s:Starea HTTP

2-5. Crearea de certificate SSL

Procedura de creare a certificatelor. Autocertificarea este bună pentru operațiunile private. În cazul serverelor accesibile publicului, autocertificarea ar trebui descurajată.

Nu există nicio diferență de securitate între certificatele normale și autocertificatele. Aceasta poate fi diferența dintre un certificat care poate fi considerat fiabil de către o terță parte și unul care nu poate fi considerat fiabil. (În cazul autocertificării, bara URL devine roșie.) Așadar, pentru serverele disponibile public (servere care sunt văzute de terți), emiteți un certificat normal.

Setările implicite ale certificatului pentru Apache sunt "/etc/pki/tls/certs/localhost.crt" și "/etc/pki/tls/private/localhost.key".

Setările pot fi găsite în "SSLCertificateFile" și "SSLCertificateKeyFile" din "/etc/httpd/conf.d/ssl.conf".


【Pentru autocertificare】

Pentru a crea un autocertificat, executați următoarea comandă. Rulați ca utilizator root.

Rularea "openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt" vă va solicita un răspuns de mai multe ori, toate cu Enter, fără probleme. Acestea vor fi informații despre persoana care emite certificatul (de exemplu, în ce țară locuiește și care este adresa de e-mail a acesteia). Dacă emiteți un certificat normal, introduceți informațiile corecte și configurați-l.

[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

【Pentru certificatele normale】

Pentru a crea un certificat normal, executați următoarea comandă. Rulați ca utilizator 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

Pentru certificatele obișnuite, acest lucru nu este suficient pentru a finaliza procesul. Activitatea implică transmiterea fișierului "server.csr" creat către autoritatea de certificare pentru a se emite un certificat de server și instalarea certificatului de server care a fost emis.

2-6. SSL (Secure Socket Layer) permanent

Nu este o securitate bună dacă accesul se face prin http, așa că adăugați o setare de redirecționare către https dacă accesul se face prin http.

Este posibil să se interzică accesul prin http, dar, din punct de vedere al utilizabilității, se recomandă configurarea unei redirecționări. Efectuați următoarele sarcini ca utilizator root.

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

Adăugați următorul text la sfârșit.

httpd.conf


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

Este posibil să modificați această setare, astfel încât accesările care intră pe http să fie tratate pe https.

Se precizează că această setare nu funcționează dacă veniți prin https. (RewriteCond %{HTTPS} off)

Nu uitați să menționați că, fără această setare, și accesările https vor fi redirecționate, ceea ce va duce la o buclă nesfârșită.

2-7. Confirmarea activării (acces https).

Acum că diferitele setări au fost finalizate, verificați dacă site-ul poate fi accesat prin https. Începeți mai întâi.

[root@hostname ~]# apachectl start

Accesat prin browser. La fel ca pentru accesul http, dar în cazul meu, adresa IP a serverului este 192.168.50.10, deci accesez "http://192.168.50.10".

URL-ul este modificat de la "http://192.168.50.10" la "https://192.168.50.10" deoarece este inclusă setarea de redirecționare http.

Acum că a fost pornit cu succes, opriți Apache.

[root@hostname ~]# apachectl stop

2-8. Setare pentru pornire automată

În cele din urmă, deși nu este obligatoriu, este dificil să porniți Apache de fiecare dată când serverul este repornit, așa că se pune în aplicare o configurație astfel încât Apache să pornească automat la pornirea serverului. De asemenea, se înregistrează la comanda systemctl. Vă rugăm să rețineți că această procedură este pentru CentOS7, așa că, dacă folosiți orice altceva decât CentOS7, va trebui să utilizați comanda Service pentru a rezolva această problemă.

Creați un fișier "apache.service" și descrieți setările necesare.

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

Sunt furnizate următoarele informații.

[Unit]
#Descriere.
Description=Apache
#Controlul înainte și după execuție.
#Before=xxx.service
#After=xxx.service

[Service]
#Desemnarea utilizatorului și a grupului
User=root
Group=root
#Odată activat, setați statutul pe Activat.
Type=oneshot
RemainAfterExit=yes
#Porniți, opriți și reîncărcați.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Setări echivalente Runlevel 3.
WantedBy=multi-user.target

După ce ați terminat de a-l descrie, înregistrați-l cu comanda 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. rezumat

Am descris configurația inițială necesară atunci când este instalat Apache.

În principiu, Apache funcționează într-o oarecare măsură cu setările implicite, dar dacă îl personalizați, vă rugăm să vă referiți la setările privind destinația ieșirii jurnalului și la setările SSL, pe care ar trebui să le modificați atunci când operați sistemul.

Vă mulțumim că ați urmărit până la sfârșit.