Сервер LAMP, ISPConfig, Docker, Portainer на Ubuntu 18.04

На свеже установленной Ubuntu 18.04

$ sudo apt update && apt upgrade

Установка LAMP

Установим MySQL Server
$ sudo apt install mysql-server
Настроим так чтобы было использовать пароль для пользователя root. Если вы хотите настроить root пользователя на использование пароля, вам необходимо изменить метод аутентификации с auth_socket на mysql_native_password. Для того, чтобы это сделать, войдите в оболочку MySQL в терминале:
$ sudo mysql
Далее просмотрите метод аутентификации для каждого из ваших пользователей MySQL с помощью следующей команды:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
В этом примере ваш пользователь root использует аутентификацию с помощью плагина auth_socket. Для изменения этой настройки на использование пароля используйте следующую команду ALTER USER. Не забудьте изменить password на ваш сильный пароль:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Далее выполните команду FLUSH PRIVILEGES, которая применит внесённые изменения:
mysql> FLUSH PRIVILEGES;
Проверьте методы авторизации для пользователей ещё раз для того, чтобы убедиться, что пользователь root более не использует плагин auth_socket для авторизации:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Теперь root пользователь MySQL аутентифицируется с использованием пароля. После того, как мы в этом убедились, можно выйти из оболочки MySQL:
mysql> exit
Теперь ваша система управления базами данных установлена и мы можем двигаться дальше. Установим Apache 2.4, PHP 7.2, FCGI, suExec, and Pear
$ sudo apt -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt  imagemagick libruby libapache2-mod-python php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap
В процессе установки будет задан вопрос Web server to reconfigure automatically: выберите apache2 Запустите следующую команду для того чтобы включить модули Apache suexec, rewrite, ssl, actions,
$ sudo a2enmod suexec rewrite ssl actions include cgi
Restart Apache afterwards:
$ sudo service apache2 restart

Установка ISPConfig 3.1

Для установки выполни следующие команды в терминале:
$ cd /tmp
$ wget -O ispconfig.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
$ tar xfz ispconfig.tar.gz
$ cd ispconfig3*/install/
$ sudo php -q install.php
На все следющие вопросы установки можно нажать ентер кроме
MySQL root password []:

здесь вводим пароль который мы задали. Так же задаем пароль администратора.

Доступ к ISPConfig: http(s)://localhost:8080/

Установка Docker и контейнера Wordpress

Используй команды ниже для скачивания и установки Docker.
$sudo apt install curl
$ sudo curl -fsSL https://get.docker.com/ | sh
Добавим пользователя в группу
$ sudo usermod -aG docker USERNAME
Разлогиниться в систему и зайти снова чтобы права вступили в силу.
$ sudo service docker restart
Docker установлен и можно приступить к установке WordPress.
Создадим директорию проекта и перейдем в нее.
$ mkdir ~/my_wordpress && cd my_wordpress/
Создадим файл docker-compose.yml в папке проекта
$ touch docker-compose.yml
в файле вводим данные проекта:
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
Установим docker-compose
$ sudo apt install docker-compose
Запустим сайт с дериктории проекта
$ docker-compose up -d

Доступ к сайту: http//localhost:8000

Установка Рortainer

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Доступ к portainer: http//localhost:9000