Wydajny WordPress na własnym serwerze!

linux-ubuntu-nginx-mysql-php-wordpress

Hej! Jeśli irytują Cię ograniczenia jakie zazwyczaj narzucają operatorzy w ofercie swoich hostingów współdzielonych, czy brak możłiwośći edycji ustawień w PHP na potrzeby specyficznej wtyczki ?
Irytuje Cię niska wydajność takiego rozwiązania ? Zbyt mała moc bliczeniowa a Ty przekraczasz zasoby ?

Jeśli przynajmniej na jedno pytania odpowiedź brzmi : TAK to ten poradnik jest dla Ciebie!

Przedstawiam Wam kompletny poradnik w którym opisze instalacje pełnego środowiska serwera WWW z bardzo wydajną bazą MariaDB oraz serwerem WWW przygotownym pod barzo wysoką wydajność!

Sposób przygotowany na instancji PublicCloud w OVH, oczywiście można użyć również na serwerze VPS SSD/Cloud.

Poradnik przeprowadzany na systemie Ubuntu 14.04 LTS

Na początek przygotowanie serwera:

serwer

spawn

1. Połączenie do maszyny:

w przypadku serwera PublicCloud, łącze się do systemu za pomocą klucza SSH,

ssh admin@167.114.240.207 -i .ssh/id_rsa2

2. Przygotowanie:

sudo -i
apt-get update
apt-get upgrade -y

Konfiguracja użytkownika www (usatwienie hasła będzie jednoznaczne z ustawieniem hasła do FTP!)

adduser www

3. Serwer www

apt-get install curl wget nano apt-transport-https software-properties-common 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.10.0-custom.tar.gz

tar xvf  NGINX-1.10.* ; cd nginx-1.10.* ; dpkg-buildpackage -b
cd ..
dpkg -i nginx-common_1.10.*.deb nginx_1.10.*.deb nginx-extras_1.10.*.deb nginx-doc_1.10.*.deb
rm  /etc/nginx/conf.d/* ; rm  /etc/nginx/sit*/* ; rm /etc/nginx/conf.d/default.conf

Serwer www jest, przejdźmy do instalacji PHP, skonfigurowanie serwera WWW wykonamy później.

4. Instalacja PHP 5.6

add-apt-repository ppa:ondrej/php5-5.6
apt-get update
apt-get install php5-fpm php5 php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache -y postfix --force-yes

wget http://pliki.linuxiarz.pl/02-2016/php-set.sh -O php-set.sh
chmod +x php-set.sh
./php-set.sh

Plik php-set.sh konfiguruje podstawowe funckje, możesz pozostawić domyślne lub wpisać swoje żądane wartości.

Włączenie PHP5-FPM

service php5-fpm restart

5. Instalacja serwera FTP oraz jesgo konfiguracja:

apt-get install vsftpd -y

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

Domyslnie włączona jest opcja FTP przez TLS, aby to wyłączyć – w pliku /etc/vsftpd.conf zmień na ssl_enable=NO

6. Instalacja bazy MariaDB i jej konfiguracja
Podczas instalacji serwera bazodanowego – system po prosi o wprowadzenie hasła do użytkownika “root” – zapamiętaj go.

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386] http://mariadb.kisiek.net/repo/10.1/ubuntu trusty main'
apt-get update
apt-get install mariadb-server mariadb-client -y

Gotowa konfiguracja i start serwera:

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

7. Serwer Memcache

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

8. Uruchamianie orpogramowania przy starcie systemu:

update-rc.d nginx defaults
update-rc.d mysql defaults
update-rc.d vsftpd defaults
update-rc.d memcached defaults

Instalacja WORDPRESS:

1. Tworzenie katalogów i pobieranie najnowszej wersji CMS

mkdir /home/www/public_html
wget https://pl.wordpress.org/wordpress-4.4.2-pl_PL.tar.gz -O /home/www/public_html/wp.tar.gz
cd /home/www/public_html/
tar xfz wp.tar.gz; rm wp.tar.gz

Konfiguracja uprawnień do plików i katalogów Wordpresa

wget http://pliki.linuxiarz.pl/02-2016/wp-perm.sh -O /root/wp-perm.sh
chmod +x /root/wp-perm.sh
cd /root/
./wp-perm.sh

Dodawanie użytkownika www do grupy www-data

usermod -g www-data www

2. Tworzenie bazy danych

mysql -u root -p 

Po wydaniu tego polecenia, system poprosi o hasło, jest to hasło wcześniej ustawione przy instalacji serwera MariaDB
Po podaniu prawidłowego hasła, będziesz w konsoli bazy MySQL, tutaj tworzysz bazę.

CREATE DATABASE wordpress;
### PAMIETAJ ZMENIC HASLO DLA UŻYTKONIKA BAZY -> Linia poniżej - wewnątrz '' ###
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'G3u!vJQ4__v6L_5U'; 
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'G3u!vJQ4__v6L_5U';
quit

3. Konfiguracja serwera www

rm -rf /etc/nginx/conf.d/default.conf
wget http://pliki.linuxiarz.pl/02-2016/wordpress.conf -O /etc/nginx/conf.d/wordpress.conf
sed -i '9d' /etc/nginx/php.conf
service nginx restart

4. Czas przzejść do przeglądrki, warto skierować już do twojego serwera jakąś domenę.

W jej strefie DNS (operator np.) wpisz adres IPv4 jako wartośc rekordu A oraz wartość a dla subdomeny “www”.

IP-strefa

Wywołąj IP lub adres twojej wcześnie skonfigurowanej domeny w przeglądarce.

Jeżeli wszystko przebiegło pomyślnie powinien ukazać się instalator WordPress:

wp1

wp2

Kwestie konfiguracyje – To pozostawiam dla Ciebie.

Serwer WWW wkompilowane ma moduły opisane tu: http://linuxiarz.pl/1911/nginx-1-9-11-z-modulami-na-debian-ubuntu-centos-i-innych/

Ustawione reguły dla GooglePageSpeed: http://pliki.linuxiarz.pl/02-2016/pagespeed.txt

Możliwe konfiguracje moduły PageSpeed: https://developers.google.com/speed/pagespeed/module/configuration

Nie testowane z wtyczką dla Worpdresa: W3 Total Cache, może być konieczne wyłącznie modułu GooglePageSpeed.

Wyłączenie PageSpeed’a:

sed -i s'/pagespeed on;/pagespeed off;/' /etc/nginx/conf.d/wordpress.conf
/etc/init.d/nginx restart

Włączenie PageSpeed’a

sed -i s'/pagespeed off;/pagespeed on;/' /etc/nginx/conf.d/wordpress.conf
/etc/init.d/nginx restart

5. Instalacja i konfiguracja zapory (firewall) oraz uprawnień do plików i katalogów

apt-get install ufw -y 

Ustawienie regułek zapory

ufw allow ssh
ufw enable
ufw allow ftp
ufw allow http
ufw allow 12000:12100/tcp

Na końcu można uruchomić ponownie serwer i zweryfikować czy wszystko się uruchomi przy starcie.

reboot

Opcjonalna instalacja PHPMyAdmin:

cd /opt/; wget https://files.phpmyadmin.net/phpMyAdmin/4.5.4.1/phpMyAdmin-4.5.4.1-all-languages.zip
unzip phpMyAdmin-4*
rm -rf php*.zip
mv phpMyAdmin-4* pma
mkdir -p /var/lib/php/session; chmod 4777 /var/lib/php/session
wget http://pliki.linuxiarz.pl/12-2015/c7-apache/pma.conf -O /etc/nginx/conf.d/pma.conf
ufw allow 9977/tcp
service nginx restart

dostęp dp PHPMyAdmin: http://TWOJ-IP:9977, lub http://domena.pl:9977