Apache2 + NGINX + Varnish na Debianie 8


Witam was!
Dziś przedstawię wam dość długą ale bardzo dobrą konfigurację hostingu pod witryne WWW.
Na ruszcie mamy duet Apache2 od strony backendu a od strony frontendu mamy nginx/1.9.4 z wkompilowanym PageSpeedem od Google, a na dodatek jako opcja po drodze jeszcze Varnish.

Takie “combo” myślę że może przyjąć na siebie potężny ruch i sprawdzi się jako perfekcyjny serwer WWW – jako alternatywa dla ospałych i powolnych konfigurracji jakie oferują panele takie jak Plesk, Cpanel czy DirectAdmin.

W tej konfiguracji serwer WWW to Apache2 – więc mamy swobodną obsługę plików .htaccess.
Apache2 z PHP komunikuje się przy pomocy szybkiego “socketu” dla zminimalizowania czasów odpowiedzi.
PHP5-FPM z Apache2 komunikuje się oczywiście przy pomocy modułu fastcgi.
PHP jest wstępnie przeze mnie skonfigurowane – dorzuciłem moduły Opcache oraz IonCube.

NGINX – jest to moja kompilacja z wkompilowanym GooglePageSpeedem oraz modułem VTS (vhost_status).
serwer ten pracuje jako “wsteczny proxy” (reverse proxy) oraz cache plików statycznyh.

Pod wszystkim “czuwa” baza danych – alternatywa dla MySQL i lubiana przeze mnie MariaDB.

Jako serwer FTP – standardowow użyłęm vSFTPd w konfiguracji połączenia FTP przez SSL.

Jako opcję dodałem Varnisha, dlaczego jako opcja? Między innymi dlatego że nie wszystkie CMS czy witryny lubią taką konfigurację,
oczywiście strony statyczne będą działać, może niektóre CMS – jak chcesz to sobie dodasz 🙂 – Mój testowy Drupal 6 dziła wyśmienicie. WordPress zreszta też.

Całość testowana i zalecana do instalacji na systemie x64 (64 bit)
Gotowe pliki konfiguracyjne przeznaczone da Debiana 8 Jessie.

Schemat działania:
70996

Dostęp do PhpMyAdmina : http://IP:9977 (ominięcie cache i inne)
Apache port: : http://IP:8080
Nginx port : http://IP:80
Varnish port: http://IP:85

Opcja Varnish:
Dostęp do PhpMyAdmina : http://IP:9977 (ominięcie cache i inne)
Apache port: : http://IP:8080
Varnish port: http://IP:80
Nginx port : http://IP:88

1. PRZYGOTOWANIE

adduser www ## w tym miejscu zdefiniuj sobie haslo do konta w systemie oraz FTP
mkdir /home/www/public_html ; chown -R www:www-data /home/www/* ; chmod -R 775 /home/www/
mkdir -p /home/www/logs
apt-get update; apt-get install curl apt-transport-https  -y
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
echo "deb https://repo.varnish-cache.org/debian/ jessie varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list
echo 'deb http://mariadb.kisiek.net//repo/10.1/debian jessie main' >> /etc/apt/sources.list.d/mariadb.list
echo 'deb http://ftp.pl.debian.org/debian jessie main contrib non-free' >> /etc/apt/sources.list
apt-get update

2. INSTALACJA PAKIETÓW

apt-get install fontconfig-config geoip-database libgeoip1 libluajit-5.1-2 libluajit-5.1-common fonts-dejavu-core libfontconfig1 libgd3 libjbig0 liblua5.1-0 libperl5.20 libtiff5 libxpm4 libxslt1.1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal libvpx1 apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php5 php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl vsftpd nano wget curl imagemagick unzip software-properties-common software-properties-common -y mariadb-server sendmail --force-yes

3. KONFIGURACJA APACHE I PHP5-FPM

rm /etc/php5/fpm/php.ini; wget http://pliki.linuxiarz.pl/08-2015/php5/php.ini -O /etc/php5/fpm/php.ini
wget http://pliki.linuxiarz.pl/08-2015/php5/opcache.so -O /etc/php5/opcache.so
wget http://pliki.linuxiarz.pl/08-2015/php5/ioncube_loader_lin_5.6.so -O /etc/php5/ioncube_loader_lin_5.6.so
rm /etc/apache2/mods-enabled/fastcgi.conf ; wget http://pliki.linuxiarz.pl/09-2015/fastcgi.conf -O /etc/apache2/mods-enabled/fastcgi.conf
rm /etc/apache2/sites-available/* ; wget http://pliki.linuxiarz.pl/09-2015/000-default.conf -O /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/apache2.conf ; wget http://pliki.linuxiarz.pl/10-2015/apache2.conf -O /etc/apache2/apache2.conf
rm /etc/apache2/ports.conf ; wget http://pliki.linuxiarz.pl/09-2015/ports.conf -O /etc/apache2/ports.conf
wget http://pliki.linuxiarz.pl/09-2015/pma.conf -O /etc/apache2/sites-enabled/pma.conf
a2enmod actions rewrite alias deflate headers
echo '<?php phpinfo(); ?>' > /home/www/public_html/info.php
rm /etc/apache2/mods-available/autoindex.conf ; wget http://pliki.linuxiarz.pl/10-2015/autoindex.conf -O /etc/apache2/mods-available/autoindex.conf

4. KONFIGURACJA MARIADB i PHPMYADMIN

/etc/init.d/mysql stop
rm /etc/mysql/my.cnf; wget http://pliki.linuxiarz.pl/08-2015/my.cnf -O /etc/mysql/my.cnf
systemctl restart mysql
apt-get install phpmyadmin -y
rm /etc/apache2/conf-enabled/phpmyadmin.conf
rm /etc/phpmyadmin/apache.conf

5. KONFIGURACJA REBERSE PROXY:

wget http://kompilacje.linuxiarz.pl/Debian%208/nginx-1.9.4-pagespeed-vts-OUT-OF-THE-BOX-Debian8/nginx_1.9.4-1_all.deb
wget http://kompilacje.linuxiarz.pl/Debian%208/nginx-1.9.4-pagespeed-vts-OUT-OF-THE-BOX-Debian8/nginx-common_1.9.4-1_all.deb
wget http://kompilacje.linuxiarz.pl/Debian%208/nginx-1.9.4-pagespeed-vts-OUT-OF-THE-BOX-Debian8/nginx-extras_1.9.4-1_amd64.deb
dpkg --install *.deb
rm * /etc/nginx/conf.d/ ; wget http://pliki.linuxiarz.pl/10-2015/ngx_rev2.conf -O /etc/nginx/conf.d/default.conf

### HTTPS ###
openssl genrsa -out /etc/nginx/privkey.pem 2048
openssl req -new -x509 -key /etc/nginx/privkey.pem -out /etc/nginx/cacert.pem -days 1095

6. KONFIGURACJA FTP

rm /etc/vsftpd.conf
wget http://pliki.linuxiarz.pl/08-2015/ftp/vsftpd.conf -O /etc/vsftpd.conf; touch /etc/vsftpd.chroot_list
wget http://pliki.linuxiarz.pl/08-2015/ftp/private.zip; unzip private.zip; mv private/* /etc/ssl/private; rm private.zip

7. RESTART USŁUG:

systemctl restart vsftpd
systemctl restart apache2
systemctl restart mysql
systemctl restart nginx

8. KONFIGURACJA Z VARNISHEM: (opcja)

apt-get install varnish
rm /lib/systemd/system/varnish.service ; wget http://pliki.linuxiarz.pl/10-2015/varnish.service -O /lib/systemd/system/varnish.service
rm /etc/varnish/default.vcl ; wget http://pliki.linuxiarz.pl/10-2015/default.vcl -O /etc/varnish/default.vcl
rm * /etc/nginx/conf.d/ ; wget http://pliki.linuxiarz.pl/10-2015/ngx_rev.conf -O /etc/nginx/conf.d/default.conf
systemctl daemon-reload
systemctl restart varnish
systemctl restart nginx

9. URUCHAMIANIE ZE STARTEM SYSTEMU:

update-rc.d nginx defaults
update-rc.d varnish defaults
crontab -l | { cat; echo "@reboot systemctl start varnish"; } | crontab -
update-rc.d apache2 defaults
update-rc.d mysql defaults
update-rc.d vsftpd defaults