Настройка локального сервера в Ubuntu

После опыта работы в Windows сначала на стареньком, добром Denwer, а после и в Open Server, переход на Linux и настройка веб-сервера в его окружении дал мне почувствовать значительный прирост в скорости выполнения приложении и слаженности работы всего стека (Linux Nginx Mysql PHP) в целом. Хочется отметить, что описанные выше собранные и готовые к использованию дистрибутивы под "винду", не только проигрывают по скорости, но и менее гибки в плане тонких конфигурации отдельно взятых компонентов системы по сравнению с "линём". К примеру, понадобилось мне как то сконфигурировать установленное php-расширение (Imagick) в OpenServer под php7, так без танцов с бубном не обошлось, а в Ubuntu я инсталлировал нужный мне пакет одной командой за 5 сек. Про настройку shell, переменных окружения, терминала в phpStorm и многого другого в Windows, я вообще молчу.

Так что, тем веб-разработчикам, кому посчастливилось установить Ubuntu (возможно и рядом с виндой на компе), посвящается. Запускаем терминал (ctrl + alt + t) и ...

Nginx

Установка high performance web server:

sudo apt-get update
sudo apt-get install nginx

После установки nginx активируется, пропишется в хосты и мы сможем проверить его работу зайдя на localhost:

test nginx

PHP

sudo apt-get install php php-cli php-fpm php-mysql
sudo nano /etc/php/7.0/fpm/php.ini

Установить cgi.fix_pathinfo=1, сохранить (ctrl+o), выйти (ctrl+x).

Расширения живут здесь: /etc/php/7.0/mods-available/.

В дальнейшем все нужные расширения для php легко гуглятся и устанавливаются (такие как curl, xdebug и многие другие). Для перезапуска:

service php7.0-fpm restart

MySQL

sudo apt-get install mysql-server

Потом проверяем что у нас все в порядке:

service mysql status
mysql --version

phpMyAdmin

Иногда очень помогает в работе, веб-интерфейс для mysql, установка:

sudo apt-get install phpmyadmin php-mbstring php-gettext

В первом окне при установке, выбор сервера, ничего не ставим. В процессе установки желательно установить пароль для пользователя mysql. После установки откроем на редактирование стартовый конфиг

sudo nano /etc/nginx/sites-available/default

И добавим в него необходимый минимум для начала работы:

# Default server configuration
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.php index.html index.htm index.nginx-debian.html;

	server_name 127.0.0.1;

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	}
	
	#phpMyAdmin
         location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }
}
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
service nginx restart

По адресу localhost/phpmyadmin/ будет доступен веб-интерфейс. В процессе работы могут вываливаться множественные предупреждения, одни из них могут быть связаны с классами gettext и stream, просто замените устаревший метод конструктора в них на __construct.

Настройка виртуальных хостов

Примеры для некоторых проектов, которые базируются, например, на...

WordPress

Настроим, к примеру, хост wp.com. Создадим каталог для хранения проектов, например phpstorm. (/home/user/phpstorm/), где user - это уже имя вашей учётки. Создаём проект в phpStorm, создаем директорию проекта внутри этого каталога (например wp), ставим галочку не проверять коннект по http, так как хост еще не настроен. Заливаем файлы движка и производим стандартную установку. После чего проставляем символическую ссылку:

sudo ln -s /home/user/phpstorm/wp /var/www
sudo nano /etc/nginx/sites-available/wp.com

Вставляем минимально необходимый конфиг для вордпресс:

server {
	listen 80;
	listen [::]:80;

        server_name wp.com;

        root /var/www/wp;

        index index.php index.html index.htm index.nginx-debian.html;

        gzip on;
        gzip_disable "msie6";
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

        location ~ /\. {
                deny all; # запрет для скрытых файлов
        }

        location ~* /(?:uploads|files)/.*\.php$ {
                deny all; # запрет для загруженных скриптов
        }

        location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off;
                log_not_found off;
                expires max; # кеширование статики
        }

        location / {
                try_files $uri $uri/ /index.php?$args; # permalinks
        }

        location ~ \.php$ {
           	include snippets/fastcgi-php.conf;
	   	fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	   	fastcgi_split_path_info ^(.+\.php)(/.*)$;
           	include fastcgi_params;
        }
}
sudo ln -s /etc/nginx/sites-available/wp.com /etc/nginx/sites-enabled/
sudo nano /etc/hosts

Добавляем строку 127.0.0.1 wp.com.

service nginx restart

Symfony

Аналогично. Только приведу пример минимального конфига для запуска фреймворка (версия 3.*):

server {
	listen 80;
	listen [::]:80;

	root /var/www/symfony_project_name/web;

	# Add index.php to the list if you are using PHP
	index index.php index.html index.htm index.nginx-debian.html;

	server_name symfony_project_url;

	location / {
           # try to serve file directly, fallback to app.php
           try_files $uri /app.php$is_args$args;
        }

        location ~ ^/(app_dev|config)\.php(/|$) {
           include snippets/fastcgi-php.conf;
	   fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	   fastcgi_split_path_info ^(.+\.php)(/.*)$;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
           fastcgi_param DOCUMENT_ROOT $realpath_root;	   
	}

	# PROD
        location ~ ^/app\.php(/|$) {
	   include snippets/fastcgi-php.conf;
	   fastcgi_pass unix:/run/php/php7.0-fpm.sock;
	   fastcgi_split_path_info ^(.+\.php)(/.*)$;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
           fastcgi_param DOCUMENT_ROOT $realpath_root;
           internal;
	}

    	location ~ \.php$ {
           return 404;
    	}	
}

После стандартной установки нужно пофиксить права



Похожие заметки:

Регулярное выражение для очистки повторяющихся слов

Напишите регулярное выражение, которое удаляло бы идущие подряд (через один или несколько пробелов) два и более одинаковых слов, причем так, чтобы не осталось пробелов. Считайте все слова состоящими из маленьких латинских букв

Открыть здесь

2272

Найти сумму произведений всех простых чисел

Найдите сумму произведений всех простых чисел, меньших 200, на их порядковые номера, считая, что первым простым числом является 2

Открыть здесь

584

Ajax загрузка картинки на сервер

Загружаем изображение на сервер с использованием библиотеки

Открыть здесь

1035


Перед тем как писать комментарии, рекомендую ознакомиться:

Markdown синтаксис »

Оформление кода »

Нужна аватарка »

Комментарии