Локальный тестовый линукс-сервер под Windows

+32
6.42K
Хочу поделиться своим опытом по организации простого виртуального сервера на линуксе на локальном компьютере.
Зачем это нужно?
Для тестирования своих проектов на совершенно бесплатном своем вебсервере на линуксе, который к тому же можно в течении минимального времени вернуть к любому нужному состоянию и продолжить эксперименты.
Вы скажете, а как же Опенпанель, Денвер, Ксампп, Вингинкс и т.д?
Всё это, безусловно, очень удобно и хорошо. Создателям этих инструментов надо поставить памятник! Но иногда требуется протестировать работу сайтов и приложений на реальном линукс-сервере. Со всеми установками веб-панели, работой в консоли по SSH, с правами на папки, установленными расширениями и прочими нюансами. Можно, конечно, за 150 рублей в месяц найти вполне нормальный VDS, но это опять зависимость от воли хостера и доброжелательности техподдержки.
Можно и вообще ничего не тестировать, не экспериментировать, а задавать вопросы на форуме в надежде, что подскажут товарищи, у которых есть площадка для экспериментов. Но это какой-то растительный метод существования. А человек должен мыслить и развиваться!
Инструкция рассчитана на самых неискушенных в линуксе людей, как и я сам.

Итак, по пунктам:

1. Создание виртуальной машины.

Заходим на сайт Оракла и скачиваем Виртуалбокс.
www.virtualbox.org/
Устанавливаем Виртуалбокс (далее буду называть его просто VB) стандартно, все что ни предложит – принимать. В настройках можно указать свою папку для виртуальных машин по умолчанию.
Иллюстрация
Скачиваем минимальный линукс. То есть практически голое ядро с загрузчиком. Мне больше нравится Centos 7, поэтому далее все будет на примере Центоса. Скачать минимальный Centos: isoredirect.centos.org/centos/7/isos/x86_64/
По любой из ссылок скачать CentOS-7-x86_64-Minimal-1908.iso
Далее создаем новую виртуальную машину. Если её назвать как-то вроде Cent111, VB сразу предложит настройки подходящие для установки Центоса и можно смело с ними соглашаться и просто жать кнопку «Далее».
Потом нужно настроить созданную машину. Настроек потребуется всего две: настроить сеть, выбрав тип подключения «Сетевой мост» и сразу подключить образ Центоса для установки:
Иллюстрация
Иллюстрация
Запускаем виртуальную машину и Центос сразу начинает устанавливаться. При установке можно выбрать русский язык, тогда линукс будет ругаться по-русски, но в этом случае нужно не забыть переместить английский ввод на первую позицию, иначе будет по умолчанию вводить в консоли русские буквы.
Иллюстрация
Также очень важно не забыть включить сеть!!! Потому что, попытка включить потом на уже установленной машине, может привести к вывиху мозга.
Не забудьте сразу записать ip, который получила виртуальная машина. Впрочем, если забудете — потом можно посмотреть.
Иллюстрация
Потом нужно установить пароль root, даже самый простой, иначе линукс сгенерирует пароль сам и Вам не скажет. Если ругается на простой пароль – просто нажмите кнопку «Готово» дважды.
Потом минут 10 устанавливается Центос. Жмем кнопку «Перезагрузка» и видим черное окно с загружающимся линуксом. Далее вводим логин root и ваш пароль. Ввода пароля видно не будет, но нужно ввести его вслепую и нажать энтер. Все, наша виртуальная машина готова!
Теперь нужно посмотреть, какой айпи она получила в сети. Набираем в консоли ipconfig и видим фигу! В минимальном центе не установлен net-tools. Устанавливаем его.
  1. yum -y install net-tools
После установки можно посмотреть айпи. Набираем
  1. Ifconfig
Если лень ставить неттулз – можно набрать в консоли просто
  1. Ip addr
Видим кучу всяких цифирок, одна из которых будет айпишником вашей виртуальной машины.
В этот момент я настоятельно советую снять образ виртуальной машины в этом состоянии, чтобы потом не устанавливать всё заново, если что-то пойдет не так.

2. Снять образ виртуальной машины:

Выключаем виртуальную машину и в меню «Файл» VB жмем «Экспорт конфигураций», выбираем нашу созданную виртуальную машину (далее буду называть её BM), выбираем папку, куда сохранить, называем как-нибудь файл конфига (например Cent0), соглашаемся со всем, что предложит VB и сохраняем. Сохраняется пару минут. Теперь, в случае неудач при дальнейших экспериментах, мы всегда можем удалить загубленную экспериментами ВМ и восстановить заново в первозданном состоянии. Для этого нужно удалить существующую ВМ, нажать «Импорт конфигураций», выбрать наш сохраненный файл и мы получим нашу ВМ в первозданном виде за несколько секунд.

3. Настраиваем подключение в Putty.

С Центосом в самом окне VB работать очень неудобно, он не поддерживает вставки и копирования с родительской машины, поэтому для работы в консоли будет удобнее установить консольный клиент Putty. Скачиваем его здесь: putty.org.ru/download.html
Советую скачивать именно ту версию, ссылка на которую в окне с дискетой. Она хоть и не самая новая, но зато русифицирована и имеет некоторые дополнительные фичи в виде сохранения паролей.
Потом можно сохранить логин-пароль и не нужно будет его вводить каждый раз.
После этого нужно ткнуться опять в верхнюю строчку меню (Сеанс), назвать как-нибудь ваше подключение, ввести ip вашей BM и нажать «Сохранить».
Иллюстрация
Иллюстрация
Жмем на название нашего подключения и открывается окно Putty. Если все введено правильно появится вывод командной строки [root@localhost ~]#
Дальше нужно установить Midnight Commander
  1. yum -y install mc
И nano
  1. yum -y install nano
Теперь можно обновить ВМ
  1. yum -y update
Дожидаемся окончания обновления и проверяем работу миднайткоммандера
  1. mc
Должно появиться синее окошко похожее на нортонкоммандер.
Иллюстрация
В нем работает мышь, можно копировать, переносить, редактировать, запаковывать и распаковывать файлы вашей ВМ. Инструкция по пользованию mc здесь: midnight-commander.org/wiki/ru/doc
Если все нормально работает – экспортируем эту конфигурацию на всякий случай под именем например Cent1(пункт 2).

4. Установка WEB-панели.

Теперь у нас есть подготовленная к работе ВМ и мы можем установить на нее какую-нибудь веб-панель, для управления сайтами.
Из необычайного разнообразия панелей наиболее удобны ISPmanager (платная панель), Vestacp (бесплатная) и Brainycp (тоже бесплатная). Хоть ISP и платная, но её тоже можно установить на тестовую ВМ и две недели тестового периода над ней экспериментировать.
Я экспериментировал со всеми панелями, какие только знаю, поэтому советую Весту. Все быстро, просто, стабильно, расширяемо и имеет хороший форум поддержки на русском в том числе.
Итак, устанавливаем Весту. Идем сюда: vestacp.com/install/, мотаем чуть ниже в ADVANCED INSTALL SETTINGS, выбираем то, что нужно для тестового сервера (зачем на тестовом всякие спамассасины и прочие излишества), вводим желаемое название тестового домена, например cent.test, свой емейл (будут реально приходить письма с Весты) и пароль.
Потом копируем пункты 2 и 3 и вcтавляем правой кнопкой мыши в окно консоли Putty с подключенной вашей ВМ. На все запросы жмем y и энтер.
Минут 15 оно будет печать в окошке всякую информацию, можете даже попробовать её почитать.
В процессе кроме Весты установятся Apace, Nginx, MariaDB, phpmyadmin и прочие нужные вещи.
Потом выдаст что-то типа этого
=======================================================

_| _| _|_|_|_| _|_|_| _|_|_|_|_| _|_|
_| _| _| _| _| _| _|
_| _| _|_|_| _|_| _| _|_|_|_|
_| _| _| _| _| _| _|
_| _|_|_|_| _|_|_| _| _| _|


Congratulations, you have just successfully installed Vesta Control Panel
your_ip:8083
username: admin
password: you_password

We hope that you enjoy your installation of Vesta. Please feel free to contact us anytime if you have any questions.
Thank you.
Все, Веста установлена. Проверяем, все ли работает. Переходим по адресу your_ip:8083 и видим окно авторизации. Вводим логин-пароль и видим панель.
Заходим просто по айпи your_ip и видим приветствие большими серыми буквами.
Если все нормально работает, можно сохранить это состояние. Выключить ВМ, экспорт конфигураций и сохраняем в файл например Vesta0. Это будет чистая и незамутненная экспериментами Веста.

5. Установка сайта на вашу ВМ.

В Весте от имени админа лучше сайтов не делать. Потом проблем не оберетесь. Сразу создаем нового пользователя. User – Жмем зеленый кружок – Add user. Создаем какого-нибудь юзера, например с именем Cent. Вводим ему пароль, емейл и указываем имя-фамилию от балды. Жмем Add – юзер создан.
Находим кнопку Edit, и выcтавляем SSH Access в положение bash. Потом это пригодится!
ADDING USER→ User cent has been created successfully. / login as cent
Логинимся под нового юзера и создаем наш сайт.
Идем Web – жмем зеленую кнопку — Add web domain. Казалось бы будет логично создать сайт, который мы заявляли при установке Весты, cent.test, но он уже есть у админа, второй создать не даст. Поэтому либо перелогиниваемся обратно под админа (в правом верхнем углу admin->cent logout) и удаляем админский сайт cent.test, либо делаем сайт с другим именем, на тестовом сервере это все равно. Потом жмем кнопку DB вверху, зеленый плюс и создаем базу данных. Название, логин, пароль и т.д.
Потом коннектимся к нашей ВМ по ftp любой удобной Вам программой. Filezilla, Totalcomander, WinSCP. Вот WinSCP настоятельно рекомендую установить: winscp.net/eng/download.php
С его помощью можно не только управлять файлами, но и править их в любом удобном редакторе прямо на сервере.
Итак, подключились по ftp, идем в папку /home/cent/web/cent.test/public_html, удаляем или переименовываем лежащий там файл index.html и закачиваем туда архив с нашим сайтом, или установочный архив InstantCMS. Загруженный архив можно было бы распаковать из WinSCP, но это будет настолько долго, что проще распаковать архив на компе и загружать уже распакованным. Поэтому это не наш метод. Подключаемся по SSH при помощи Putty, перелогиниваемся под юзера cent. Это важно! Иначе владельцем файлов будет root.
  1. su cent
и запускаем миднайт коммандер:
  1. mc
Там заходим в папку web/cent.test/public_html и видим наш архив. Теперь можно его распаковать.
Тыкаем в него правой кнопкой, вверху выбираем Команда – Меню пользователя – Do something on current file. В открывшемся поле ввода набираем unzip и жмем энтер. Пока убираем палец с энтера – архив уже распакован. Можно приступать к установке сайта. Заходим по айпи адресу нашей ВМ и видим меню установки InstantCMS. Что делать дальше, думаю все знают.
Если нужно несколько сайтов — просто создаем под вашим пользователем сколько нужно сайтов с разными названиями, потом идем на компьютере в папку c:\Windows\System32\drivers\etc\ и редактируем файл hosts
В конец файла написать
192.168.1.107 cent1.tes
192.168.1.107 cent2.tes
192.168.1.107 cent3.tes
И так далее. Соответственно имена сайтов и айпи вставьте свои. Тогда ваши сайты будут открываться по доменному имени.
Теперь можно оттюннинговать нашу панель.

6. Доработка панели Веста.

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

6.1 Повышаем версию MariaDB с 5.5 до 10.2:

Создаем новый файл репозитория мариидб:
  1. nano /etc/yum.repos.d/mariadb.repo
Вставляем туда это:
  1. # MariaDB 10.2 CentOS repository list - created 2018-01-18 19:33 UTC
  2. # http://downloads.mariadb.org/mariadb/repositories/
  3. [mariadb]
  4. name = MariaDB
  5. baseurl = http://yum.mariadb.org/10.2/centos7-amd64
  6. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  7. gpgcheck=1
и жмем CTRL + X потом Y и энтер.
Останавливаем Марию
  1. systemctl stop mariadb
и обновляем пакеты
  1. yum -y update
Должна скачаться и установиться новая версия Марии. Запускаем её снова
  1. systemctl start mariadb
Теперь заходим в phpmyadmin your_ip/phpmyadmin и видим новую версию Марии.
Иллюстрация

6.2 Устанавливаем новые версии php.

Самый простой вариант – идем сюда github.com/Skamasle/sk-php-selector/blob/master/sk-php-selector.sh, копируем там всю эту простыню, вставляем правой кнопкой в окно SSH и жмем энтер. Далее все поставится само. Создателю данного переключателя php Skamasle – отдельное спасибо! Рестартуем Апач
  1. systemctl restart httpd
Теперь можно переключать версии php в настройках web-домена:
Иллюстрация

6.3 Замена стандартного шаблона Весты:

И наконец для самых тонких ценителей извращений – замена стандартного шаблона Весты на Admin_LTE, доработанный специально под Весту товарищем louislam.
yadi.sk/d/vI6J7HSr3RafaN
Скачиваем архив, распаковываем и при помощи WinSCP копируем содержимое архива в папку /usr/local/vesta/web с заменой файлов.
Наслаждаемся модным интерфейсом Admin_LTE.
Иллюстрация

7. Установка и тестирование BrainyCP

Установить Брейни на ВМ с уже установленной Вестой не получится, поэтому останавливаем ВМ, удаляем её полностью со всеми файлими и импортируем конфигурацию с чистым обновленным Центосом, сохраненную нами ранее как Cent1. Теперь на нее можно установить Брейни.
BrainyCP новая бесплатная web-панель со множеством настроек. Удобства по сравнению с Вестой — имеет встроенный файлменеджер elFinder, можно прямо из панели менять и устанавливать дополнительные версии php и mysql. Также имеется уже установленный ioncube loader и memcached.
Недостатки по сравнению с Вестой — легкая тормознутость (обдумывает каждое нажатие кнопки) и нестабильность. Никогда не знаешь, что откажется работать и по какой причине. У меня например, отказался работать ftp сервер. Но его удалось переустановить прямо из панели.
Заходим на официальный сайт Брейни в даунлоадс brainycp.com/download, мотаем чуть вниз в расширенную установку, выбираем нужные настройки и жмем "Сгенерировать команду установки".
Иллюстрация
Текст из серого окошка выделяем, копируем и правой кнопкой вставляем в консоль Putty.
Устанавливается минут 40. Брейни система навороченная.
Иллюстрация
После установки переходим в браузере по адресу ваш_ip:8002 и видим панель авторизации.
Иллюстрация
Там вводим логин root и ваш пароль рут, который Вы задали при установке Центоса.
В Брейни тоже никаких сайтов от админа заводить не нужно (админская учетка не для этого), а нужно создать нового пользователя, войти под ним и создать новый сайт.
+2
vikont vikont 6 лет назад #
Отлично поработали! Несомненно +
Главное разжевано до элементарных частиц... только кнопки нажимай... v
И все же, для тех, кто захочет попробовать панель Brainy, тогда в пункте 4 Установка Веб панели вам СЮДА
После загрузки страницы ищем слово Установка: и по очереди копируем каждую строчку команду и вставляем в командную строку на своем сервере (там куда вы зашли через Putty.и авторизовались)
Вставка работает как и в Винде по CTR+INSERT или по клику по правой клавише мышки, далее ENTER
В конце установки покажет как входить в панель..
Вход в панель http://ваш_IP:8002
Логин root
Пароль РУТОВЫЙ тот же что и при авторизации на сервере.
Далее по описанию.
В Управление-Хостинг аккаунт создаете пользователя....
+3
Ris Ris 6 лет назад #
В принципе, я могу завтра дополнить мануал инструкцией по установке Брейни. Тоже с картинками.
0
vikont vikont 6 лет назад #
Давай! Нормально будет. Пусть выбирают.
0
ifork ifork 6 лет назад #
Очень годный пост!
0
Странник Странник 6 лет назад #
Браво! Отличная работа!
0
Александр Александр 6 лет назад #
Полезно, однозначно +

А по резервному копированию VPS ки не заморачивались?
+1
Ris Ris 6 лет назад #
Конечно, есть опыт архивирования файлов и баз данных сайтов прямо на сервере, переноса их на другой хостинг прямо по ftp и разворачиванию архивов на новом хостинге. Причем неоднократно подтвержденный практикой.
Эти же архивы можно сохранять и на компьютере или хранилищах в сети.
Но это уже тема для отдельной статьи.
0
Александр Александр 6 лет назад #
а опыт сохранения целиком, т е настроил сервер, сделал его снимок, и уже потом бд и файлы сайтов бэкапишь, в случае чп разворачиваешь снимок сервера из образа на этом или другом впс или сервере и накатываешь последние бд и файлы сайта, так делали?
0
Ris Ris 6 лет назад #
Своими силами на удаленных серверах так не делал, но некоторые хостеры предоставляют возможность делать снапшоты. То есть снимок виртуального сервера. Это надо спрашивать у техподдержки хостера. Они же в случае чего помогут развернуть сохраненный образ обратно.
0
vikont vikont 6 лет назад #
Не стоит так делать уже потому, что само железо серверов может быть разное, что учитывается при инсталляции Линукса или подготовлено самим хостером в образах.
Чем примечательна в этом смысле панель Брайни! Она позволяет бэкапить каждый пользовательский аккаунт целиком со всеми настройками и потом все восстанавливать! Есть механизм прямой миграции сервера на сервер с предустановленной панелью Брайни.
0
Ris Ris 6 лет назад #
Я имел в виду снапшот для восстановления в случае проблем на тот же сервер.
А бэкап профиля пользователя и в весте есть.
0
Александр Александр 6 лет назад #
Не думаю что там всё на столько запущено с железом, на вскидку пишут что могут быть проблемы с сетевым интерфейсом и драйверами к нему, а так возможно. Думал просто имеется опыт.
На вин проблем никаких с переносом, по крайне мере в не серверных системах, думаю и в серверных никаких , только надо учитывать лицензию...
0
Ris Ris 6 лет назад #
Мне не очень понятно, зачем хранить огромный бэкап сервера, если можно сделать архивы файлов сайта и архивы базы.
0
Александр Александр 6 лет назад #
иногда сервер настраивается определенным образом и достаточно не тривиально, чтобы этого не повторять при переезде.
0
Ris Ris 6 лет назад #
Так перенастройка айпи и прочего на образе с другого хостера - задача еще более нетривиальная.
Уж легче заново настроить, чем поменять сетевые настройки сохраненного образа.
Ради эксперимента попробуйте по инструкции выше установить виртуальный сервер с Вестой, а потом поменять айпи этого сервера. Апач с нгинксом тупо не стартуют.
0
Александр Александр 6 лет назад #
наверно Вы правы, но как будет время изучу вопрос, если руками там не вариант, то уверен должны быть решения, возможно коробочные и дорогие, но должны.
0
Ris Ris 6 лет назад #
Решения есть на уровне панели управления.
То есть бэкап профиля пользователя и восстановление его на новом хостинге в такую же панель управления.
Это есть и в Весте и в Брейни и в ISPmanager.
0
IamB IamB 6 лет назад #
Браво! Теперь у меня точно получится.
0
Денис Васильевич Денис Васильевич 6 лет назад #
А если нужно его сделать видимым из вне, т.е. в интернет?
Если я что-то упустили, извините ))
0
Денис Васильевич Денис Васильевич 6 лет назад #
Спасибо забыл сказать )
0
Ris Ris 6 лет назад #
Я не пробовал. Дело в том, что у меня оптика прямо в квартиру и чтобы сделать видимой даже опенсервер из инета мне придется настраивать бридж на роутере. А мой роутер принадлежит компании МГТС и у меня на нем даже админских прав нет.
Вы наверное хотите поднять сайт прямо на локальной машине? Я когда-то тоже задавался этим вопросом, но пришел к выводу, что это экономически нецелесообразно. Статический айпи стоит дороже нормального VDS.
0
Melon Melon 6 лет назад #
Я целый год держал сайты у себя дома. Статический ip мне обходился в 100 рублей в месяц, но вот когда интернет исчезал или отключалось электричество, то я жутко нервничал. Так что тут вопрос целых нервов более актуален smile
Но и плюсы были, скорость доступа, обновление системы прямо с клавиатуры, на счет места не переживал.
0
Ris Ris 6 лет назад #
И еще даже ноут жутко шумит в ночной тишине.
0
eoleg eoleg 6 лет назад #
Для этого нужен белый IP который можно получить у провайдера или от сервисов в инете через vpn
Настраиваете на роутере DMZ или просто пробрасываете порты.
0
lesterkey lesterkey 6 лет назад #
эх.. как мне не доставало похожей статейки в закладках! жирнейший плюс dance
0
webtotma webtotma 6 лет назад #
Спасибо. Полезно. Все разжевано )))

Може еще гайд сделаете по настройке виртуальных хостов, чтоб с несколькими сайтами работать ...
0
Ris Ris 6 лет назад #
Тут будет проще Openpanel.
Сделать гайд по опенпанели? Он весь в три строки уместится.
0
Ris Ris 6 лет назад #
0
Roman Roman 6 лет назад #
Отличная инструкция. Есть только один вопрос: Сколько примерно весит сохранённый образ виртуальной машины и сколько она занимает в рабочем состоянии места на HDD?
0
Ris Ris 6 лет назад #
0
DeusSpa DeusSpa 5 лет назад #
Привет всем,
подскажите знающие люди
После переноса сайта в панель на brainycp не сразу заметил, что страница 404 не открывается, а редиректит на один из разделов сайта.
Не могу понять из за чего, ни чего не менялось глобального.
0
noname noname 5 лет назад #
Спасибо за инструкцию ! Ifconfig не срабатывал, использовал "ip a" . При восстановлении (импорт) БД в vesta cp была ошибка #1044 - Для пользователя 'xxxx' доступ к базе данных 'yyy' закрыт. Нужно в меню USER создать пользователя как в названии БД (xxxx_ ), Доступ по SSH - bash .
0
noname noname 5 лет назад #
Если не будет заходить по https://your_ip:8083 лучше использовать браузер Firefox (мазила), нажать "подробнее" , согласится перейти на страницу.
dmitriybarinov dmitriybarinov 4 года назад #
Комментарий удален
+1
Ris Ris 4 года назад #
Исправил.
0
DeDja DeDja 4 года назад #
Спасибо.
0
Денис Васильевич Денис Васильевич 4 года назад #
Ris, а на подсистеме Linux в Windows 10 не пробывали? Ведь и ресурсов меньше кушать будет.
0
Ris Ris 4 года назад #
Что означает "на подсистеме"?
Весь смысл этих извращений - запуск и тестирование сайта на "настоящем линукс-сервере".
Просто для разработки гораздо удобнее Опенсервер:
/blogs/zapiski-dinozavra/ospanel-i-instantcms.html
0
Денис Васильевич Денис Васильевич 4 года назад #
Как он может быть настоящим если вы его запускаете на виртуальной машине? ))
А чем не настоящий linux встроенный в вин10? )) Сейчас список вариантов уже достаточный от Ubuntu то centos ) Тем более что вы для упомянутых задач даже не используете графическую среду )
0
Ris Ris 4 года назад #
Как он может быть настоящим если вы его запускаете на виртуальной машине? ))
У него имеется свой жесткий диск (хоть и виртуальный), на нем установлена операционная система linux, у этого сервера имеется свой ip, отличный от ip компа. Этот сервер, по большому счету, ничем не отличается от виртуального сервера на VPS.
А чем не настоящий linux встроенный в вин10?
А на него можно установить VestsCP ?

Еще от автора

Сверхлёгкий webserver на Alpine linux
Не знаю, как нормальных людей, но меня всё время мучает вопрос, зачем для размещения небольшого сайта на виртуальном сервере я вынужден устанавливать
Накрутка рейтинга и кармы пользователям, контенту и фото.
По многочисленным просьбам изготовил новый инструмент для изменения администратором сайта рейтинга и кармы пользователей.
Авторизация по любым полям из профиля и по API
Представляю уважаемому сообществу небольшое дополнение для доработки авторизации вашего сайта, а также для интеграции двух сайтов на Instantcms друг с
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.