Php7.3 Php-fpm Mariadb telepítés

Php7.3, mariadb telepítünk és php-fpm-et állítunk be a vhost-okon ebben a leírásban.

Először debian szerverre telepítünk php7.3-at. A packages.sury.org -ról fogjuk tudni leszedni a legújabb php-t. Ehhez a következő parancsokat adjuk ki:
# apt-get install ca-certificates apt-transport-https lsb-release
# wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php7.3.list
# apt-get update

Telepítsük fel a php7.3-at az általunk szükséges modulokkal:
# apt-get install php7.3 php7.3-cli php7.3-common php7.3-mysql php7.3-curl php7.3-mbstring php7.3-mysql php7.3-zip php7.3-xml

Ellenőrizhetjük ezzel a paranccsal a verzió számot:
# php -v

Centos6-ra a következő megoldást próbálhatjuk ki:
# yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum --enablerepo=remi-php73 install php
Természetesen a php.ini-ben állítsuk be az értékeket majd apache/nginx restart és használhatjuk a php7.3-at.

Mariadb-nél ha a legújabbat szeretnénk feltenni pl a 10.3-at, akkor ha még a 8-as 9-as debian-t használjuk updateljük fel 10.1-re majd utána frissítsünk.
A mariadb oldalán megtalálható a repo és a telepítés menete. Mi most a 9-esre fogjuk telepíteni, de a többi distro-ra is hasonló lépéseket kell megtennünk.

Első lépésként itt válasszuk ki a nekünk megfelelő verziót:
https://downloads.mariadb.org/mariadb/repositories/

Adjuk ki a következő parancsokat, amiket az oldalon találtunk:
# apt-get install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.bme.hu/pub/mirrors/mariadb/repo/10.3/debian stretch main'

Telepítsük fel:
# apt-get update
# apt-get install mariadb-server

Állítsuk be a my.cnf-et majd indítsuk újra. Ellenőrizhetjük a verziószámot:
# mysql -V

Ezt a parancsot kell kiaadni, hogy a mysql verzió különbségeket helyre rakja ha upgradeltünk egy régebbi verzióról:
# mysql_upgrade --force -uroot -p

Konfiguráljunk php-fpm-et. A következő parancsokat adjuk ki:
# apt-get install libapache2-mod-fcgid
# apt-get install php7.2 php7.2-fpm
# systemctl status php7.2-fpm
# a2enmod actions fcgid alias proxy_fcgi
# service php7.2-fpm restart

Ahhoz, hogy az alkalmazásunk a php-fpm-et használja, a vhost-ban még beállíthatjuk neki az fpm elérési útját:
<VirtualHost *:80>
    ServerName php72.example.com
    DocumentRoot /var/www/php72
    <Directory /var/www/php72>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    <FilesMatch \.php$>
        # Apache 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

Amennyiben több fpm-es php-t telepítünk mindegyik vhost-ban adhatunk meg más verziót és így egy szerveren különféle típusú php-s alkalmazást tudunk futtatni.

Néhány kiegészítő információt itt még megosztunk ami php-val kapcsolatos.

Több php verzió esetén, lehet hogy szükségünk lesz rá, hogy beállítsuk a default php verziót, azt a következő parancsokkal tehetjük meg:
# update-alternatives --set php /usr/bin/php7.2
# update-alternatives --set phar /usr/bin/phar7.2
# update-alternatives --set phar.phar /usr/bin/phar.phar7.2
# update-alternatives --set phpize /usr/bin/phpize7.2
# update-alternatives --set php-config /usr/bin/php-config7.2

Mpm-prefork helyett mpm-event beállítás:
# a2dismod php7.3 mpm_prefork
# a2enmod proxy_fcgi setenvif mpm_event rewrite headers env dir mime ssl http2
# a2enconf php7.3-fpm
Beállítások és optimalizáció a következő linkeken:
https://medium.com/@sbuckpesch/apache2-and-php-fpm-performance-optimization-step-by-step-guide-1bfecf161534
http://www.mmbarabba.it/5098/

Előfordulhat, hogy szükségünk van tanúsítványra amit saját magunk írunk alá. Adjuk ki a következő parancsot és töltsük ki a kérdésekre a választ:
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Egészítsük ki a vhost-unkat és nézzen ki így:
 <VirtualHost _default_:443>
                ServerAdmin your_email@example.com
                ServerName server_domain_or_IP

                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                SSLCertificateFile      /etc/ssl/certs/apache-selfsigned.crt
                SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

        </VirtualHost>

Engedélyezzük a modulokat majd indítsuk újra az apache-ot:
# a2enmod ssl
# a2enmod headers

Olvasnivaló:
https://www.rosehosting.com/blog/how-to-install-php-7-3-on-debian-9/
https://downloads.mariadb.org/mariadb/repositories/#mirror=bme&distro=Debian&distro_release=stretch--stretch&version=10.3
https://tecadmin.net/install-multiple-php-version-apache-ubuntu/
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-debian-9
 
2019.05.01.