- Мастерим собственный локальный веб-сервер на VirtualBox
- Создаем виртуальную машину для нашего будущего сервера
- Настаиваем виртуальную машину
- Устанавливаем Linux
- Создание сервера в Windows 7 с помощью Virtualbox
- Предыстория
- Задача
- Инвентарь
- Приступим
- Конфигурация Linux
- Доступ к серверу из внешнего мира
- Удобный веб сервер на Virtualbox
- Подготовка
- Настраиваем php-fpm.
- Настраиваем nginx.
- Автоматизация
Мастерим собственный локальный веб-сервер на VirtualBox
Эта статья и несколько следующих будут посвящены одной из интереснейших тем и одновременно не из простых, а именно, как вы могли уже понять из названия – созданию собственного локального веб-сервера. Конечно, мы можем использовать для этого готовые решения как: Open Server, WampServer, XAMPP, Mamp и другие. Но бывают случаи, когда проще собрать свой вариант на виртуальной машине, где будет стоять только нужное ПО и ничего лишнего. Причем разобраться необходимо всего один раз, а затем инструкцию можно будет использовать многократно.
Многие, кто работает под Windows, сразу или позже приходят к выводу, что наиболее удобной сборкой для разработки веб-приложений является Open Server. Сам я раньше пользовался именно ею, так как Open Server покрывал все мои потребности, но перейдя на Linux, а потом на Mac OS я пришел к выводу, что это удобство ограничивает. Было трудно отказаться от Open Server, так как подобных инструментов для Linux и Mac OS попросту нет. Есть похожие варианты, но не совсем то, чего бы хотелось и к чему привык. Собственно, по это причине и появилась эта статья.
Создаем виртуальную машину для нашего будущего сервера
Первым делом мы должны скачать и установить VirtualBox. Найти его можно на официальном сайте . Установка его достаточна тривиальная задача и не требует рассмотрения. После того, как мы это сделали можно приступить к созданию нашего локального сервера.
В верхнем меню находим кнопку «Создать» кликаем по ней:
Теперь нам нужно указать следующие настройки:
Название собственно любое, я буду использовать «server». Ставить мы будем Linux, поэтому указываем соответствующий тип. Дистрибутив мы будем использовать Lubuntu – выбираем в настройках версию Ubuntu 64 бита и кликаем «Продолжить».
Объём памяти можно оставить по умолчанию, в моем случае это 1024 мб. Двигаемся дальше.
Выбираем «Создать новый виртуальный жесткий диск» и нажимаем на кнопку «Создать».
Тут оставляем по умолчанию – VDI (Virtual Disk Image).
Мы можем использовать один из двух вариантов жестких дисков, я чаще всего использую – динамический, поэтому оставлю как есть и нажму кнопку «Продолжить».
Финальный этап — указываем размер диска и кликаем «Создать».
Настаиваем виртуальную машину
Перед тем, как перейти к настройке виртуальной машины, предлагаю скачать дистрибутив линукса. Как вы наверняка знаете, дистрибутивов большое количество, а для нашей задачи нам не нужна графическая оболочка и лишний софт, поэтому для локального сервера можно использовать, как я выше упомянул, – Lubuntu . Это хороший выбор для локального веб-сервера. Версию стоит использовать 16.04 LTS Desktop 64-bit, она стабильная и не требует большого количества ресурсов.
Ну, а теперь пройдемся по настройкам:
В первом блоке «Общие» мы оставим все как есть, перейдем к следующему:
Первым делом отключаем «Гибкий диск» — он нам точно не нужен и ставим приоритет загрузки «Жесткий диск». Далее изменяем чипсет на «ICH9» — так мы немного ускорим систему и, в завершении, можем убрать галку «часы в системе UTC».
Что еще можно в данном разделе поменять, если позволяют ресурсы, то увеличиваем число процессоров. Следующий раздел «Дисплей», его пропускаем и переходим в «Носители»:
Для получения меньшего времени загрузки нашего сервера мы можем установить галку «Кэширование ввода/вывода».
Для нашего сервера не требуются аудио, поэтому отключаем и двигаемся дальше. Хотя на этом этапе мы можем пока закончить и перейти к установке Linux-ca Lubuntu.
Устанавливаем Linux
После того, как мы все настроили и скачали наш дистрибутив Linux-са можно приступать к установке. Для этого нам необходимо добавить наш диск в оптический привод виртуалки:
Если вы ни разу не ставили подобные системы — не стоит переживать, так как процесс не сильно отличается от установки старой «доброй» винды. Первое, что вы увидите это выбор языка установщика:
И, собственно, после него:
Дальнейшая установка стандартная, а настройки можно оставить по умолчанию. Когда процесс установки пакетов системы завершиться, останется создать пользователя в системе:
После чего нам предложат перезагрузить Linux, что мы и делаем. Вводим наш логин и пароль и видим простой интерфейс нашего дистрибутива (в дальнейшем мы отключим графическую оболочку).
Если пакеты давно не обновлялись, может появится такое сообщение:
Обновлять не обязательно, но обычно я устанавливаю предложенные обновления, поэтому кликаем «Установить сейчас» и на этом заканчиваем.
На этом я хочу завершить эту статью, мы закончили с подготовительными этапами и можем непосредственно начать устанавливать весь софт, который нам потребуется для нашего локально сервера, но об этом вы узнаете в следующей статье.
Статьи из серии «Создание локального веб-сервера»:
Источник
Создание сервера в Windows 7 с помощью Virtualbox
Привет, всем!
Хочу рассказать о том как я создавал веб-сервер для разработки и тестирования PHP приложений на локальной машине и как потом я его «вывел в свет».
Предыстория
В качестве собственного и профессионального развития я решил более тесно познакомится с Linux системой и, в частности, с настройкой веб-сервисов. До этого для разработки и тестирования PHP приложений я пользовался пакетом Denwer для Windows (apache+php+mysql), который вообщем-то со своей задачей справлялся, но не отражал (и не отражает) современной действительности — все-таки хостинг с Windows не так популярен.
Желание иметь полный доступ к серверу и нежелание платить за это удовольствие исключили из рассмотрения вариант покупки VPS. А потому я решил организовать Linux сервер на своем локальном компьютере.
Задача
- Поставить виртуальный Linux
- Настроить сетевое соединение гостевой ОС (Linux) и хост (Windows 7)
- Установить необходимые сервисы
- Сделать доступ к серверу из внешнего мира
Инвентарь
Windows 7 Home Basic
VirtualBox 4.0.8
Образ ubuntu-11.04-server-i386.iso
Приступим
Первый пункт, наверное самый простой. Virtualbox обладает простым интерфейсом и процесс создания виртуальной машины не вызывает трудностей. Для своего сервера я выбрал минимальные настройки производительности — (128Мб оперативной памяти, usb устройства отключены, никаких графических ускорений и прочих изысков — для сервера должно быть ок ), чтобы не слишком загружать основную систему.
Параметры сети
В меню Virtualbox в настройках сети для виртуальной машины в качестве типа подключения для первого сетевого адаптера указываем NAT. Тогда сеть в системе поднимется сама и машина будет иметь доступ к внешнему сетевому соединению Windows. Проблема в том, что при таких настройках, Linux система остается недоступной из основной системы.
Но решение есть! Указываем для второго сетевого адаптера значение «Виртуальный адаптер хоста». При установке Virtualbox в системе автоматически дополнительно создается сетевое подключение «VirtualBox Host-Only Network», которое нам пригодится в этом случае. Заходим в «Центр управления сетями и общим доступом» Windows. В настройках этого соединения указываем стандартные для данной задачи параметры: ip — 192.168.0.1, netmask — 255.255.255.0.
Осталось указать нужные параметры в виртуальной системе. Дописываем нужные строки в файл «/etc/network/interfaces»
iface eth1 inet static
address 192.168.0.2
netmask 255.255.255.0
auto eth1
перезапускаем сеть и можно попробовать пинговать Linux.
Таким образом: а) Linux имеет доступ в интернет через сетевое соединение Windows
б) Windows видит сервер и может к нему обращаться по ip — 192.168.0.2 (для удобства можно дописать в файл hosts какое-нибудь удобоваримое имя для этого ip, например «webserver»)
Конфигурация Linux
Что я хочу от своего сервера?
Во-первых, мне нужен веб-сервер с поддержкой PHP — возможность разрабатывать и тестировать приложения на локальной машине меня весьма радует
Во-вторых, мне нужна база данных — MySQL и/или PostgreSQL
В-третьих, мне очень удобно когда сохранив файл в IDE, можно тут же запустив скрипт в консоли или обновив страницу в браузере увидеть изменения. Таким образом, используемая мной IDE также должна иметь доступ к www каталогу на сервере. (чтобы не нужно было дополнительно копировать что-либо куда-нибудь)
В-четвертых, мой сервер должен быть доступен из внешней среды.
Поскольку моя статья не о настройке apache, тонкостях php.ini или бэкапе mysql, то первые три пункта я пропущу и описывать не буду. Скажу лишь, что все что сделал я (что не заработало сразу после установки) — это поправил вывод ошибок в php.ini (по умолчанию был полностью отключен вывод вообще всех ошибок), а также установил xdebug. Третий пункт решается установкой samba и небольшой модификацией файла конфигурации «etc/samba/smb.conf» в разделе Share Definitions, с целью разрешить пользователям доступ к своей директории в home (именно в эту папку помещен DocumentRoot сервера apache).
На данный момент уже можно получить доступ к серверу не только по ssh (open ssh server ставится по умолчанию) через putty, но и по samba — подключив пользовательскую директорию как сетевой диск в Windows.
А вот на последнем пункте я остановлюсь подробнее.
Доступ к серверу из внешнего мира
По сути, задача стоит в том, чтобы все запросы на 80 порт к моему компьютеру перенаправлять на 80 порт моего локального сервера. Такой вот небольшой прокси. Здесь на помощь приходит утилита netsh встроенная в Windows 7.
c:\>netsh
netsh>interface portproxy
netsh interface portproxy>add v4tov4 listenport=80 connectaddress=192.168.0.2 connectport=80 protocol=tcp
Теперь виртуальный веб-сервер доступен при обращении к моему компьютеру по внешнему ip-адресу.
Если для вас, как и для меня, белый внешний ip адрес является роскошью и проще говоря, его нет, то еще одна часть истории для вас!
Источник
Удобный веб сервер на Virtualbox
Когда делаешь простые сайты на WordPress, то с вебсервером все просто, поставил себе Xampp и спокойно работаешь.
Но приходит момент когда начинаешь заниматься серьезными проектами, а там уже конфигурация на сервере не совсем обычная и пользоваться Xampp не совсем удобно, к тому же у меня аллергия на Apache.
Захотелось хороший, живой вебсервер по типу выделеного сервера, но на своем компе, при этом чтобы пользоваться было удобно, локально.
Что именно хочется:
- Поддержку нормальных url типа sitename.ru
- Не редактировать /etc/hosts
- Не редактировать конфиги nginx
- Работать в локальной папке
- Удобное администрирование конфигурации сервера
- Изолированое окружение
- Поставить и забыть
Есть еще вариант — просто у себя поднять все, но есть загвоздка, если что нибудь сломается, упадет жесткий диск, или еще что нибудь, то потом опять все собирать будет лень, а так просто можно сделать бэкап файла виртуальной машины, так же получаем независимое окружение.
Поэтому я поднял дебиан на виртуальной машине (virtualbox) и настроил nginx+phpfpm за пару часов, но это не очередное хау ту по связке nginx+phpfpm, мы делаем готовое решение по типу xampp.
Подготовка
Итак, мы имеем свежеустановленный Debian 7 (wheezy). Виртуальная машина имеет имя webserver. На локальной машине установлен так же Debian wheezy.
Первым делом хотелось бы избавиться от диалогового окна и использовать ssh.
Выключаем виртуальную машину и пишем:
Заодно пробросим 80 порт для вебсервера.
Порты меньше 1024 может открывать только root (Спасибо or10n), поэтому я просто пробросил 8888 порт и перенаправил с 80 порта на 8888.
Вставляем до exit 0
Тут вместо 10.0.2.15 может быть другой ip, смотрите вывод команды ifconfig на eth0.
Запускаем виртуальную машину в фоне, это очень удобно, прошу заметить, что запускаем под обычным пользователем, у которого находится виртуальная машина webserver.
Все, мы пробросили 2222 порт на 22 внутренний, 80 порт будет работать, позже увидим. Пробуем коннектиться:
Настраиваем php-fpm.
Поскольку тут нам париться с безопасностью не надо, поэтому все будет работать от одного юзера www-data.
Так же мы будем обращаться через сокет. Предлагаю готовый конфиг, на самом деле я там особо своего ничего не добавлял, не забываем делать бэкапы.
Здесь опять же дефолт, можете вообще этого не делать, т.к. это тот же конфиг только без комментариев, но мне так проще ореинтироваться в конфиге.
Теперь надо подготовить пулл, который будет обрабатывать наши php запросы. Приводим конфиг к следующему виду.
Параметры pm хорошо описаны на других ресурсах, поэтому тут я ничего не буду объяснять, просто держите готовое.
Осталось поправить php.ini. На самом деле кого то может устроить и дефолтный, он неплохой. Но я все же приведу свой.
Конфиг большой и необязательный, поэтому выкладываю сюда pastebin.com/AAudu4sh
Настраиваем nginx.
В общем остается проблема с конфигами, лень каждый раз лезть на сервер, добавлять конфиг, перезагружать nginx. Поэтому собрал универсальный конфиг.
После можно будет просто создать папку, залить файлы и работать. Сказано, сделано. Вот Вам готовый конфиг nginx:
Вставляем вышеприведеный конфиг
Я не претендую на то что конфиг хорош и идеален, но он у меня работает и проблем пока не возникало. Я буду очень рад если тут найдутся люди которым есть что сюда добавить.
Ну все, осталось только настроить дериктории. Немного поясню как у нас будет все происходить.
- /web папка где будет лежать весь сервер, за исключением конфигов конечно же
- /web/utils — туда мы будем складывать все наши дополнительные, вспомогательные скрипты типа phpmyadmin, пока я не придумал что туда еще положить, т.к. пока больше ничего не надо.
- /web/sites — тут наши все сайты.
Так же будут логи, access и error.
Осталось поставить phpmyadmin.
На сервере выполняем
Все, phpmyadmin готов к труду и обороне. можно его теперь найти по адресу phpmyadmin.l
Итак, вебсервер у нас готов, осталось сделать так чтобы он стартовал при загрузке, сохранялся при выключении и перезагрузке, и при этом не было окна состояния.
Немного опишу стратегию, после того как виртуальная машина загрузится, мы при помощи sshfs маунтим директорию с сайтами, и я сделал это автоматом.
Так же мне лень каждый раз редактировать файл /etc/hosts при добавлении очередного сайта, поэтому мы все это автоматизируем.
Автоматизация
Делаем авторизацию по ключу
На сервере надо:
Остановить демоны nginx и php5-fpm, и установить домашнюю дерикторию для юзера www-data.
Сгенерировать ключ от рута, и после поместить публичный в файл /home/www-data/.ssh/authorized_keys
На клиенте проверяем:
Если зашли без пароля, то все хорошо, если нет, то что-то Вы сделали не так с ключами.
Теперь осталось создать 2 скрипта.
1) Скрипт проверки доступности виртуальной машины и автоматический маунтинг, так же генерация файла /etc/hosts.
Вставляем следующий код
На правильность кода я не претендую, и буду рад тому кто найдет там баги. Но у меня он работает исправно.
Удобство скрипта в том что даже если перезагрузите виртуальную машину, ничего не поломается и все будет хорошо.
Теперь делаем его исполняемым
2) Небольшой скрипт который будет запускать и останавливать вебсервер.
Вставляем следующий код
darkrain — заменить на вашего юзера, т.к. созданая машина находится в подчинении у него, а не у рута.
Опять же я тут не профи, буду признателен если меня поправят, но это работает.
Выставляем права, и добавляем в список сервисов
Осталось создать каталог где будут видны наши сайты
Рестартуем наш сервер
Все, теперь все счастливы и довольны, создаем для теста:
Ждмем 60 секунд, и идем в браузер по адресу testsite.ru.l
Ну все, мы закончили! Можно забыть про то что у нас есть вообще виртуальная машина, пока конечно не понадобиться поставить какую нибудь либу или еще что-то может понадобиться.
Теперь чтобы работать с новым сайтом я просто создам папку с именем домена в /mnt/webserver, и просто буду работать не отвлекаясь.
Здесь более менее понятно описано про php-fpm, про пулы и прочее manualpages.pro/node/31
Остальная информация была взята по крупицам из Google.
Спасибо огромное тому кто мне дал инвайт! Да, к сожалению я так и не понял кто это.
Спасибо НЛО за инвайт!
Источник