Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Technologie serwerowe WWW
Grzegorz Marczak
2
Instalacja Centosa 7 w wersji Mininal
Strefa czasowa Język (tylko i wyłącznie angielski!) Partycjonowanie dysku Zadania po instalacji: Uruchomienie sieci: nmtui i jej statyczna konfiguracja Ustawienie hostname Uruchomienie demona sshd Aktualizacja systemu i instalacja pakietu epel-release Wyłączenie SELinux Wyłączenie firewalla – wymaga konfiguracji – wrócimy później
3
Instalacja pakietów net-tools vim httpd php mod_ssl
java openjdk.x86_64
4
Tworzenie „domen” Trochę przygotowań
yum install xorg-x11-xauth firefox.x86_64 Tworzymy substytut DNS w /etc/hosts MÓJ_IP domena1.tsw.nsi domena2.tsw.nsi Łączymy się z VM przez Putty z przekierowaniem X11 Uruchamiamy firefoxa
5
Pierwsze uruchomienie Apacha
systemctl start httpd Nasz serwer WWW obsługuje w chwili obecnej jedynie statyczne treści udostępniane przez protokoły HTTP (port 80) i HTTPS (port 443)
6
Elementarne zmiany w konfiguracji
Tutaj możemy coś pozmieniać… /etc/httpd/conf/httpd.conf /etc/httpd/conf.modules.d/ /etc/httpd/conf.d/* Plik /etc/httpd/conf/httpd.conf Listen 80 DocumentRoot "/var/www/html„
7
Elementarne zmiany w konfiguracji
<Directory "xxxxx"> AllowOverride None #przeciążenie uprawnień katalogu nadrzędnego Options Indexes FollowSymLinks Require all granted #serwer będzie serwował całą zawartość </Directory> <DirectoryMatch "regex"> - wariant z nazwą katalogu w postaci wyrażenia regularnego DirectoryIndex index.php index.htm index.html index.myext
8
Uruchamiamy obsługę stron użytkowników
/etc/httpd/conf.d/userdir.conf Domyślnie serwer udostępnia zawartość katalogów /home/*/public_html Opcja UserDir disabled
9
Konfigurujemy HTTPS Konfiguracja HTTPS opiera się na wirtualnym hoście, udostępniającym zawartość na porcie 443 Domyślna konfiguracja nie jest zła, ale kilka rzeczy należy poprawić wygenerować nowe (prawidłowe dla domeny) certyfikaty ograniczyć listę bezpiecznych protokołów i algorytmów kryptograficznych: SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!3DES:!PSK:!SRP:!DSS:!AECDH:!RC4
10
Certyfikat CA openssl req -new -x509 -days extensions v3_ca -keyout cakey.pem -out cacert.pem CSR openssl genrsa -out cert.key 2048 openssl req -new -sha256 -key cert.key -out cert.csr Podpisanie certyfikatu openssl x509 -req -days 360 -in cert.csr -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out cert.pem
11
Certyfikat Kopiujemy pliki cacert.pem, cert.pem i cert.key do /etc/httpd/cert i modyfikujemy zawartość pliku ssl.conf SSLCertificateFile /etc/httpd/cert/cert.pem SSLCertificateKeyFile /etc/httpd/cert/cert.key SSLCACertificateFile /etc/httpd/cert/cacert.pem
12
Wirtualne hosty NameVirtualHost poczta.mat.umk.pl:80
ServerName poczta.mat.umk.pl ServerAlias poczta.mat.uni.torun.pl #DocumentRoot /www/sites/horde Redirect permanent / </VirtualHost>
13
Wirtualne hosty NameVirtualHost poczta.mat.umk.pl:443 <VirtualHost poczta.mat.umk.pl:443> ServerName poczta.mat.umk.pl ServerAlias poczta.mat.uni.torun.pl DocumentRoot /www/sites/horde SSLEngine On SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!3DES:!PSK:!SRP:!DSS:!AECDH SSLCertificateFile /etc/httpd/certs/wildmatumk.pem SSLCertificateKeyFile /etc/httpd/certs/wildmatumk.key SSLCertificateChainFile /etc/httpd/certs/chain.pem </VirtualHost>
14
Wirtualne hosty – tworzymy własny
W pliku /etc/httpd/conf.d/domena1.conf wstawiamy Alias "/d1" /var/www/html/d1 NameVirtualHost domena1.tsw.nsi:80 <VirtualHost domena1.tsw.nsi:80> ServerName domena1.tsw.nsi ServerAlias *.domena1.tsw.nsi DocumentRoot /var/www/html/d1 </VirtualHost>
15
Wirtualne hosty – tworzymy własny
W pliku /etc/httpd/conf.d/domena1.conf wstawiamy NameVirtualHost domena1.tsw.nsi:443 <VirtualHost domena1.tsw.nsi:443> ServerName domena1.tsw.nsi ServerAlias *.domena1.tsw.nsi DocumentRoot /var/www/html/d1 SSLEngine On SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!3DES:!PSK:!SRP:!DSS:!AECDH:!RC4 SSLCertificateFile /etc/httpd/cert/cert.pem SSLCertificateKeyFile /etc/httpd/cert/cert.key SSLCACertificateFile /etc/httpd/cert/cacert.pem </VirtualHost>
16
PHP Po zainstalowaniu PHP domyślnie pliki *.php są obsługiwane przez interpreter PHP dla wszystkich katalogów Można wyłączyć obsługę PHP dla danego katalogu komendą W pliku .htaccess: php_flag engine off W dyrektywie Directory: php_admin_value engine Off
17
PHP Jak powiedzieć PHP, że ma przeprocesować dany plik?
<IfModule mime_module> AddType application/x-httpd-php .myext AddType .... </IfModule> .htaccess: Addhandler application/x-httpd-php .html .php .myext
18
mod_rewrite Moduł ten pozwala modyfikować adresy URL
Reguły można umieszczać zarówno w plikach *.conf, jak i .htaccess Przykłady: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) [R,L]
19
mod_rewrite Przykłady: RewriteEngine on
RewriteCond %{HTTP_HOST} ^ [or] RewriteCond %{HTTP_HOST} ^mat.uni.torun.pl [or] RewriteCond %{HTTP_HOST} ^mat.umk.pl RewriteRule (.*) [R=301,L]
20
Tomcat Wypakowanie Tomcata: cd /opt unzip apache-tomcat-7.0.82.zip
chmod 755 /opt/apache-tomcat /bin/*.sh yum install tomcat-native.x86_64 Start /opt/apache-tomcat /bin/startup.sh Stop /opt/apache-tomcat /bin/shutdown.sh
21
Tomcat – parametry startowe
Tomcat napisany jest w Javie – gdy ma mało pamięci to działa… słabo Konfiguracja pamięci i podobnych: plik setenv.sh JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=Europe/Warsaw -server -Xmn256m -XX:ParallelGCThreads=4 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+OptimizeStringConcat -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:NewSize=256m -XX:MaxNewSize=256m -Xms1024m -Xmx1024m" Tomcat domyślnie działa na porcie 8080
22
Tomcat – podstawowa konfiguracja
Plik server.xml Zmiana portu z 8080 na 80 Wyłączenie AJP (na razie) Przygotowania keystore Konfiguracja HTTPS
23
Tomcat – certyfikaty Konwertujemy certyfikaty apacha z formatu PEM do formatu JKS openssl pkcs12 -export -out cert.p12 -inkey cert.key -in cert.pem -certfile cacert.pem keytool -importkeystore -srckeystore cert.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks keytool -import -trustcacerts -alias ca -file cacert.pem -keystore keystore.jks
24
Tomcat – konektory – HTTP
Konfiguracja konektorów <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
25
Tomcat – konektory – HTTPS
Konfiguracja konektorów <!--Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /--> <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" enableLookups="false" keystoreFile="/ opt/apache-tomcat /conf/keystore.jks" keystorePass="xxxxxx" keyAlias="1" clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA"/>
26
Tomcat – wirtualne hosty
<Host name="domena1.tsw.nsi" appBase="domain1" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="domain1_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <Host name="domena2.tsw.nsi" appBase="domain2" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="domain2_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
27
Tomcat – użytkownicy Userów i role dodajemy w pliku tomcat-users.xml
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="admin123" roles="manager-gui"/> Userzy i role mogą być wykorzystane w dowolnych aplikacjach działających pod kontrolą Tomcata
28
Tomcat i httpd razem Kiedy to ma sens? Np. gdy chcemy udostępniać na jednym serwerze na tych samych portach jednocześnie aplikacje napisane w PHP oraz w Javie w jednej lub kilku domenach Wykorzystujemy w tym celu moduł proxy_ajp_module oraz konektor AJP
29
Tomcat i httpd razem Konfiguracja Tomcata
Wyłączamy konektory HTTP i HTTPS Włączamy konektor AJP <Connector port="8009" address=" " protocol="AJP/1.3" redirectPort="8080" URIEncoding="UTF-8" maxThreads="250" acceptCount="2500" />
30
Tomcat i httpd razem Plik tomcat.conf apacha
NameVirtualHost domena2.tsw.nsi:80 <VirtualHost domena2.tsw.nsi:80> ServerName domena2.tsw.nsi ServerAlias *.domena2.tsw.nsi ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ </VirtualHost>
31
Tomcat i httpd razem Plik tomcat.conf apacha
NameVirtualHost domena2.tsw.nsi:443 <VirtualHost domena2.tsw.nsi:443> ServerName domena2.tsw.nsi ServerAlias *.domena2.tsw.nsi ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ SSLEngine On SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!3DES:!PSK:!SRP:!DSS:!AECDH:!RC4 SSLCertificateFile /etc/httpd/cert/cert.pem SSLCertificateKeyFile /etc/httpd/cert/cert.key SSLCACertificateFile /etc/httpd/cert/cacert.pem </VirtualHost>
32
Tomcat i httpd razem Jak pominąć obsługę przez AJP jakiejś podstrony w domenie obsługiwanej przez Tomcata? ProxyPass /strona_w_php !
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.