AWS. Как я поднимал сервер Ubuntu

aws_logo_105x39
Сколько себя помню, я ставил на AWS EC2 готовые сборки AMI. В последнее время это были сборки от Bitnami. Но Bitnami стала меня напрягать подбором компонентов. А хотелось в общем-то простого линукса, с простым апачем/mysql/php. Без вот этих вот php-fpm и прочего.

Но вариант установки Ubuntu, который есть в самом начале выбора AMI, какой-то совсем голый. Из коробки не работает. Ни апача, ни фига. Наверное это для тех, кто занимается биткоинами. Вот и понадобилась шпаргалка, чтобы в следующий раз делать это не целый день, а полчаса.

В общем есть у нас установленный EC2 инстанс с голым Ubuntu на борту

Устанавливаем пакеты
=======================================

Свежеустановленный Ubuntu настолько суров, что в нём  даже невозможно сразу установливать  пакеты. Сначала надо запустить

$ sudo apt-get update

Потом уже ставить всё что душе угодно

$ sudo apt-get install mc
$ sudo apt-get install apache2
$ sudo apt-get install php5
$ sudo apt-get install mysql-server
$ sudo apt-get install mysql-client

Тут в целом всё просто.

Подключаем ещё один диск
================================

Я стараюсь подключать дополнительный диск.  На нём я размещаю БД и файлы собственно сайта. Это нужно чтобы однажды слишком большой файл, залитый на сайт не порушил всю систему, например.

Итак в консоли AWS вы создали носитель и подключили его к инстансу. Сначала надо узнать, как он называется. Там даже отображается путь к девайсу типа /dev/sdf. Но имейте в виду следующее:

Note: Newer Linux kernels may rename your devices to /dev/xvdf through /dev/xvdp internally, even when the device name entered here (and shown in the details) is /dev/sdf through /dev/sdp.

Так что скорее всего ваш диск будет примеерно таким /dev/xvdf

Дальше надо создать партицию с помощью утилиты fdisk

$ sudo fdisk /dev/xvdf

Допустим получилась партиция /dev/xvdf1. Её надо отформатировать в ext3

$ sudo mkfs.ext3 /dev/xvdf1

Далее надо узнать UUID этой новой партиции с помощью  команды

$ sudo blkid

Когда узнаете, просто добавьте в /etc/fstab строчку типа

UUID="a147ee58-efde-4c61-b79d-ccc3f6bf045a" /mnt/xvdf1 ext3 defaults 0 2

Ну понятно что путь надо создать свой, и использовать свой UUID. После этого презагрузится и убедиться, что всё работает как надо

Переносим на новый диск всё барахло
========================================

Создаём на новом диске папку для html, переносим туда все файлы сайта и создаём линк на старом месте.

$ sudo ln -s /mnt/xvdf1/html /var/www/html

С MySQL всё сложнее. Надо сделать тоже самое. Только сначала остановить сервер. После переноса данных обязательно  поменяйте доступы.

$ sudo service mysql stop
$ sudo cp -R /var/lib/mysql /mnt/xvdf1
$ sudo ln -s /mnt/xvdf1/mysql/ /var/lib/mysql
$ sudo chown -R mysql:mysql /mnt/xvdf1/mysql

Потом обязательно загляните в /etc/mysql/my.conf и измените пути.

Запускаем сервер и смотрим логи. Скорее всего у сервера таки нет доступа к файлам, а на самом деле доступ есть — значит надо пилить apparmor.

Открывает /etc/apparmor.d/usr.sbin.mysqld и исправляем все старые пути, а потом перезапускаем apparmor.

sudo service apparmor restart
sudo service mysql restart

PHPMYADMIN
=============
Я обычно просто скачивал архив с phpmyadmin и распаковывал где надо, а теперь это целый пакет с особым ритуалом установки:

$ sudo apt-get install phpmyadmin

Потом открываем /etc/apache2/apache2.conf и в конец открывшегося файла добавляем строчку:

Include /etc/phpmyadmin/apache.conf

Не забыть перезапустить апач

$ sudo service apache2 restart

SSL
======
Внезапно HTTPS не работает из коробки. Почему-то. Для начала необходимо активировать mod_ssl:

$ sudo a2enmod ssl

А затем включить настройки HTTPS сайта по умолчанию:

$ sudo a2ensite default-ssl

Ну а дальше всё как обычно