Настройка локального сервера в 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;
    	}	
}

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



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

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

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

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

836

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

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

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

521

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

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

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

1957


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

Markdown синтаксис »

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

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

Комментарии