Nginx
Install Nginx stable version on Ubuntu
Installation
Install the prerequisites:
bash
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyringImport an official nginx signing key so apt could verify the packages authenticity. Fetch the key:
bash
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullVerify that the downloaded file contains the proper key:
bash
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpgThe output should contain the full fingerprint 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 as follows:
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>If the fingerprint is different, remove the file.
To set up the apt repository for stable nginx packages, run the following command:
bash
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listIf you would like to use mainline nginx packages, run the following command instead:
bash
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listSet up repository pinning to prefer our packages over distribution-provided ones:
bash
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginxTo install nginx, run the following commands:
bash
sudo apt updatebash
sudo apt install nginxbash
sudo systemctl status nginxbash
sudo systemctl start nginxbash
sudo systemctl enable nginxDeploy a website with php-fpm
bash
sudo nano /etc/nginx/conf.d/example.com.confnginx
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.html index.htm index.php;
access_log /var/log/nginx/example.com.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $fastcgi_script_name =404;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}bash
nginx -tbash
sudo systemctl reload nginx