Začetna konfiguracija je potrebna od namestitve Apacheja v sistemu CentOS do zagona.
Datum objave:8. december 2020.
INFOMARTION > Začetna konfiguracija je potrebna od namestitve Apacheja v sistemu CentOS do zagona.
Pregled.
To je postopek začetne konfiguracije, ki je potreben za namestitev in zagon Apacheja v sistemu CentOS. Informacije temeljijo na predpostavki, da se uporablja sistem CentOS7.
Različice so naslednje.
Različica sistema CentOS | 7.6 (1810) |
---|---|
Različica Apache | 2.4.6 |
Kazalo vsebine
- namestitev
- osnovna nastavitev
- 2-1. Ustvarjanje izhodne mape dnevniške datoteke
- 2-2. Nastavitev domene
- 2-3. Aktivacija modulov SSL in konfiguracijskih datotek
- 2-4. Sprememba izhodne poti dnevnika
- 2-5. Ustvarjanje potrdil SSL
- 2-6. stalno SSL (Secure Socket Layer)
- 2-7. Potrditev aktivacije (dostop https).
- 2-8. Nastavitev samodejnega zagona
- povzetek
1. namestitev
V tem razdelku je opisana konfiguracija Apacheja od namestitve do zagona.
1-1. Namestitev Apacheja
Z ukazom yum namestite Apache. Delo opravite kot uporabnik root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd
1-2. Preverjanje zagona (dostop http)
Na kratko preverite, ali je dostopen. Namestitev programa Apache (httpd) z ukazom yum omogoči ukaz apachectl. Uporabite ga za zagon programa 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.
Če se pri izvajanju ukaza "apachectl status" vrne sporočilo "Active: active (running)", se je sistem uspešno zagnal.
Nato v brskalniku dostopajte do programa Apache. Nastavite dovoljenja http, saj požarni zid (ali iptables za CentOS6 in starejše) v CentOS7 privzeto dovoljuje le dostop ssh. Prav tako bi rad vnesel skupno nastavitev dovoljenja za https. Dodajte tudi možnost "trajno", da bo konfiguracija trajna.
[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:
V redu je, če sta v "storitve" dodana "http" in "https". Dostopno prek brskalnika. V mojem primeru je naslov IP strežnika 192.168.50.10, zato dostopam do "http://192.168.50.10". V redu je, če se prikaže naslednja stran
Ko sistem uspešno zaženete, ga ustavite.
[root@hostname ~]# apachectl stop
2. osnovna nastavitev
2-1. Ustvarjanje izhodne mape dnevniške datoteke
Če želite upravljati beleženje pod /var/log/, ustvarite imenik httpd pod /var/log/ kot mapo za dnevnike Apache.
Dovoljenja (permissions) morajo biti 755. S to nastavitvijo lahko Apache piše, drugi uporabniki pa lahko samo berejo. Če lahko v dnevnike pišejo tudi drugi uporabniki, je mogoče z njimi manipulirati.
'mkdir /var/log/httpd' ni treba izvesti, če je imenik z istim imenom že ustvarjen.
[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd
S slednjim postopkom spremenite nastavitve izhodnega cilja dnevnika Apache.
Ta postopek je le postopek za ustvarjanje mape za shranjevanje dnevnikov.
2-2. Nastavitev domene
Spremenite nastavitve domene, navedene v httpd.conf. Konfiguracija Apacheja je v bistvu centralizirana v httpd.conf, zato če želite spremeniti konfiguracijo, spremenite httpd.conf. Če je okolje lokalno (ni javno dostopno v internetu), domen ni treba nastaviti.
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
# Odčrtajte in omogočite nastavitev Ime strežnika. Ime domene je nastavljeno glede na okolje.
#ServerName www.example.com:80
ServerName domainname:80
2-3. Aktivacija modulov SSL in konfiguracijskih datotek
Omogočite SSL, da omogočite dostop prek protokola https. Nastavitve SSL so povezane s SEO, http pa iz varnostnih razlogov sploh ni dobra ideja, zato če ne morate uporabljati http, uporabite https.
Z yumom namestite modul ssl.
[root@hostname ~]# yum -y install mod_ssl
Namestitev z yumom samodejno omogoči modul ssl, zato ga morate samo namestiti. Samodejno se ustvari tudi konfiguracijska datoteka. (/etc/httpd/conf.d/ssl.conf se ustvari samodejno.)
2-4. Sprememba izhodne poti dnevnika
Spremenite izhodni cilj dnevnika Apache na izhodno mapo dnevniške datoteke, ki ste jo pravkar ustvarili. Spremenite samo konfiguracijsko datoteko ssl, saj bo v naslednjem koraku nastavljena tako, da bo dostopna samo prek ssl (https).
[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
~okrajšava~
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
~okrajšava~
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Zgornja sprememba spremeni izhodni cilj dnevnika v "/var/log/httpd".
'%t, %h' itd., je to nastavitev oblikovanja dnevnika. V nadaljevanju je seznam formatov, ki se lahko pogosto uporabljajo za sklicevanje.
【参考】
・%T:Čas obdelave zahteve (v sekundah)
・%h:Ime gostitelja ali naslov IP odjemalca. Poskus razrešitve gostiteljskih imen samo, če je možnost HostnameLookups nastavljena na On
・%r:Prva vrstica zahteve
・%b:Bajti odgovora (brez glave HTTP). format CLF, tj. - če ni poslan noben od bajtov
・%D:Čas obdelave zahteve (mikrosekunde)
・%>s:Stanje HTTP
2-5. Ustvarjanje potrdil SSL
Postopek za ustvarjanje potrdil. Samocertificiranje je v redu za zasebne dejavnosti. Pri javno dostopnih strežnikih je treba samopotrjevanje odsvetovati.
Med običajnimi potrdili in samopotrdili ni nobene razlike v varnosti. To je lahko razlika med potrdilom, ki ga tretja oseba lahko oceni kot zanesljivo, in potrdilom, ki ga ne more. (Pri samopotrditvi se vrstica URL obarva rdeče.) Za javno dostopne strežnike (strežnike, ki jih vidijo tretje osebe) izdajte običajno potrdilo.
Privzete nastavitve certifikata za Apache so "/etc/pki/tls/certs/localhost.crt" in "/etc/pki/tls/private/localhost.key".
Nastavitve so na voljo v datotekah "SSLCertificateFile" in "SSLCertificateKeyFile" v datoteki "/etc/httpd/conf.d/ssl.conf".
【Za samocertifikacijo】
Če želite ustvariti lastno potrdilo, izvedite naslednji ukaz. Zaženite kot uporabnik root.
Če zaženete 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt', boste večkrat zahtevali odgovor, vse z Enter, ni težav. To bodo informacije o izdajatelju potrdila (npr. v kateri državi živi in kakšen je njegov e-poštni naslov). Če izdajate običajno potrdilo, vnesite pravilne podatke in ga nastavite.
[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
【Za običajna potrdila】
Če želite ustvariti običajno potrdilo, izvedite naslednji ukaz. Zaženite kot uporabnik 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
Pri običajnih potrdilih to ne zadostuje za dokončanje postopka. Delo vključuje posredovanje ustvarjenega strežnika 'server.csr' overitelju za izdajo potrdila strežnika in namestitev izdanega potrdila strežnika.
2-6. stalno SSL (Secure Socket Layer)
Dostop prek protokola http ni dobra varnost, zato dodajte nastavitev za preusmeritev na https, če je dostop omogočen prek protokola http.
Dostop prek protokola http je mogoče prepovedati, vendar je z vidika uporabnosti priporočljivo nastaviti preusmeritev. Naslednja opravila opravite kot uporabnik root.
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
Na koncu dodajte naslednje.
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
To nastavitev je mogoče spremeniti tako, da se dostopi, ki prihajajo prek protokola http, obravnavajo prek protokola https.
Navedeno je, da ta nastavitev ne deluje, če pridete prek protokola https. (RewriteCond %{HTTPS} off)
Ne pozabite omeniti, da bodo brez te nastavitve preusmerjeni tudi dostopi https, kar bo povzročilo neskončno zanko.
2-7. Potrditev aktivacije (dostop https).
Po opravljenih različnih nastavitvah preverite, ali lahko do spletnega mesta dostopate prek protokola https. Najprej začnite z delovanjem.
[root@hostname ~]# apachectl start
Dostopno prek brskalnika. Enako kot za dostop http, vendar je v mojem primeru naslov IP strežnika 192.168.50.10, zato imam dostop "http://192.168.50.10".
URL se spremeni iz "http://192.168.50.10" v "https://192.168.50.10", ker je vključena nastavitev preusmeritve http.
Po uspešnem zagonu zaustavite Apache.
[root@hostname ~]# apachectl stop
2-8. Nastavitev samodejnega zagona
Čeprav to ni obvezno, je težko zagnati Apache ob vsakem ponovnem zagonu strežnika, zato je vzpostavljena konfiguracija, da se Apache samodejno zažene ob zagonu strežnika. Prav tako se registrira z ukazom systemctl. Upoštevajte, da ta postopek velja za sistem CentOS7, če uporabljate kaj drugega kot sistem CentOS7, boste morali za to uporabiti ukaz Service.
Ustvarite datoteko 'apache.service' in opišite zahtevane nastavitve.
[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service
Na voljo so naslednje informacije.
[Unit]
#Opis.
Description=Apache
#Nadzor pred in po izvedbi.
#Before=xxx.service
#After=xxx.service
[Service]
#Imenovanje uporabnikov in skupin
User=root
Group=root
#Ko je aktivirano, nastavite stanje na Aktivirano.
Type=oneshot
RemainAfterExit=yes
#Zagon, zaustavitev in ponovno polnjenje.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart
[Install]
#Enakovredne nastavitve na ravni Runlevel 3.
WantedBy=multi-user.target
Ko ga končate opisovati, ga registrirajte z ukazom 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. povzetek
Opisali smo začetno konfiguracijo, ki je potrebna ob namestitvi Apacheja.
Apache do neke mere deluje s privzetimi nastavitvami, če pa ga dejansko prilagajate, glejte nastavitve izhodnega cilja dnevnika in nastavitve SSL, ki jih morate spremeniti med delovanjem sistema.
Hvala, ker ste gledali do konca.