Инсталиране на nginx под Ubuntu

от БАРЗИКТ Wiki
Направо към: навигация, търсене


Nginx е безплатен HTTP, IMAP/POP3 и "Reverse proxy" сървър с отворен код.

Инсталиране на nginx под Ubuntu Server

Посочените конфигурации са тествани с Ubuntu Server 14.10.

Основните стъпки при инсталирането и конфигурирането на nginx са:

  1. Обновяване на Ubuntu Server (опционално)
  2. Инсталиране на nginx
  3. Инсталиране и конфигуриране на php-fpm
  4. Конфигуриране на сървъра (nginx.conf)
  5. Конфигуриране на сайт (default)
  6. Стартиране на сървъра
  7. Проверка на сървъра (опционално)

Обновяване на Ubuntu

sudo apt-get update
sudo apt-get upgrade

Инсталиране на nginx

sudo apt-get install nginx

Инсталиране и конфигуриране на php-fpm

PHP-FPM (FastCGI Process Manager) е алтернативно PHP FastCGI решение, оптимизирано за работа при високо натоварване.

sudo apt-get install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

Възможни промени в /etc/php/7.0/fpm/php.ini

cgi.fix_pathinfo=1
upload_max_filesize = 512M
post_max_size = 128M

Конфигуриране на сървъра (nginx.conf)

Конфигурацията е примерна и се препоръчва внимателно да се разгледа официалната документация на nginx с цел да се получи максимална производителност и защита на данните.

Промени в /etc/nginx/nginx.conf

worker_processes 1;

events {
       worker_connections 1024;
}

keepalive_timout 2;

fastcgi_read_timeout 600;

Забележка: worker_processes е равна на броя на ядрата на процесора.

Конфигуриране на сайт (default)

Конфигурацията е примерна и се препоръчва внимателно да се разгледа официалната документация на nginx с цел да се получи максимална производителност и защита на данните.

Примерна конфигурация за CMS Made Simple.

Промени в /etc/nginx/sites-available/default

server {
        listen   80; 
        listen   [::]:80 default ipv6only=on;

        root /var/www/;
        index index.php index.html index.htm;

        server_name www.test.com;

        location / {
                try_files $uri $uri/ /index.php?page=$request_uri;
        }

        location ~ \.php$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                #fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param HTTPS off;
        }
	}

Забележка: Конфигурации за пренаписване(rewrite) за най-често използваните системи са поместени на http://wiki.nginx.org/Main

Стартиране на сървъра

sudo service php7.0-fpm restart
sudo service nginx start

Проверка на сървъра

Проверката на производителността и стабилността на сървъра може да се извърши чрез autobench.

Инсталиране на MySQL сървър (опционално)

sudo apt-get install mysql-server mysql-client

Автоматизиран скрипт nginx_install.sh (Ubuntu 14 + PHP5)

#!/bin/bash
# This script will test if you have given a leap year or not.

echo "Type the domain name, followed by [ENTER]:"

read server_name

echo "**** Updating the system ****"
sudo apt-get update
sudo apt-get upgrade -y
clear

echo "**** Intalling MySQL ****"
sudo apt-get install mysql-server mysql-client -y
clear

echo "**** Installing nginx ****"
sudo apt-get install nginx -y
clear

echo "**** Installing php-fpm ****"
sudo apt-get install php5-fpm php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-xcache -y
clear

echo "**** Modifying php.ini ****"
sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=1/g' /etc/php5/fpm/php.ini
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 512M/g' /etc/php5/fpm/php.ini
sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php5/fpm/php.ini
clear

echo "**** Modifying nginx.conf ****"
sudo sed -i 's/keepalive_timout 65/keepalive_timout 2/g' /etc/nginx/nginx.conf
clear

echo "**** Creating default nginx site configuration ****"
sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
sudo echo "server {
        listen   80;
        listen   [::]:80 default ipv6only=on;

        root /var/www/;
        index index.php index.html index.htm;

        server_name  $server_name;

        location / {
                try_files \$uri \$uri/ /index.php?page=\$request_uri;
        }

        location ~ \.php\$ {
                try_files \$uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                #fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
                fastcgi_param HTTPS off;
        }
        }" >> /etc/nginx/sites-available/default
clear

echo "**** Restarting the servicesw ****"
sudo service php5-fpm restart
sudo service nginx-restart
clear

echo "**** All done! ****"