I denne guide vil jeg forklare, hvor du installerer PHP 8.1 på Nginx eller en Apache2 web server.
Jeg går ud fra du har lavet de grundlæggende instillinger, som at sikre din server m.m.
Det første du skal have gjort er at tilføje nogle kilder til din servers pakkeliste – Det gør du med nedenstående kommandoer.
sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php -y
Opdater din server:
Efter du har opdateret din servers pakkeliste, skal du køre nedenstående kommando
sudo apt update -y && sudo apt upgrade -y
Nginx Installation:
Hvis du vil bruge Nginx webserver skal du installere det med følgene kommando.
sudo apt install -y nginx
Apache 2 Installation:
Hvis du vil bruge Apache2 webserver, skal du installere det med nedenstående kommando.
sudo apt install -y apache2 libapache2-mod-fcgid
PHP 8.1 Installation:
Nu skal du have installeret PHP 8.1- Det gør du ved at skrive denne kommando:
sudo apt install php8.1 php8.1-fpm php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y
OBS: Apache2 fpm
Som standard er fpm ikke aktiveret i Apache2. Det gør du med nedenstående kommandoer
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.1-fpm sudo systemctl restart apache2
PHP konfigation
Jeg vil anbefale, at du retter dette i din php.ini som du finder her /etc/php/8.1/fpm/php.ini
- upload_max_filesize = 512M
- post_max_size = 512M
- memory_limit = 2048M
- max_execution_time = 300
- max_input_vars = 3000
- max_input_time = 1000
Når dette er rettet, skal du genstarte fpm – Det går du med denne kommando
sudo service php8.1-fpm restart
Genstart Nginx eller Apache2 for at ændringerne træder i kraft
Nginx:
sudo systemctl restart nginx
Apache2:
systemctl restart apache2
BONUS INFO # 1: Firewall (UFW)
Hvis du bruger en firewall på din server – F.eks UFW i dette tilfælde, skal du huske at åbne portene på serveren, så den kan tilgåes udefra.
Åben port 80 samt 443 i ufw for at kunne tilgå den webserver ude fra – Det gør du med denne komando:
sudo ufw allow proto tcp from any to any port 80,443
BONUS INFO # 2 – Defaults Virtualhosts
Nginx standard “virtual host”
server { listen 80; listen [::]:80; # Declare the domain name of the website server_name example.com www.example.com; # Declare the document root directory root /var/www/html; index index.html index.php; # Pass PHP files to PHP-FPM listening on /run/php/php8.1-fpm.sock location ~ \.php$ { try_files $uri =404; # Mitigate https://httpoxy.org/ vulnerabilities fastcgi_param HTTP_PROXY ""; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
Apache2 standard “virtual host”
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch ".php$"> SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/" </FilesMatch> </VirtualHost>
BONUS INFO # 3 – Gratis SSL Certificat
Jeg har skrevet en guide til hvordan du installere certbot fra lets encrypt, og udersteder et gratis SSL certificat til dit domæne
Læs mere her: lets-encrypt
BONUS INFO # 4 – Aktivere apache *.conf
For at aktivere din nyoprettet config fil i apache2, skal du bruge disse kommandoer
sudo a2ensite example.conf sudo systemctl restart apache2
Generel fejl finding: Tjek dine log filer, hvis der skulle opstå problemer.
Du finde Nginx´s log filer her:
/var/log/nginx
Du kan køre sudo nginx -t
for at tjekke dine nginx config filer:
Du finde Apache2´s log filer her:
/var/log/apache2/
Du kan køre sudo apache2ctl -t
for at tjekke dine apache2 config filer:
OBS: Apache2 fejlfinding
Hvis du får en fejl der ligner nedenstående
“apache2: Could not reliably determine the server’s fully qualified domain name, using ::1. Set the ‘ServerName’ directive globally to suppress this message”
Så skal du rette følgende /etc/apache2/apache2.conf:
Tilføj ServerName localhost
i bunden af filen:
Efterfølgende skal du genstarte apache2 med
sudo systemctl restart apache2
Læg en kommentar