Содержание
Подготовка к установке
Установка Java
Установка Apache Tomcat
Добавление нового пользователя Tomcat
Настройка переменных окружения
Пробный запуск Apache Tomcat
Настройка автоматического запуска Apache Tomcat в качестве демона
Установка PostgreSQL
Добавление нового пользователя tomcat в PostgreSQL
Добавление JNDI-ресурса в Apache Tomcat
Установка nginx и перенаправление запросов с 80 порта на 8080/appname
Автоматическое создание резервной копии базы данных PostgreSQL каждый день в полночь
Настройка HTTPS в Apache Tomcat
Ссылки
Подготовка к установке
У вас на компьютере должен быть установлен PuTTY (нужен для подключения по SSH к серверу) и PSCP (нужен для закачки файлов НА сервер по SSH). Вы должны уметь пользоваться им. У вас должен быть доступ по SSH к серверу. Сервер должен быт на Linux-е.
Смотрим информацию о системе
Итак. Имеем только что установленный Linux. Смотрим, что у нас есть:
1 |
uname -a |
Подробнее о команде uname -a читать здесь: Как посмотреть информацию о системе в Linux
У меня получился вывод:
Linux VM-2116-11998-01 3.13.0-53-generic #88-Ubuntu SMP Wed May 13 18:10:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Вывод будет сильно отличаться в разных дистрибутивах. Но тут видно, что у меня Ubuntu 64-х разрядная.
Установка Java
Нам нужно скачать Java. Скачиваем последнюю версию на сайте Oracle http://www.oracle.com/technetwork/java/javase/downloads/index.html
Нам нужно скачать Server JRE. Соглашаемся с лицензией и скачиваем server-jre-…-x64.tar.gz. На момент написания этой статьи последней версией бала Java 8u51. Остальную статью будут писать для этой версии. Вам нужно будет все эти вхождения заменить на ту версию, которая будет у вас.
Теперь нужно загрузить его на сервер. Для этого используем PuTTY PSCP:
1 |
pscp.exe server-jre-8u51-linux-x64.tar.gz root@<IP_сервера>:/root |
Сервер запросит пароль. Вводим его и ждём окончания отдачи файла.
Заходим на сервер по SSH. В каталоге /root лежит наш файл server-jre-8u51-linux-x64.tar.gz. Нам нужно его распаковать и поместить в /opt/jre-8u51:
1 2 |
tar xzvf server-jre-8u51-linux-x64.tar.gz mv jdk1.8.0_51 /opt/jdk1.8.0_51 |
Более подробное описание команды распаковки здесь: Как распаковать tar gz файл.
Проверяем:
1 |
/opt/jdk1.8.0_51/bin/java -version |
Установка Apache Tomcat
Скачиваем последнюю версию с сайта http://tomcat.apache.org/. Я скачал tar.gz-архив. Binary distributions/Core/tar.gz. На момент написания статьи последней версией был apache-tomcat-8.0.24. Остаток статьи будет писаться для неё. Вам нужно будет заменить все вхождения этой версии на свою версию. Закачиваем его на наш сервер с помощью PuTTY PSCP:
1 |
pscp.exe apache-tomcat-8.0.24.tar.gz root@<IP_сервера>:/root |
Сервер запросит пароль. Вводим его и ждём окончания отдачи файла.
Заходим на сервер по SSH. В каталоге /root лежит наш файл apache-tomcat-8.0.24.tar.gz. Распаковываем его и перемещаем в /opt:
1 2 |
tar xzvf apache-tomcat-8.0.24.tar.gz mv apache-tomcat-8.0.24 /opt/apache-tomcat-8.0.24 |
Теперь на сервере в каталоге /opt у нас два каталога:
1 2 |
drwxr-xr-x 9 root root 4096 июля 1 21:22 apache-tomcat-8.0.24 drwxr-xr-x 8 uucp 143 4096 июня 9 05:37 jdk1.8.0_51 |
Добавление нового пользователя tomcat
Наш сервис Apache Tomcat будет крутиться под отдельным пользователем. Создадим его.
1 |
adduser tomcat |
Зададим ему любой пароль и остальную информацию. Нам никогда не потребуется заходить в систему от имени этого пользователя. Пароль после задания можете сразу забыть.
Настройка переменных окружения
В файлах /root/.bashrc и /home/tomcat/.bashrc (пользователь tomcat был создан при выполнении предыдущего пункта) добавим следующие записи:
1 2 3 4 |
export CATALINA_HOME=/opt/apache-tomcat-8.0.24 export CATALINA_BASE=$CATALINA_HOME export JAVA_HOME=/opt/jdk1.8.0_51 export JSVC=$CATALINA_HOME/bin/jsvc |
Перезаходим в систему по SSH (выходим и снова заходим). Это нужно для того, чтобы наши изменения в конфигурационных файлах перечитались.
Пробный запуск Apache Tomcat
Переходим в каталог /opt/apache-tomcat-8.0.24/bin. Пробуем запустить:
1 |
sh startup.sh |
В консоли должно выйти что-то вроде вот этого:
1 2 3 4 5 6 |
Using CATALINA_BASE: /opt/apache-tomcat-8.0.24 Using CATALINA_HOME: /opt/apache-tomcat-8.0.24 Using CATALINA_TMPDIR: /opt/apache-tomcat-8.0.24/temp Using JRE_HOME: /opt/jdk1.8.0_51 Using CLASSPATH: /opt/apache-tomcat-8.0.24/bin/bootstrap.jar:/opt/apache-tomcat-8.0.24/bin/tomcat-juli.jar Tomcat started. |
Теперь попробуйте зайти браузером с вашего личного компьютера по адресу http://<IP_сервера>:8080. Если вы всё сделали правильно, то вы должны увидеть страницу с надписью «If you’re seeing this, you’ve successfully installed Tomcat. Congratulations!» и кучу ссылок на документацию, примеры и прочее.
Лирическое оступление. Тут весьма странно. На сколько я знаю, глагол to see статальный и в продолженных временах не употребляется. Но здесь сами англичание употребили его так. Видимо, мои знания английского не слишком полны.
Итак. Мы установили Tomcat. Останавливаем его с консоли сервера:
1 |
sh shutdown.sh |
Настройка автоматического запуска Apache Tomcat в качестве демона
Нам нужно сделать так, чтобы Apache Tomcat запускался сам при старте сервера. Причём он должен работать не от пользователя root, а от пользователя tomcat.
Для этого нам нужно собрать программу jsvc из исходников, лежащих в архиве /opt/apache-tomcat-8.0.24/bin/commons-daemon-native.tar.gz. Из каталога /opt/apache-tomcat-8.0.24/bin:
1 2 3 4 |
tar xzvf commons-daemon-native.tar.gz cd commons-daemon-1.0.15-native-src/ cd unix ./configure |
М-да. Выходит ошибка. Нет компилятора C. Ставим его:
1 |
apt-get install g++ |
Довольно большая простыня текста выходит.
Пробуем ещё раз:
1 |
./configure |
Последние строки вывода должны быть примерно такие:
1 2 |
*** All done *** Now you can issue "make" |
Собираем:
1 |
make |
М-да. Программы make тоже нет. Ставим:
1 |
apt-get install make |
Пробуем собрать ещё раз:
1 |
make |
Если всё прошло хорошо, то должен появиться файл jsvc. Это то, что нам нужно. Копируем его в /opt/apache-tomcat-8.0.24/bin/:
1 |
cp jsvc /opt/apache-tomcat-8.0.24/bin/jsvc |
Для запуска Apache Tomcat в качестве сервера нужно разместить файл /opt/apache-tomcat-8.0.24/bin/daemon.sh в каталог /etc/init.d. Нужно дать ему такое имя, чтобы было понятно, что он относится к Apache Tomcat, например, apache-tomcat-8. Обратите внимание, что файл в /etc/init.d не должен иметь расширения. В начале файла нужно добавить те же самые строки, что мы добавляли в файлы .bashrc:
Добавляем переменные окружения:
1 2 3 4 5 6 |
#!/bin/sh export CATALINA_HOME=/opt/apache-tomcat-8.0.24 export CATALINA_BASE=$CATALINA_HOME export JAVA_HOME=/opt/jdk1.8.0_51 export JSVC=$CATALINA_HOME/bin/jsvc # Licensed to the Apache... остальная часть файла. |
Копируем в /etc/init.d:
1 |
cp /opt/apache-tomcat-8.0.24/bin/daemon.sh /etc/init.d/apache-tomcat-8 |
Чтобы пользователь tomcat мог нормально работать передаём ему права на каталог /opt/apache-tomcat-8.0.24/.
Команда выполняется из каталога /opt:
1 |
chown -Rv tomcat:tomcat apache-tomcat-8.0.24/ |
Теперь мы можем запускать демона командой:
1 |
service apache-tomcat-8 start |
И останавливать командой:
1 |
service apache-tomcat-8 stop |
Запустите его сейчас и проверьте, что по адресу http://<IP_сервера>:8080 выходит страница.
Чтобы сервер автоматически стартовал при перезагрузке нужно выполнить команду:
sudo update-rc.d apache-tomcat-8 start 99 2 3 4 5 . stop 01 0 1 6 .
Эта команда создаст необходимые для автоматического запуска при старте системы символические ссылки в каталогах /etc/rc0.d, /etc/rc1.d и т. д.
Установка PostgreSQL
Без базы данных будет уныло. Установим PostgreSQL:
1 |
apt-get install postgresql |
Ок. Установили. Можно с помощью psql выполнять скрипты. Для этого нужно сначала запустить его:
1 2 3 4 5 6 7 8 9 10 11 |
root@VM-2116-11998-01:/etc/init.d# sudo -u postgres psql psql (9.3.9) Type "help" for help. postgres=# select 1,2; ?column? | ?column? ----------+---------- 1 | 2 (1 row) postgres=# |
Добавление нового пользователя tomcat в PostgreSQL
К базе данных будем подключаться не от имени всемогущего postgres, а создадим нового пользователя tomcat.
Зайдём в psql от имени postgres, чтобы создать нового пользователя:
1 |
sudo -u postgres psql |
Создаём нового пользователя:
1 |
CREATE ROLE tomcat LOGIN PASSWORD 'newuserpassword'; |
Эта команда создаст пользователя с логином tomcat и паролем newuserpassword.
Нужно создать для него базу данных:
1 2 3 |
CREATE DATABASE tomcat; ALTER DATABASE tomcat OWNER TO tomcat; |
Выйти из psql можно командой:
1 |
\quit |
После этого нужно добавить для этого пользователя строчку в файл /etc/postgresql/<номер_версии>/main/pg_hba.conf:
1 |
local all tomcat md5 |
Перезапускаем PostgreSQL.
1 |
service postgresql restart |
Всё. Теперь пользователь может логиниться в PostgreSQL.
Добавление JNDI-ресурса в Apache Tomcat
Скачиваем jdbc-драйвер PostgreSQL для Java по ссылке: https://jdbc.postgresql.org/
Закачиваем его на сервер с помощью PuTTY:
1 |
pscp.exe postgresql-9.4-1201.jdbc41.jar root@<IP_сервера>:/root |
На сервере перемещаем его из каталога /root в каталог /opt/apache-tomcat-8.0.24/lib:
1 |
mv /root/postgresql-9.4-1201.jdbc41.jar /opt/apache-tomcat-8.0.24/lib/ |
Открываем на редактирование файл /opt/apache-tomcat-8.0.24/conf/context.xml и дописываем там JNDI-ресурс:
1 2 3 4 5 6 7 8 9 |
<Resource name="jdbc/tomcatDB" auth="Container" type="javax.sql.DataSource" username="tomcat" password="newuserpassword" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/tomcat" maxTotal="8" maxIdle="4"/> |
Эти строчки нужно добавлять внутри тега Context.
Теперь JNDI-ресурс настроен. Для проверки можно остановить сервер и запустить снова. В логе не должно быть ошибок. Можно деплоить war-файлы. Для этого их нужно поместить в каталог /opt/apache-tomcat-8.0.24/webapps и Apache Tomcat сам их развернёт и запустит.
Установка nginx и перенаправление запросов с 80 порта на 8080/appname
Этот шаг не обязательный и не всегда нужен.
1 |
apt-get install nginx |
В файле настроек /etc/nginx/sites-available прописываем rewrite внутри блока server вместо location /:
1 2 3 4 5 6 7 |
location / { rewrite ^(.*)$ /appname/$1 last; } location /personal { proxy_pass http://127.0.0.1:8080/appname; } |
Теперь на наше приложение можно заходить через браузер просто по IP: http://<IP_сервера>.
Автоматическое создание резервной копии базы данных PostgreSQL каждый день в полночь
Создадим задание, которое будет выполняться от имени postgres и создавать резервные копии в полночь:
1 |
crontab -u postgres -e |
В открывшемся файле внизу допишем строки:
1 2 3 4 5 |
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 0 * * * pg_dump tomcat > "/home/postgres/tomcat_dump_$(date +"\%Y\%m\%d\%H\%M\%S").sql" |
Теперь каждую полночь будут создаваться резервные копии базы данных tomcat и сохраняться в /home/postgres. Создадим этот каталог:
1 2 |
mkdir /home/postgres chown postgres:postgres /home/postgres |
Более подробное описание смотрите здесь: Запуск заданий в определённое время в Linux с помощью cron
Настройка HTTPS в Apache Tomcat
Если это ваш production-сервер, то рекомендуется получить сертификат для SSL и настроить HTTPS в Apache Tomcat.
Если вы установили Apache Tomcat за nginx, то шифрование нужно настраивать в nginx.
Имейте в виду, что если вы используете HTTPS, то все ресурсы, которые будет скачивать браузер, должны запрашиваться по HTTPS. Неважно, с внешних сайтов или с нашего настраиваемого сервера, картинки или скрипты. Если HTTPS, то всё должно быть по HTTPS.
Ссылки
http://tomcat.apache.org/tomcat-8.0-doc/ — Документация на Apache Tomcat 8
http://www.postgresql.org/docs/9.4/static/ — Документация на PostgreSQL 9.4
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html — Ссылка на скачивание PuTTY.