Debian 8 – perfekcyjny serwer WWW

d_www

Poradnik jest zmodyfikowana kontynuacja wpisu z Lisotpada 2015 r. ( http://linuxiarz.pl/1640/serwer-www-w-pigulce-na-debian-8/ )

Poradnik różni się wersja serwera Apache2, a dokładnie tym, że serwer WWW – Apache 2.4.18 budujemy ze źródeł zgodnie z wczorajszym wpisem: http://linuxiarz.pl/1956/apache-2-4-18-na-debian-ubuntu/

Zaktuzalizowany również został serwer nginx (do najnowszej na dzień 23.02.2016r.)

Kilka technicznych informacji:

Dostęp do PhpMyAdmina : http://IP:9977 (ominięcie cache i Varnisha)
Apache/2 port: : http://IP:8080
NGINX port : http://IP:80

Opcja Varnish:
Dostęp do PhpMyAdmina : http://IP:9977
Apache port: : http://IP:8080
Varnish port: http://IP:80
NGINX port : http://IP:88

Połączenia HTTPS nie są kierowane przez Varnisha.

Najpotrzebniejsze ścieżki do plików konfiguracyjnych:

Apache2:

  • /etc/apache2/apache2.conf
  • /etc/apache2/sites-available/000-default.conf
  • /etc/apache2/ports.conf
  • /etc/apache2/sites-enabled/pma.conf
  • (konfiguracja dostępu do PhpMyAdmin’a)

NGINX:

  • /etc/nginx/nginx.conf
  • /etc/nginx/conf.d/default.conf

Varnish:

  • /etc/varnish/default.vcl
  • /lib/systemd/system/varnish.service

vSFTPd

  • /etc/vsftpd.conf

PHP5:

  • /etc/php5/apache2/php.ini

MySQL (MariaDB, Percona)

  • /etc/mysql/my.cnf

 

1. Wstępna konfiguracja

adduser www ## USTAW SOBIE HASLO WWW - FTP, I USER
mkdir /home/www/public_html
mkdir -p /home/www/logs
apt-get update; apt-get install curl apt-transport-https software-properties-common  -y
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
apt-get install vsftpd nano wget curl imagemagick unzip postfix software-properties-common libvpx1 fontconfig-config 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 libaprutil1-dbd-sqlite3 libaprutil1-dbd-mysql libaprutil1-ldap -y  --force-yes

2. Backend – Apache2 (wersja 2.4.18)
2.1 Wymagane Paczki

apt-get install autotools-dev binutils build-essential cpp cpp-4.9 debhelper dpkg-dev g++ g++-4.9 gawk gcc gcc-4.9 gettext intltool-debian libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasan1 libatomic1 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libcroco3 libdpkg-perl libexpat1-dev libgcc-4.9-dev libgomp1 libitm1 libldap-2.4-2 libldap2-dev liblsan0 liblua5.1-0 liblua5.1-0-dev libmpc3 libmpfr4 libpcre3-dev libquadmath0 libreadline-dev libreadline6-dev libsasl2-2 libsasl2-modules-db libsctp-dev libsctp1 libsigsegv2 libssl-dev libstdc++-4.9-dev libtimedate-perl libtinfo-dev libtsan0 libubsan0 libunistring0 libxml2-dev linux-libc-dev make patch po-debconf uuid-dev zlib1g-dev -y

2.2 Kompilacja

wget http://pliki.linuxiarz.pl/02-2016/httpd-2.4.18-linuxiarz.pl.tar.gz 
tar xvf httpd-2.*-linuxiarz.pl.tar.gz
cd httpd-2.4*
dpkg-buildpackage -b
dpkg-buildpackage -b

WAGA! dpkg-buildpackage -b trzeba “kliknąć” dwa razy.

2.3 Instalacja

cd ..
dpkg -i apache2_2.4.*.deb apache2-data_2.4.*.deb apache2.2-common_2.4.*.deb apache2-bin_2.4.*.deb apache2-utils_2.4.*.deb apache2-mpm-worker_2.4.*.deb

2.4 Konfiguracja Apache2

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
echo "Listen 8080" > /etc/apache2/ports.conf
rm /etc/apache2/mods-available/autoindex.conf ; wget http://pliki.linuxiarz.pl/10-2015/autoindex.conf -O /etc/apache2/mods-available/autoindex.conf
a2enmod actions rewrite alias deflate headers
echo '<?php phpinfo(); ?>' >> /home/www/public_html/info.php

systemctl restart apache2

3. Bazy danych – do wyboru

3.1 PerconaDB

sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
echo "deb http://repo.percona.com/apt "$(lsb_release -sc)" main" | tee /etc/apt/sources.list.d/percona.list
apt-get update; apt-get install percona-server-server-5.6 -y --force-yes

3.2 MariaDB (seria 10.1)

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
echo 'deb http://mariadb.kisiek.net/repo/10.1/debian jessie main' >> /etc/apt/sources.list.d/mariadb.list
apt-get update
apt-get install mariadb-server
systemctl restart mysql

3.2 MariaDB (seria 10.0)

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
echo 'deb http://mariadb.kisiek.net/repo/10.0/debian jessie main' >> /etc/apt/sources.list.d/mariadb.list
apt-get update
apt-get install mariadb-server
systemctl restart mysql

3.3 MySQL

apt-get install mysql-server

3.4 Moja konfiguracja i wstępna optymalizacja (sprawdzone na MariaDB i PerconaDB)

rm /etc/mysql/my.cnf; wget http://pliki.linuxiarz.pl/08-2015/my.cnf -O /etc/mysql/my.cnf
systemctl restart mysql

4. Kompilacja i konfiguracja Reverse proxy NGINX (1.9.12) -> http://linuxiarz.pl/1911/nginx-1-9-11-z-modulami-na-debian-ubuntu-centos-i-innych/

apt-get update; apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev nano curl git autotools-dev debhelper dh-systemd libexpat-dev libgd-dev libgeoip-dev libluajit-5.1-dev liblua5.1-0-dev libmhash-dev libpam0g-dev libperl-dev libxslt1-dev po-debconf libssl-dev -y
wget http://repo.linuxiarz.pl/NGINX-1.9.12-custom.tar.gz
tar xvf  NGINX-1.9.* ; cd nginx-1.9.* ; dpkg-buildpackage -b
cd .. ; dpkg -i nginx-common_1.9.*.deb nginx_1.9.*.deb nginx-extras_1.9.*.deb
rm  /etc/nginx/conf.d/* ; rm  /etc/nginx/sit*/* 
rm /etc/nginx/conf.d/* ; wget http://pliki.linuxiarz.pl/02-2016/configure.conf -O /etc/nginx/conf.d/default.conf

4.1 Opcjonalny certyfikat SSL

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

5. Instalacja PHP5-FPM wraz z dodatkami (do wyboru)
5.1 Repozytoria Debiana 8: (w chwili pisania 5.6.17)

apt-get update
apt-get install php5-cli libapache2-mod-php5 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 php5-xcache php-soap php-pear -y --force-yes

5.2 Konfiguracja PHP

rm /etc/php5/apache2/php.ini; wget http://pliki.linuxiarz.pl/02-2016/php.ini -O /etc/php5/apache2/php.ini
rm /etc/php5/fpm/php.ini; wget http://pliki.linuxiarz.pl/02-2016/php.ini -O /etc/php5/fpm/php.ini
wget http://pliki.linuxiarz.pl/08-2015/php5/ioncube_loader_lin_5.6.so -O /etc/php5/ioncube_loader_lin_5.6.so

6. Instalacja phpMyAdmin

cd /opt/; wget https://github.com/phpmyadmin/phpmyadmin/archive/STABLE.zip
unzip STABLE*.zip
mv phpmy* pma
mkdir -p /var/lib/php/session; chmod 4777 /var/lib/php/session
rm STABLE.zip
wget http://pliki.linuxiarz.pl/12-2015/c7-apache/pma.conf -O /etc/nginx/conf.d/pma.conf

service nginx restart

7. Konfiguracja serwera FTP (FTP PRZEZ TLS)

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

8. Instalacja serwera Memcached

apt-get install memcached -y
rm /etc/memcached.conf
wget http://pliki.linuxiarz.pl/11-2015/memcached.conf -O /etc/memcached.conf 

9. Opcjonalna instalacja Varnish Cache Server

curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
echo "deb https://repo.varnish-cache.org/debian/ jessie varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list
apt-get update ; apt-get install varnish -y
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/02-2016/configure1.conf -O /etc/nginx/conf.d/default.conf
systemctl daemon-reload
systemctl restart nginx
systemctl restart varnish

10. Ustawienie uorawnień do katlaogu “www”

chown www:www -R /home/www/
usermod -g www-data www

11. Restart usług

systemctl restart vsftpd
systemctl restart apache2
systemctl restart mysql
systemctl restart nginx
systemctl restart php5-fpm
systemctl restart memcached
#opcja:
systemctl restart varnish

12. Uruchamianie przy starcie systemu

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

13. Zapora Firewall

apt-get install ufw -y
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 9977/tcp
ufw allow 21/tcp
ufw allow 12000:12100/tcp
echo "" > /etc/ufw/ufw.conf
echo "ENABLED=no" >> /etc/ufw/ufw.conf
echo "LOGLEVEL=low" >> /etc/ufw/ufw.conf
ufw enable

14. Generator dla nginx
Aby zmodyfikować i ustawić własne hasło do modułu VTS (/vhost_status) i statystyk nginx PageSpeed – domyślne to admin:admin

Moduł VTS jest domyślnie dołączony zgodnie z poradnikiem: http://linuxiarz.pl/1385/nginx-1-9-4-z-modulem-vts-czyli-statystyki-vhosta/

wget http://pliki.linuxiarz.pl/11-2015/generator -O /usr/bin/generator
chmod +x /usr/bin/generator
: > /etc/nginx/htpasswd

->> UZYCIE: generator nazwapliku uzytkownik haslo np.

np:

generator /etc/nginx/htpasswd admin admin