Wydajny i szybki sklep – PrestaShop

linux-ubuntu-nginx-mariadb-php-presta

Witam!

Masz sklep internetowy na współdzielonym hostingu który nie spełnia twoich oczekiwań lub działą powoli i ospale ?

Idelnie trafiłeś / aś, przedstawiam poradnik w którym zainstalujesz bardzo szybki i wydajny sklep od podstaw opierający się o CMS PrestaShop.

Całość opiera się na systemie Ubuntu 14.04 oraz Debian 8 wraz z serwerem www NGINX, bazą danych MariaDB serwerem FTPvsftpd i oczywście PHP-FPM 5.6 (zalecana wersja dla PrestaShop).

 

Dla sklepu zalecany jest certyfikat SSL dla bezpieczeństwa zakupów użytkwoników, jak go uzyskać ?

Certyfikat SSL z Let’s Encrypt i autoodnawianie!

Całośc jest kontunuacją serii rozpoczętej tu:
http://linuxiarz.pl/1921/wydajny-wordpress-na-wlasnym-serwerze/

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

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 (nginx 1.10.0)

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

curl http://repo.linuxiarz.pl/NGINX-1.10.0-custom.tar.gz | tar xz 
cd nginx*; dpkg-buildpackage -b
cd ..
dpkg -i nginx-common_1.*.deb nginx_1.*.deb nginx-extras_1.*.deb nginx-doc_1.*.deb
rm  /etc/nginx/conf.d/* ; rm  /etc/nginx/sit*/*

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

4. Instalacja PHP 5.6

4.1 UBUNTU 14.04

add-apt-repository ppa:ondrej/php5-5.6 
# ENTER
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-tidy php5-xmlrpc php5-xsl \
php5-xcache php-soap postfix -y --force-yes

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

4.2 DEBIAN 8

apt-get install php5-fpm php5-mysql php5-curl php5-gd php5-intl \
php5-imagick php5-imap php5-mcrypt php5-memcache php5-pspell php5-recode \
php5-tidy php5-xmlrpc php5-xsl php5-xcache php-soap php-pear \
imagemagick postfix -y --force-yes

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
wget http://pliki.linuxiarz.pl/05-2016/www-prestashop.conf -O /etc/php5/fpm/pool.d/www-prestashop.conf

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.

6.1 UBUNTU 14.04

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

6.2 DEBIAN 8

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386] http://mirror6.layerjet.com/mariadb/repo/10.1/debian jessie 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

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
update-rc.d php5-fpm defaults

Instalacja PrestaShop:

1. Tworzenie katalogów i pobieranie najnowszej wersji CMS

mkdir /home/www/public_html -p
mkdir /home/www/logs/ -p 
wget https://www.prestashop.com/download/old/prestashop_1.6.1.4.zip -O /home/www/public_html/prestashop.zip
cd /home/www/public_html/
unzip prestashop.zip ; rm prestashop.zip

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

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

Dodawanie użytkownika www do grupy www-data

usermod -aG 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 prestashop;
### PAMIETAJ ZMENIC HASLO DLA UŻYTKONIKA BAZY -> Linia poniżej - wewnątrz '' ###
CREATE USER 'prestashop'@'localhost' IDENTIFIED BY 'G3u!vJQ4__v6L_5U'; 
GRANT ALL PRIVILEGES ON prestashop.* TO prestashop@localhost IDENTIFIED BY 'G3u!vJQ4__v6L_5U';
quit

3. Konfiguracja serwera www

wget http://pliki.linuxiarz.pl/02-2016/prestashop.conf -O /etc/nginx/conf.d/prestashop.conf
sed -i '9d' /etc/nginx/php.conf
rm /etc/nginx/conf.d/default.conf
touch /home/www/logs/access.log
touch /home/www/logs/error.log
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ść rekordu A oraz wartość a dla sub domeny “www”.

IP-strefa

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

Kwestie konfiguracyjne – To pozostawiam dla Ciebie. W zrzutach uzupełniłem instalator o przykładowe dane.

Pamiętaj, po zakończonej instalacji – musisz usunąć katalog /install:

rm -rf /home/www/public_html/prestashop/install

Po instalacji – konieczna będze jeszcze zmian nazwy katalogu /admin na inny wylosowany przez instalator – wykonasz to przez klienta FTP lub konsole poleceniem:

mv /home/www/public_html/prestashop/admin /home/www/public_html/prestashop/admin345aljfj1/

Pamiętaj zamienić z wylosowaną dla Ciebie wartością admin345aljfj1

Wyłączenie PageSpeed’a:

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

Włączenie PageSpeed’a (domyśłnie włączone)

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

5. Instalacja i konfiguracja zapory (firewall) opartej o UFW

apt-get install ufw -y 

Ustawienie regułek zapory

ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 21/tcp
ufw allow 12000:12100/tcp
: > /etc/ufw/ufw.conf
echo "ENABLED=no" >> /etc/ufw/ufw.conf
echo "LOGLEVEL=low" >> /etc/ufw/ufw.conf
ufw enable

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

reboot

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

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*
wget http://pliki.linuxiarz.pl/12-2015/c7-apache/pma.conf -O /etc/nginx/conf.d/pma.conf

## Użytkownik phpMyAdmin w bazie - zaloguj sie swoim hasłem root i uwórz bazę
mysql -u root -p

CREATE DATABASE phpmyadmin;
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'K.XNe1-.M!e-3e1G'; 
GRANT ALL PRIVILEGES ON phpmyadmin.* TO phpmyadmin@localhost IDENTIFIED BY 'K.XNe1-.M!e-3e1G';
quit


mysql -u phpmyadmin -p'K.XNe1-.M!e-3e1G' phpmyadmin < /opt/pma/sql/create_tables.sql
wget http://pliki.linuxiarz.pl/05-2016/pma.txt -O /opt/pma/config.inc.php

ufw allow 9977/tcp
service nginx restart

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