ترکیب پیشنهادی امروز Apache با MPM event و PHP-FPM است، نه mod_php قدیمی. این ترکیب حافظهی کمتری مصرف میکند و هر سایت میتواند pool جداگانه داشته باشد.
۱. نصب
sudo apt update
sudo apt install -y apache2 php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd php-intlنسخهی نصبشدهی PHP را پیدا کنید (در هر نسخهی Ubuntu متفاوت است):
PHPV=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;'); echo $PHPV۲. اتصال Apache به PHP-FPM
sudo a2dismod php$PHPV mpm_prefork 2>/dev/null
sudo a2enmod mpm_event proxy_fcgi setenvif rewrite headers
sudo a2enconf php$PHPV-fpm
sudo systemctl restart apache2 php$PHPV-fpm۳. تعریف سایت
sudo mkdir -p /var/www/example.ir/public
sudo chown -R www-data: /var/www/example.ir
sudo nano /etc/apache2/sites-available/example.ir.conf<VirtualHost *:80>
ServerName example.ir
ServerAlias www.example.ir
DocumentRoot /var/www/example.ir/public
<Directory /var/www/example.ir/public>
AllowOverride All
Require all granted
Options -Indexes
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.ir-error.log
CustomLog ${APACHE_LOG_DIR}/example.ir-access.log combined
</VirtualHost>sudo a2ensite example.ir
sudo a2dissite 000-default
sudo apache2ctl configtest && sudo systemctl reload apache2۴. پنهان کردن اطلاعات نسخه
در /etc/apache2/conf-available/security.conf:
ServerTokens Prod
ServerSignature Offو در /etc/php/$PHPV/fpm/php.ini مقدار expose_php = Off را تنظیم کنید.
sudo systemctl reload apache2 php$PHPV-fpm۵. آزمایش PHP
echo '<?php echo "PHP " . PHP_VERSION;' | sudo tee /var/www/example.ir/public/v.php
curl -s -H 'Host: example.ir' http://127.0.0.1/v.php
sudo rm /var/www/example.ir/public/v.phpبرای HTTPS از certbot --apache استفاده کنید.