Образ web сервера linux

Локальный веб-сервер под Linux, с автоматическим поднятием хостов и переключением версий PHP

Скорее всего какие-то части этой статьи уже знакомы многим хаброжителям, но в связи с покупкой нового рабочего ноутбука я решил собрать все крупинки воедино и организовать удобное средство для разработки. Мне часто приходится работать со множеством маленьких проектов, с разными версиями PHP, часто переводить старые проекты на новые версии. В далёком прошлом, когда я был пользователем Windows то использовал OpenServer. Но с переходом на Linux мне нехватало той простоты создания хостов и переключений версий которые были в нём. Поэтому пришлось сделать еще более удобное решение на Linux =)

Цели

  1. Использовать текущий на момент написания статьи софт
  2. Чтоб разграничить локальные домены, будем использовать специальный домен .loc
  3. Переключения версий PHP реализуем через поддомен c помощью fast-cgi
  4. Автоматическое создание хоста с помощью vhost_alias и dnsmasq

будет запущен тот же файл но уже с версией PHP 7.2.7

Другие версии доставляются аналогичным описанным ниже способом.

Для создания еще одного сайта просто создаем в /var/www/ папку имеющую окончание .loc, внутри которой должна быть папка public_html являющаяся корнем сайта

Вот собственно и все. Как без дополнительных мучений, перезапусков, и редактирований конфигов имеем автоматическую систему для работы с сайтами.

Всё это я проверну на LinuxMint19, он на базе Ubuntu18.04, так что с ним все будет аналогично.

Для начала поставим необходимые пакеты

sudo apt update sudo apt install build-essential pkg-config libxml2-dev libfcgi-dev apache2 libapache2-mod-fcgid postfix 

Postfix ставим в качестве плюшки, как простое решение(в мастере установки, всё по умолчанию выбираем) для отправки почты с локальной машины.

Так как это локальная разработка и я единственный пользователь. То мне удобней перенести папку с проектами в мою домашнюю дерикторию. Она у меня маунтится отдельным диском и мигрирует при переустановке системы. Самый простой способ это создать ссылку, тогда не нужно менять пути в настройках да и путь привычный для всех.

Скопируем папку созданную апачем в домашний каталог, создадим на ее месте ссылку, не забыв поменять пользователя на себя и обменяться группами с апачем.

sudo mv /var/www/ ~/www sudo ln -s ~/www /var/www sudo chown $USER:$USER -R ~/www sudo usermod -a -G www-data $USER sudo usermod -a -G $USER www-data 

Создадим папку в которой будем собирать исходники PHP для разных версий

sudo mkdir /usr/local/src/php-build 

Также нам понадобится папки для CGI скриптов

Читайте также:  Zfs on linux стабильность

И runtime папка для этих же скриптов, с правами

sudo mkdir /var/run/mod_fcgid sudo chmod 777 /var/run/mod_fcgid 

И так как каталог у нас находится в оперативной памяти, добавим его создание при старте системы, для этого добавим в /etc/tmpfiles.d/fcgid.conf

 #Type Path Mode UID GID Age Argument d /var/run/mod_fcgid 0755 www-data www-data - - 

У меня dnsmasq-base идет с коробки, если нет то его всегда можно доставить.

sudo updatedb locate dnsmasq.conf 

Либо если он как и у меня является частью NetworkManager то создать новый файл конфигурации в /etc/NetworkManager/dnsmasq.d/local.conf
Добавим в него строчку для перенаправление нашего локального домена на локальную машину.

Также нужно включить необходимые модули апача

sudo a2enmod fcgid vhost_alias actions rewrite 

Предварительная подготовка завершена, приступаем к сборке различных локальных версий PHP. Для каждой версии PHP проделываем следующие 4 шага. На примере 5.6.36

1. Скачиваем исходники нужной версии и распаковываем их

cd /usr/local/src/php-build sudo wget http://pl1.php.net/get/php-5.6.36.tar.bz2/from/this/mirror -O php-5.6.36.tar.bz2 sudo tar jxf php-5.6.36.tar.bz2 

2. Cобираем из исходников нужную версию PHP, и помещаем ее в /opt/php-5.6.36

sudo mkdir /opt/php-5.6.36 cd php-5.6.36 sudo ./configure --prefix=/opt/php-5.6.36 --with-config-file-path=/opt/php-5.6.36 --enable-cgi sudo make sudo make install sudo make clean 

3. Создаем CGI для обработки этой версии в /var/www/cgi-bin/php-5.6.36.fcgi

#!/bin/bash PHPRC=/opt/php-5.6.36/php.ini PHP_CGI=/opt/php-5.6.36/bin/php-cgi PHP_FCGI_CHILDREN=8 PHP_FCGI_MAX_REQUESTS=3000 export PHPRC export PHP_FCGI_CHILDREN export PHP_FCGI_MAX_REQUESTS exec /opt/php-5.6.36/bin/php-cgi 

4. Делаем файл исполняемым

sudo chmod +x /var/www/cgi-bin/php-5.6.36.fcgi 

5. Добавляем экшен для обработки каждой версии в /etc/apache2/mods-available/fcgid.conf

 AddHandler fcgid-script fcg fcgi fpl Action application/x-httpd-php-5.6.36 /cgi-bin/php-5.6.36.fcgi AddType application/x-httpd-php-5.6.36 .php #Action application/x-httpd-php-7.2.7 /cgi-bin/php-7.2.7.fcgi #AddType application/x-httpd-php-7.2.7 .php FcgidIPCDir /var/run/mod_fcgid FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm FcgidConnectTimeout 20 AddHandler fcgid-script .fcgi  

6. Добавляем правило для обработки каждой версии в /etc/apache2/sites-available/000-default.conf

 #Универсальный ServerNamе ServerAlias *.loc #Алиас для CGI скриптов ScriptAlias /cgi-bin /var/www/cgi-bin #Универсальный DocumentRoot VirtualDocumentRoot /var/www/%2+/public_html #Директория тоже должна быть универсальной Options +ExecCGI -Indexes AllowOverride All Order allow,deny Allow from all #Ниже все условия для каждой из версий =~ /56\..*?\.loc/"> SetHandler application/x-httpd-php-5.6.36 #По умолчанию, если версия не указанна, запускаем на последней SetHandler application/x-httpd-php-7.2.7   ErrorLog $/error.log CustomLog $/access.log combined 

Ну вот и всё. Осталось только перезапустить apache и dnsmasq и пользоваться

sudo service apache2 restart sudo service network-manager restart 

Источник

Разворачиваем образ VirtualBox с виртуальным веб-сервером LEMP (Linux, NGINX, MySQL, PHP) под Debian 8

Разворачиваем образ VirtualBox с виртуальным веб-сервером LEMP (Linux, NGINX, MySQL, PHP) под Debian 8 на Windows/Mac/Linux.

Введение:

Мне пришлось перепробовать множество различных сборок веб-серверов, созданных для разработки и дальнейшего тестирования на локальной машине: Денвер, XAMPP, Open Server. Так же устанавливал локально весь набор для веб-сервера (apache, php, mysql), пробовал некоторые другие решения, в конечном итоге оказавшиеся недостаточно удобными. Если в начале работы не было никаких нареканий, то через какое-то время требовалась новая версия одной или нескольких частей софта, и после обновления сборки веб-сервера приходилось сталкиваться с несовместимостью конфигураций, помойкой в системе, помехами со стороны ОС и установленного ПО (например, на Windows Skype занимает 80-й порт). Все решения подобных проблем, какие можно было найти на форумах, это — «переустанови веб-сервер». А если что-то не устраивает в готовых системах, то лучше сделать самому — установить VirtualBox и поднять свой сервер.

Запуск виртуального веб-сервера осуществляется средствами бесплатного и доступного каждому VirtualBox’а (virtualbox.org). Запускать машину можно через графический интерфейс VB (это добавляет окна, которые в последствии придется сворачивать) или через интерфейс командной строки (как фоновый процесс).

Запускаемая виртуальная среда по набору софта и конфигурациям почти полностью совпадает со средой на production-сервере.

Скачать образ виртуального веб-сервера Debian 8 LEMP (Linux, NGINX, MySQL, PHP) для VirtualBox

Образ содержит NGINX, MySQL, PHP-fpm. В этом решении не используется Apache (LAMP), заменяя его связкой NGINX и PHP-fpm (LEMP).

Первый запуск и настройка виртуального веб-сервера

Запуск осуществляется через консоль операционной системы, командой:

VBoxManage startvm D8-lemp --type vrdp

Дополнительный параметр —type заставляет ядро VirtualBox использовать интерфейс VBoxHeadless.

Виртуальная машина запустится в фоновом режиме, и для подключения к ней потребуется SSH-клиент.

Подключение по SSH должно осуществляться на статический IP-адрес виртуальной машины:

Пароль: «pass»

Если у вас другая сеть, или адрес занят, то необходимо запустить единожды виртуальную машину стандартным способом через графический интерфейс VirtualBox и отредактируйте данные IP, маски и шлюза в файле:

nano /etc/network/interfaces

Сохранить изменения и выполнить обновление настроек:

/etc/init.d/networking reload

Затем выключить машину командой:

Теперь можно запускать машину через консоль и выполнять подключение по SSH на установленный вами IP.

При обращении к виртуальной машине через браузер по её IP-адресу должно появится приветствие от NGINX.

Работа с файлами виртуальном веб-сервере

При каждой успешной авторизации по SSH на виртуальной машине будет появляться стандартное приветствие и дополнительная информация о работе машины, которая выглядит следующим образом:

Быстрый старт LEMP (Linux, NGINX, MySQL, PHP) на Debian 8:

  1. nano ~/.hgrc — Укажите свои данные для доступа к Mercurial
  2. Все сайты добавляются в папку /home/web/ или монтируется папка через VB в /media/sf_*
  3. Конфигурации сайтов живут в /etc/nginx/sites-enabled/
  4. Перезагрузка веб-сервера происходит по команде service nginx reload
  5. Перезагрузка php-fpm происходит по команде service php5-fpm reload
  6. Выполнение системных команд требует root прав, а для этого выполните su

Пароль везде: pass
Доступны: Mercurial и Composer.

Инструкция довольно простая, но раскрою пару моментов.

Самый удобный вариант работы с файлами, это прицепить папку через VirtualBox

  • Если вам не нужен Mercurial и Composer, просто игнорируйте их, они напоминать о себе не будут.
  • Самый удобный вариант работы с файлами, это прицепить папку через VirtualBox, которая потом появится в виртуальной машине по адресу /media/sf_*
  • Папки цепляются через раздел «Общие папки» в настройках виртуальной машины. Установите для папки параметры «Авто-подключение» и «Создать постоянную папку». Перед подключением папки, выключите виртуальную машину командой poweroff
  • Цепляйте корневую папку в которой лежат все проекты, чтобы потом не приходилось каждый раз добавлять новую папку.

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

В виртуальной машине настроен тестовый сайт с доменом test.web, чтобы увидеть его и любой другой виртуальный хост, который вы настроите на машине, где установлен VirtualBox, в файле hosts, пропишите доступ до test.web:

В Windows файл hosts находится по данному адресу:

C:\Windows\System32\drivers\etc\hosts

В MacOS и Linux:

Открываем его в текстовом редакторе и прописываем в нем доменное имя и IP-адрес (в данном варианте IP-адрес виртуальной машины) для него.

Открыв браузер и набрав в адресной строке test.web, сгенерируется страница с надписью «Hi!».

Добавление и запуск сайтов на виртуальном веб-сервере

Для добавления нового сайта скопируйте файл конфигурации /etc/nginx/sites-enabled/test.

cp /etc/ngingx/sites-enabled/test /etc/nginx/site-enabled/mysite

Откройте скопированный файл и отредактируйте папку расположения сайта и имя сервера (домена).

server_name test.web; root /home/test;
server_name mysite.web; root /home/mysite;

Для применения изменений конфигурации требуется перезапуск сервиса:

Аналогично перезапускается сервис php5-fpm в случае, если изменялись конфигурации, связанные с php:

Добавление базы данных в MySQL.

На виртуальной машине установлена СУБД MySQL. Для обращения к ней и создания баз данных существует несколько вариантов. Самый простой — использование графического клиента. Другой вариант — работать с СУБД через консоль.

Примеры ПО с графическим интерфейсом:

  • Для Windows, бесплатный SSH-клиент heidisql.
  • Для MacOS, бесплатный SSH-клиент SequelPro.

При использовании ПО с графическим интерфейсом требуется создание SSH-туннеля.

Пример для программы SequelPro

Выбираем создание SSH-туннеля.

Пример для программы SequelPro

  • Указываем IP-адрес в поле Адрес SSH
  • Пользователь: root
  • Пароль: pass
  • Адрес MySQL: 127.0.0.1
  • Пользователь: root
  • Пароль: pass
  • Соединяемся с MySQL.

Установка дополнительных пакетов и обновления

Данная виртуальная машина является полноценной операционной системой, поэтому ее можно обновлять и устанавливать любое другое дополнительное программное обеспечение.

Дополнительные изменения

  • Чтобы избежать проблем с правами у папки, в которой располагаются файлы проектов, пользователь www-data добавлен в дополнительную группу vboxsf.
    usermod -a -G vboxsf www-data
  • Включена авторизация для root по SSH.

Источник

Оцените статью
Adblock
detector