Nginx-PHP-FPM 8.X
De Hegyd Doc.
(Page créée avec « == Installation et configuration de base == === Installer les paquets === ==== Nginx + PHP 8.x ==== <pre> apt-get install apache2-mpm-prefork apache2-utils apache2.2-bin ap… ») |
m (a déplacé Nginx-PHP-FPM vers Nginx-PHP-FPM 8.X) |
Version actuelle en date du 17 juillet 2023 à 14:30
Sommaire |
[modifier] Installation et configuration de base
[modifier] Installer les paquets
[modifier] Nginx + PHP 8.x
apt-get install apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common php5 libapache2-mod-php5 php-pear php5-cli php5-common php5-curl php5-gd php5-mcrypt php5-mysql php5-suhosin php5-zip php5-mbstring wkhtmltopdf xvfb jpegoptim optipng
[modifier] PHP-FPM 8.x
Ajouter le dépot dotdeb sur Debian 6
cat >> /etc/apt/sources.list <<EOF ==== PHP 7.4 (sur Debian 8, 9 et 10)==== Réf : https://computingforgeeks.com/how-to-install-latest-php-on-debian/ ''Ajouter le dépot SURY seulement sur Debian 8'' ( si ce n'est pas fait ) <pre> apt-get install apt-transport-https lsb-release ca-certificates wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg cat >> /etc/apt/sources.list <<EOF # PHP DEPOTS SURY ( remplacer Petit_nom_debian par jessie,...buster ) deb https://packages.sury.org/php/ [Petit_nom_debian] main EOF wget https://packages.sury.org/php/apt.gpg apt-key add apt.gpg # en cas d'erreur : gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation apt install gnupg gnupg1 gnupg2 #puis refaire : apt-key add apt.gpg rm apt.gpg
Installer les paquets suivants
apt-get update && apt-get -y install apache2 apache2-mpm-prefork apache2-utils apache2-bin apache2-data php7.4 libapache2-mod-php7.4 php-pear php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-mysql php7.4-mbstring php7.4-xml php7.4-zip zip unzip wkhtmltopdf xvfb jpegoptim optipng
Pout Debian 10 faire seulement :
apt install apache2 php7.4 php-pear php7.4-curl php7.4-gd php7.4-mysql php7.4-mbstring php7.4-xml php7.4-zip zip unzip wkhtmltopdf xvfb jpegoptim optipng
[modifier] Upgrade de PHP
Installer la nouvelle version de PHP et écraser les packets déjà installés si besoin
Lister la version installée du module Apache a désactiver
ls -la /etc/apache2/mods-available/php* a2dismod php7.[0,1,2,3,...] ( ancienne version )
Configurer PHP avec la Postconf
[modifier] Activer le nouveau module Apache et redémarrage du service
a2enmod php7.[0,1,2,3,...] ( nouvelle version ) /etc/init.d/apache2 restart
[modifier] Configuration de base
- Directives d’amélioration de la sécurité
-> Pour Debian 7.0 et versions précédentes
sed -i '/^#<\/Directory>/a \
<Directory />\
AllowOverride None\
Order Deny,Allow\
Deny from all\
</Directory>\
<Directory /var/projects/>\
AllowOverride All\
Options -Indexes\
Order Allow,Deny\
Allow from all\
</Directory>' /etc/apache2/conf.d/security
sed -i 's/^ServerTokens OS/#ServerTokens OS/' /etc/apache2/conf.d/security
sed -i '/^#ServerTokens Full/aServerTokens Prod' /etc/apache2/conf.d/security
sed -i -e 's/^#ServerSignature Off/ServerSignature Off/' -e 's/^ServerSignature On/#ServerSignature On/' /etc/apache2/conf.d/security
sed -i '15,22s/^/#/' /etc/apache2/mods-available/alias.conf
-> Pour Debian 8.0 et supérieures
sed -i '/^#<\/Directory>/a \
<Directory />\
AllowOverride None\
Require all denied\
</Directory>\
<Directory /var/projects/>\
AllowOverride All\
Options -Indexes\
Require all granted\
</Directory>' /etc/apache2/conf-available/security.conf
sed -i 's/^ServerTokens OS/#ServerTokens OS/' /etc/apache2/conf-available/security.conf
sed -i '/^#ServerTokens Full/aServerTokens Prod' /etc/apache2/conf-available/security.conf
sed -i -e 's/^#ServerSignature Off/ServerSignature Off/' -e 's/^ServerSignature On/#ServerSignature On/' /etc/apache2/conf-available/security.conf
sed -i '14,21s/^/#/' /etc/apache2/mods-available/alias.conf
- Configuration globale d'Apache et notamment de son gestionnaire de processus ( Debian < 10 )
cat > /etc/apache2/httpd.conf <<EOF
ServerName $(hostname -f)
ServerAdmin webmaster@hegyd.com
KeepAliveTimeout 3
Timeout 120
Keepalive Off
ServerLimit 250
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 250
MaxRequestsPerChild 0
</IfModule>
EOF
- Configuration globale d'Apache et notamment de son gestionnaire de processus ( Debian 10 )
cat > /etc/apache2/httpd.conf <<EOF ServerName $(hostname -f) ServerAdmin webmaster@hegyd.com KeepAliveTimeout 3 Timeout 120 Keepalive Off ServerLimit 250 EOF
- Activer le mod status et le configurer (Debian 7)
a2enmod status
sed -i -e '/^\s\+Allow from 127.0.0.1 ::1$/a \
Allow from 46.18.122.14\
Allow from 176.31.218.41\
Allow from 88.161.155.75\
Allow from 81.252.255.73\
Allow from 92.154.56.195\
Allow from 78.238.152.36\
Allow from 185.132.64.180\
AuthUserFile /var/projects/common/.htpasswd\
AuthName "Acces reserve"\
AuthType Basic\
require user mike admin \
Satisfy Any' \
-e 's/^ExtendedStatus On/ExtendedStatus On/' /etc/apache2/mods-available/status.conf
- Activer le mod status et le configurer (Debian 8 et +)
a2enmod status
sed -i -e '/^\s\+#Require ip 192.0.2.0\/24$/a \
Allow from 46.18.122.14\
Allow from 176.31.218.41\
Allow from 88.161.155.75\
Allow from 81.252.255.73\
Allow from 92.154.56.195\
Allow from 78.238.152.36\
Allow from 185.132.64.180\
AuthUserFile /var/projects/common/.htpasswd\
AuthName "Acces reserve"\
AuthType Basic\
require user mike admin \
Satisfy Any' \
-e 's/^ExtendedStatus On/ExtendedStatus On/' /etc/apache2/mods-available/status.conf
- Désactiver les modules Apache non nécessaire
a2dismod autoindex a2enmod rewrite a2enmod expires a2enmod php5 /etc/init.d/apache2 restart
- Autoriser la lecture des logs par le groupe dev
sed -i 's/^\s*create\s\+640\s\+root\s\+adm$/\tcreate 640 root dev/' /etc/logrotate.d/apache2
- Sur nouvelle installation Debian, charger le fichier httpd.conf (Normalement pas nécessaire sur un upgrade)
sed -i '/^Include ports.conf/aInclude httpd.conf' /etc/apache2/apache2.conf
[modifier] Upgrade de PHP
Installer la nouvelle version de PHP et écraser les packets déjà installés si besoin
Lister la version installée du module Apache a désactiver
ls -la /etc/apache2/mods-available/php* a2dismod php7.0
Configurer PHP avec la Postconf
Activer le nouveau module Apache et redémarrage du service
a2enmod php7.3 /etc/init.d/apache2 restart
[modifier] Dossier de projets et hôte virtuel de base
- Créer l'arborescence de base des projets
mkdir -p /var/projects/common/default/www chown -R root:dev /var/projects chmod -R 2775 /var/projects
- Créer l'index et le fichiers d'accès par defaut
cat > /var/projects/common/default/www/index.php <<EOF
<?php
/**
* Fichier d'index par défaut Hegyd
*/
header( 'Location: http://www.hegyd.com/', 301);
EOF
cat > /var/projects/common/default/www/.htaccess <<EOF
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
RewriteRule ^server-status/?$ - [L]
RewriteRule ^.*$ /index.php [L]
EOF
chgrp dev /var/projects/common/default/www/*
chmod 664 /var/projects/common/default/www/*
- Créer le htpasswd par defaut
cp /usr/local/share/hegyd/sys-common/var/www/.htpasswd /var/projects/common/.htpasswd chown root:dev /var/projects/common/.htpasswd chmod 664 /var/projects/common/.htpasswd
- Hôte virtuel de base
Debian 7.X
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.orig.bak
cat > /etc/apache2/sites-available/default <<EOF
<VirtualHost *:80>
ServerName $(hostname -f)
DocumentRoot /var/projects/common/default/www
</VirtualHost>
EOF
Debian 8.X
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default.orig.bak
cat > /etc/apache2/sites-available/000-default.conf <<EOF
<VirtualHost *:80>
ServerName $(hostname -f)
DocumentRoot /var/projects/common/default/www
</VirtualHost>
EOF
[modifier] Configuration derrière un proxy
Il est nécessaire de modifier la configuration de log par defaut des vhosts pour logger l'IP réelle du client (entete X-Forwarded-For). Pour cela, editer le fichier "/etc/apache2/conf.d/other-vhosts-access-log" pour qu'il contienne les configurations suivantes :
LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined env=!forwarded
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_proxy env=forwarded
