Оптимизиране на Tomcat на Ubuntu Server
Оферта от 8host.com

Tomcat е популярна реализация на сървър за приложения на технологиите Java Servlet и JavaServer Pages. Разработено от Apache Software и се разпространява под Apache Open License. Благодарение на своята производителност, удобен за потребителя набор от функции, популярен лиценз и активна общност, Tomcat е едно от най-добрите и популярни приложения на Java Servlet.
Веднъж инсталиран, Tomcat почти винаги се нуждае от допълнителна фина настройка. Това ръководство ще ви помогне да оптимизирате Tomcat и да подобрите неговата сигурност и производителност.
Забележка : Това ръководство е продължение на „Инсталиране на Apache Tomcat 7 на Ubuntu 14.04“, като се предполага, че Apache Tomcat вече е инсталиран.
Изисквания
- Конфигуриран Ubuntu 14.04 сървър.
- Не-root потребител с sudo достъп (прочетете за това тук).
- Предварително инсталиран сървър Apache Tomcat (според това ръководство).
Всички команди в ръководството трябва да се изпълняват с привилегии на sudo.
Обслужване на заявки на стандартен HTTP порт
Обърнете внимание, че по подразбиране сървърът Tomcat слуша TCP заявки на порт 8080. Този порт се използва, защото Tomcat работи под акаунт tomcat7, който няма привилегии. В Linux системи само потребители с права на root могат да слушат на портове под 1024. За да направят тези портове достъпни за непривилегировани потребители, трябва да се направи допълнителна системна конфигурация. Тоест просто промяната на Tomcat порта на 80 (HTTP) няма да работи.
Така че първата настройка на Tomcat за оптимизиране е портът. Всички уеб приложения на Tomcat трябвада бъдат достъпни на стандартния HTTP порт.
Най-лесният (макар и може би не най-добрият) начин да направите това е да създадете правило за iptables, което пренасочва заявки от TCP порт 80 към порт 8080. За да направите това, използвайте командата:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
За да премахнете това правило, просто заменете флага -A (който добавя правилото) с флага -D:
sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
- Nginx е по-сигурен от Tomcat и може да предотврати много атаки. Когато трябва спешно да надстроите защитата си, е много по-лесно, по-бързо и по-надеждно да надстроите интерфейса на Nginx и да не се притеснявате за проблеми със съвместимостта, когато надграждате Tomcat.
- Nginx е по-производителен при обработка на HTTP и HTTPS трафик, по-добър при обработка на статично съдържание, кеширане и SSL.
- Nginx е лесен за конфигуриране да слуша на всеки порт, включително 80 и 443.
Ако тази опция ви подхожда и искате да инсталирате Nginx, първо премахнете добавеното по-рано правило Iptables и след това инсталирайте Nginx с помощта на командата:
sudo apt-get инсталирайте nginx
След това редактирайте сървърния блок по подразбиране (/etc/nginx/sites-enabled/default).
sudo nano /etc/nginx/sites-enabled/default
Намерете местоположението/блока в него, който описва как ще се обслужват заявките и го променете по следния начин:
местоположение / proxy_pass http://127.0.0.1:8080/; >
sudo service nginx рестартиране
Ако конфигурацията е правилна, на екрана ще се появи стандартната страница на Tomcat. Ако страницата не се отвори, проверете дали правилото iptables е премахнато и дали инсталацията на Tomcat е била успешна.
Сигурност на Tomcat
Защитата на Tomcat е може би най-важната и често пренебрегвана задача при оптимизиране на настройките. Плюс това, осигуряването на Tomcat изобщо не е трудно.
Забележка : За да следвате този раздел, трябва да инсталирате и конфигурирате Nginx в предния край, както е описано в предишния раздел.
Премахване на административни уеб приложения
За Tomcat типичният компромис между функционалност и сигурност също е валиден. По този начин, за да подобрите сигурността, можете да премахнете стандартните приложения за уеб мениджър и хост-мениджър. Разбира се, това не е много удобно, тъй като по-късно ще трябва да изпълнявате администраторски задачи (включително внедряване на уеб приложения) от командния ред.
Въпреки това, за да не се притеснявате, че някой може да злоупотреби с достъпа, по-добре е да премахнете администраторските инструменти на Tomcat. Това подобрение на сигурността обикновено се прилага към сайтове, които са в производство.
Администраторските уеб приложения се съхраняват в Ubuntu в пакета tomcat7-admin. Премахнете този пакет.
sudo apt-get премахнете tomcat7-admin
Ограничаване на достъпа до администраторски приложения
На този етап уеб сървърът на Nginx приема връзки на порт 80, следователно можете да получите достъп до всички приложения, като използвате връзката:
По същия начин Tomcat слуша на порт 8080:
Всички приложения са достъпни и чрез тази връзка. За да подобрите сигурността, трябва да ограничите достъпа до ресурсите на порт 80 с помощта на Nginx. Също така трябва частично да блокирате порт 8080 и Tomcat, оставяйки само локален достъп и Nginx.
Отворете виртуалния хост по подразбиране (или сървърния блок):
sudo nano /etc/nginx/sites-enabled/default
. местоположение /мениджър/ позволи your_local_ip; отказвам всички; прокси_пас http://127.0.0.1:8080/мениджър/; > .
Добавете същите ограничения за приложението хост-мениджър; За да направите това, вмъкнете друг такъв блок от настройки, като замените мениджъра с хост-мениджър:
. локация /хост-мениджър/ позволява вашия_локален_ip; отказвам всички; прокси_пас http://127.0.0.1:8080/хост-мениджър/; > .
Рестартирайте Nginx и след това опитайте да отворите мениджър и хост-мениджър.
sudo service nginx рестартиране
Отворете браузър и отидете на:
Като допълнителна мярка за сигурност можете също да премахнете документацията и примерите на Tomcat:
sudo apt-get премахнете tomcat7-docs tomcat7-examples
Имайте предвид, че Tomcat все още слуша за външни връзки на порт 8080. Следователно можете лесно да заобиколите защитата на Nginx. За да коригирате този проблем, можете да конфигурирате Tomcat да слуша само на локалния интерфейс 127.0.0.1. За да направите това, отворете файла /etc/tomcat7/server.xml:
sudo nano /etc/tomcat7/server.xml
Добавете адрес="127.0.0.1" към секцията за конектор:
При рестартиране Tomcat ще актуализира настройките:
sudo service tomcat7 рестартиране
Сървърът Tomcat вече е защитен.
Опции за отстраняване на грешки в JVM
Естествено, основните принципи на фината настройка на Java Virtual Machine (JVM) се отнасят и за Tomcat. Разбира се, настройването на Java Virtual Machine е цяла наука; но има и основни начини за конфигуриране:
- Максималният размер на купчината, Xmx, е максималното количество памет, достъпно за Tomcat. Тук трябва да зададете стойност, която ще остави достатъчно свободно място за работата на самия сървър и другите му услуги. Например, ако сървърът има 2 GB RAM, би било безопасно да разпределите 1 GB RAM в Xmx. Имайте предвид обаче, че Tomcat всъщност използва малко повечепамет от посочената в Xmx.
- Минималният размер на купчината, Xms, е минималното количество памет, разпределено при стартиране. В повечето случаи трябва да съответства на xmx. Това избягва скъпия процес на разпределяне на памет (тъй като размерът на разпределената памет ще бъде постоянен).
- Параметърът MaxPermSize контролира паметта, в която класовете се съхраняват постоянно, и позволява на Tomcat да зарежда класове на приложения и да оставя Xmx свободна памет, за да инстанцира тези класове. Ако не знаете колко памет изискват вашите класове на приложения, можете да започнете, като зададете MaxPermSize на половината от размера на Xmx (512 MB в този случай).
В Ubuntu 14.04 можете да редактирате JVM опциите за Tomcat във файла /etc/default/tomcat7:
sudo nano /etc/default/tomcat7
Ако Tomcat е инсталиран, както е предложено в раздела Изисквания, файлът ще съдържа следния ред:
. JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx512m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC" .
Например, за да разпределите 1 GB от 2 GB RAM на Tomcat, този ред трябва да бъде променен на:
. JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xms1024m -Xmx1024m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC" .
За да актуализирате настройките, рестартирайте Tomcat:
sudo service tomcat7 рестартиране
Настройките на JVM, предложени по-горе, са добри за начало, но трябва постоянно да наблюдавате регистрационните файлове на Tomcat, за да работят програмите правилно.
(/var/log/tomcat7/catalina.out), особено след рестартиране на Tomcat или внедряване на приложение. Командата tail се използва за това:
sudo tail -f /var/log/tomcat7/catalina.out
За да спрете опашката, натиснетеctrl-c.
Следете за грешки от тип OutOfMemoryError. Ако възникнат такива грешки, редактирайте опциите на JVM и разпределете повече памет в Xmx.
Заключение
Сървърът Tomcat вече е защитен и работи по-добре. Тези основни процедури за оптимизация се препоръчват не само за производствени среди, но също и за среди за тестване и активирана уеб среда за разработка.