Pull to refresh

Настройка Play Framework 2 на сервере хостинга

После завершения разработки сайта появилась задача забросить его на хостинг. Как оказалось, не так всё просто)
Но обо всём по порядку!

Что мы имеем: сайт, написанный с помощью Play Framework, хостинг с установленной Ubuntu 12.04

Установка необходимого софта


Для работы мне понадобится следующее:
  • Java 1.7
  • Play Framework 2.1.5
  • MySQL


Установка Java


Для начала скачаем последнюю jdk
wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-i586.tar.gz

и выполним следующие команды для установки и добавления в PATH:

tar -xvf jdk-7u55-linux-i586.tar.gz
mkdir -p /usr/lib/jvm
mv ./jdk1.7.0_55/ /usr/lib/jvm/jdk1.7.0_55/
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_55/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_55/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_55/bin/javaws" 1
sudo chmod a+x /usr/bin/java
sudo chmod a+x /usr/bin/javac
sudo chmod a+x /usr/bin/javaws
sudo chown -R root:root /usr/lib/jvm/jdk1.7.0

Далее проверяем, успешно ли всё:
java -version
Если отображается информация о той версии Java, которая устанавливала, то всё хорошо.

Установка MySQL


Для установки MySQL запускаем команду
sudo apt-get install mysql-server

В процессе установки будет предложено создать пользователя и определить ему пароль, что и нужно сделать. В моем случае такого предложено не было, поэтому пришлось установить пароль для root по другому:

Останавливаем MySQL:
/etc/init.d/mysql stop

Запускаем в режиме без проверки прав доступа:
/usr/sbin/mysqld --skip-grant-tables &

Соединяемся как root без пароля:
mysql

Выбираем активную БД:
use mysql;

Обновляем пароль:
mysql> update user set Password=PASSWORD('ваш пароль') WHERE User='root';
mysql> flush privileges;


Завершаем работу mysqld:
"Ctrl+c"

Запускаем MySQL в обычном режиме.
/etc/init.d/mysql start

Теперь всё должно быть хорошо.

Установка Play Framework


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

Для начала скачает Play Framework 2.1.5
wget http://downloads.typesafe.com/play/2.1.5/play-2.1.5.zip

Разархивируем его в папку /opt (должна быть установлена утилита unzip)
unzip -d /opt play-2.1.5.zip

Добавим в PATH, чтобы пользовать командой play без пути к ней
sudo chmod +x /opt/play-2.1.5/play
sudo ln -s /opt/play-2.1.5/play /usr/local/bin/play

Запускаем команду
play
для проверки работоспособности

Разворачивание приложения


Сперва нужно скопировать приложение в папку /opt/play-2.1.5/

Переходим в папку приложения(/opt/play-2.1.5/<имя приложения>) и запускаем команду для компиляции и сборки
play clean compile stage
Это может занять некоторое время в зависимости от конфигурации сервера и размера проекта.

Play Framework использует Netty в качестве веб-сервера. Следующим действием будет создание конфига для запуска веб-сервера как сервиса ubuntu. Переходим в папку /etc/init.d/, создаем файл play-run и добавляем в него следующее:

APPLICATION_PATH=/opt/play-2.1.5/<имя приложения>/
start() {
echo -n "Starting"
sudo start-stop-daemon --start --background --pidfile ${APPLICATION_PATH}/RUNNING_PID -d ${APPLICATION_PATH} --exec target/start -- -
Dhttp.port=80
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo " - Success"
else
echo " - Failure"
fi
echo
}
stop() {
echo -n "Stopping"
sudo start-stop-daemon --stop --pidfile ${APPLICATION_PATH}/RUNNING_PID
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo " - Success"
else
echo " - Failure"
fi
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: play-server {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

сохраняем файл, наделяем его правами доступа и теперь можно запускать наше приложение
/etc/init.d/play-run start

В строке браузера пишем адрес сервера и проверяем.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.