Решил записать основные моменты установки и конфигурации, по большей части для себя, на будущее.
У меня на сервере debian wheezy. Следовательно java 7 – максимально доступная версия, если не подключать дополнительные источники.
Для начала, зайдя на сервер, нужно установить java
1 2 3 |
sudo aptitude install openjdk-7-jdk openjdk-7-jre |
Установка пройдет с кучей зависимостей.
Далее установить tomcat, максимально доступная версия на сервере 7, хотя на локалке у меня 8.
1 2 3 |
sudo aptitude install tomcat7 |
Теперь есть следующие интересующие пути с конфигами.
Тут конфиги по ресурсам в context.xml и хостам в server.xml
1 2 3 |
ls /etc/tomcat7/ |
Сюда нужно будет класть war файл при деплое приложения
1 2 3 |
ls /var/lib/tomcat7/webapps |
А тут конфиги в которых можно изменить параметры запуска сервера.
1 2 3 |
ls /usr/share/tomcat7/bin/ |
Что можно сразу и сделать. У меня tomcat сразу не запускался, вернее сервис запускался, но после деплоя приложения в логах падал с ошибкой, говорящей что не хватает памяти. Чтобы увеличить память, необходимо установить env параметры Xms и Xmx. Но если их установить через команду export, то при перезагрузке сервера они потеряются. Значит в /usr/share/tomcat7/bin/ нужно создать файл setenv.sh со следующим содержимым.
1 2 3 4 |
export CATALINA_OPTS="-Xms512M -Xmx1024M" export JAVA_OPTS="-server -Xms1024m -Xmx2048m" |
Эти параметры устанавливают начальный и максимальный объемы памяти для jvm и для сервлет контейнера catalina.
Для того, чтобы задеплоить свое веб приложение необходимо на локалке в IDE экспортировать war файл, далее поместить war файл в webapps на сервере, далее поменять настройки в server.xml. В моем случае приложение называлось spring-mvc и war файл назывался так же, и я хочу, чтобы сервер открывал путь /spring-mvc по умолчанию, как корень. Следовательно в раздел Host я добавил:
1 2 3 4 5 6 |
<Context path="" docBase="spring-mvc"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> |
Теперь по пути 127.0.0.1:8080 будет открываться главная страница, а не по пути 127.0.0.1:8080/spring-mvc. Чтобы проверить, что открывается в консоли, я использую консольный браузер lynx.
Так же если приложение использует JNDI для предоставления ресурсов, например подключения к БД, то надо не забыть добавить конфиг в context.xml
1 2 3 4 5 6 |
<Resource name="jdbc/springtutorial" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="passwd" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/spring-mvc"/> |
Далее можно настроить nginx host и конфиг будет очень простой. Все что нужно, так это сделать прокси с 80 порта на 8080.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
server { #имя сервера server_name host.com; listen *:80; #логи access_log /var/log/nginx/host.com-access.log; error_log /var/log/nginx/host.com-error.log; root /var/lib/tomcat7/webapps/spring-mvc; # Основной location. location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080/; } } |
Создав этот конфиг в файле host.conf и активировав его, конечно же, при условии, что хост уже привязан к серверу, можно перезапустить tomcat и nginx и увидеть главную страницу в браузере по адресу хоста.