Главная » Софт » Запуск LAMP и сотен других веб-приложений в несколько кликов

Запуск LAMP и сотен других веб-приложений в несколько кликов

В версии 1. image В прошлой публикации я рассказал как SSHeller помогает быстро и легко развернуть OpenVPN сервер. 0 был добавлен еще один плагин — Docker.
Хочу сразу предупредить, что если у вас руки заточены под консоль, а управление Docker через командную строку кажется удобным и интуитивно понятным, — не нужно читать дальше, не нужно писать ничего в комментариях, я и так знаю, что SSHeller вам не нужен. 1.

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

Но, в отличии от OpenVPN, для Docker я бы порекомендовал Debian 9 либо Ubuntu 18. Нужен сервер с практически любым современным Linux дистрибутивом. С Fedora и Centos дела обстоят чуть хуже, так как требуется ставить больше пакетов, дополнительно настраивать автозапуск, немного иначе построена работа с хранилищем. 04.

И нужен доступ по SSH. Самое главное — это должна быть либо физическая либо виртуальная машина, но никак не контейнер (LXC, OpenVZ не подойдут). Оба этих сервиса предлагают простые машины за $5/месяц и бонусы при регистрации по реферальной ссылке. В прошлой публикации есть подробное описание, как зарегистрироваться и запустить сервер в DigitalOcean, а в конце — чуть менее подробная инструкция для Linode. Для начала этого будет вполне достаточно.

Скачать его можно из релизов на GitHub, есть версии для macOS, Windows и Linux. Как только у нас есть IP, логин и пароль к серверу, можно устанавливать SSHeller. После запуска добавляем наш сервер, подключаемся к нему и переходим к плагину Docker.

Если Docker на сервере еще не установлен, сделать это можно нажатием кнопки Install.
Менее, чем через минуту, завершится установка, откроется отчет, который можно непрочитать и закрыть, а в главном окне будет список контейнеров, томов и форма запуска нового контейнера.

Запуск контейнера

В нем отображается: В самом низу рабочей области располагается блок запуска нового контейнера.

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

Их перечень задается в файле https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json и на момент публикации это: Выбрать можно любой официальный Docker образ и еще несколько дополнительных.

  • jwilder/nginx-proxy — автоматически настраиваемый Nginx для доступа к контейнерам через доменное имя, а не порт
  • panubo/vsftpd — FTP сервер
  • coderaiser/cloudcmd — WEB-инетрфейс для доступа к файлам
  • webdevops/php-apache-dev — сборка Apache + PHP + модули для разработки (выводит ошибки)
  • webdevops/php-apache — сборка Apache + PHP + модули для "прода" (не выводит ошибки)
  • webdevops/php-nginx-dev — сборка Nginx + PHP + модули для разработки (выводит ошибки)
  • webdevops/php-nginx — сборка Nginx + PHP + модули для "прода" (не выводит ошибки)

Большинство контейнеров будут игнорировать содержимое поля Password, кроме перечисленных в docker-profiles.json (секция parameters):

  • panubo/vsftpd — пароль для подключения по FTP под пользователем admin
  • coderaiser/cloudcmd — пароль для входа под пользователем admin
  • mysql/mariadb/postgres/influxdb — пароль для подключения к базе db под пользователем admin
  • rabbitmq/couchdb/orientdb — пароль для подключения под пользователем admin

Важные особенности:

  • Тэги загружаются автоматически после выбора образа. Доступен поиск
  • Контейнер будет доступен на том порту, который указал его автор. Если порт занят — будет выбран первый свободный
  • Контейнер будет доступен на домене <имя контейнера>.<домен сервера> если есть соответствующие записи в DNS
  • Для контейнера будут созданы тома, если их указал автор образа, либо они заданы в docker-profiles.json (секция volumes)

Полезные советы:

  • jwilder/nginx-proxy нужно запускать первым, чтобы он занял 80 порт
  • panubo/vsftpd нужно запускать последним, так как при запуске он меняет права доступа к папке, чтобы иметь к ней полный доступ
  • почти всегда лучше использовать образ с тэгом alpine или latest-alpine — они работают так же как и обычные, но гораздо быстрее загружаются за счет меньшего веса
  • если вам нужна MySQL — используйте лучше MariaDB, если, конечно, вы точно не уверены в том, что MariaDB вам не подходит
  • если вы запускаете что-то с PHP, то fpm вам, скорее всего, не нужен, а нужен apache

Она расскажет много интересного о том, как все на самом деле устроено. Дополнительная информация
После нажатия на кнопку RUN, как только контейнер будет запущен, появится окно с отчетом, в котором будет указана выполненная команда docker run.

Доступ через доменное имя

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

  1. Первым запустить jwilder/nginx-proxy
  2. Иметь Wildcard DNS запись

если, например, у вас есть домен example.com, то нужно добавить в него запись * типа A и указать IP сервера. Т.е. В таком случае, запущенный контейнер worpdress будет доступен по адресу http://wordpress.example.com

Если, например, у вашего сервера IP 172. А если домена нет — не проблема, можно воспользоваться сервисом nip.io — не нужно ни регистрироваться, ни добавлять записи. 129. 104. 172. 183, и на нем запущены jwilder/nginx-proxy и nextcloud, то последний будет доступен по адресу http://nextcloud. 129. 104. 183.nip.io

Запуск двух контейнеров с одним томом

Или второй нужен чтобы посмотреть/скачать содержимое первого. Часто бывает, например, что один контейнер файлы публикует (nginx), а второй — загружает (panubo/vsftpd).

Например, Jenkins после запуска спрашивает пароль, записанный в файле.

  1. Запускаем Jenkins
  2. Выбираем его том jenkins_var_jenkins_home
  3. Указываем пароль для доступа
  4. Запускаем coderaiser/cloudcmd
  5. Открываем http://coderaiser-cloudcmd.<домен>, вводим логин admin и пароль из п. 3
  6. Смотрим пароль от Jenkins

Взаимодействие между контейнерами

Например wordpress при установке попросит указать параметры подключения к базе данных: адрес сервера (host) и порт. Также бывает нужно из одного контейнера подключаться к другому.

localhost для взаимодействия между контейнерами работать не будет.

Для простоты, добавлена возможность вместо IP адреса сервера указывать просто слово host. В общем случае, нужно указывать внешний IP адрес сервера и порт, отображенный
перед стрелкой (->) в списке контейнеров.

Кроме MySQL, может пригодиться PostgreSQL, MongoDB, Redis, memcached, Tomcat, InfluxDB, CouchDB и т.п..

Файлообменник

  1. Запускаем nginx:alpine
  2. Вводим пароль администратора для web-интерфейса
  3. Выбираем том nginx_usr_share_nginx_html
  4. Запускаем coderaiser/cloudcmd:latest-alpine

Нужно только указать полный путь к файлу. Теперь можно зайти на http://<адрес сервера>:8000, чтобы загружать файлы с авторизацией, а через http://<адрес сервера> будут доступны прямые ссылки.

WordPress

  1. Придумываем и вводим пароль для базы данных
  2. Запускам mariadb
  3. Запускаем wordpress:apache
  4. Переходим по адресу http://<адрес сервера>, начинаем установку и указываем параметры подключения к СУБД:
    • Имя базы данных: db
    • Имя пользователя: admin
    • Пароль — тот, что ввели в п.1
    • Сервер базы данных: host
    • Префикс таблиц — любой

LAMP

  1. Придумываем и вводим пароль для базы данных
  2. Запускам mariadb
  3. Запускаем webdevops/php-apache-dev:alpine
  4. Выбираем том webdevops-php-apache-dev_app
  5. Придумываем и вводим пароль для FTP сервера
  6. Запускаем panubo/vsftpd

Теперь можно загрузить .php файлы на ftp://<адрес сервера> и запустить их, перейдя по адресу http://<адрес сервера>

Если не знаете как — открывайте Issue. Далеко не все контейнеры доступны в приложении, а некоторые из доступных — не работают без дополнительных настроек — редактируйте файл на GitHub и присылайте свои Pull Request'ы. Этим вы поможете развитию проекта.

Другие способы поддержать проект, а так же множество полезной информации — в файле README.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Как Яндекс применил компьютерное зрение для повышения качества видеотрансляций. Технология DeepHD

Когда люди ищут в интернете картинку или видео, они часто прибавляют к запросу фразу «в хорошем качестве». Под качеством обычно имеется в виду разрешение — пользователи хотят, чтобы изображение было большим и при этом хорошо выглядело на экране современного компьютера, ...

Security Week 36: Telnet должен быть закрыт

Telnet — это очень старый протокол. Википедия сообщает, что он был разработан в 1969 году, много лет активно использовался для удаленного доступа к компьютерам и серверам, причем как под управлением Unix/Linux, так и для систем под Windows (telnet можно было ...