Różnice między wybraną wersją a wersją aktualną.
Poprzednia wersja | |||
— | jboss_5 [2018/07/16 11:47] (aktualna) – edycja zewnętrzna 127.0.0.1 | ||
---|---|---|---|
Linia 1: | Linia 1: | ||
+ | ===== Wstęp ===== | ||
+ | JBoss - czyli serwer aplikacji napisanych w Javie. Ze względu iż namęczyłem się z JBossem postanowiłem to opisać tu w tym miejscu bo to co piszą w JBoss Community na oficjalnej stronie to nie działa - a przynajmniej mi nie działało jakiś czas temu. Próbowałem wykonać proste rzeczy na JBossie, które np. w Apachu są bardzo proste, a w JBossie okazały się katorgą dla mnie. JBoss bazuje na Tomcacie, ale jest tak przerobiony, | ||
+ | |||
+ | ==== Instalacja ==== | ||
+ | |||
+ | === Konto === | ||
+ | |||
+ | Najpierw zaczynamy od stworzenia konta pod procesy JBossa – tak jest po prostu bezpieczniej – nie zalecam tego robić na koncie root' | ||
+ | |||
+ | $ useradd -c " | ||
+ | |||
+ | Ustawiamy hasło użytkownikowi jboss: | ||
+ | |||
+ | $ passwd jboss | ||
+ | |||
+ | i logujemy się na użytkownika jboss. | ||
+ | |||
+ | === Java === | ||
+ | |||
+ | Niestety ciężko podać tu linka do Javy bo jest on generowany ze strony, więc musicie sami ściągnąć albo zainstalować z poldka. | ||
+ | |||
+ | Jeśli ściągamy ze strony: http:// | ||
+ | |||
+ | $ chmod +x ./ | ||
+ | $ ./ | ||
+ | |||
+ | Tu należy stworzyć symboliczny link, gdybyśmy chcieli uaktualnić Jave w przyszłości nie zmieniając zmiennych tylko podgrywając nową wersje: | ||
+ | |||
+ | $ ln -s ./ | ||
+ | |||
+ | Jeśli z poziomu poldka to: | ||
+ | |||
+ | $ poldek -i java-sun-jdk-base | ||
+ | |||
+ | W/w obydwa przypadki są poprawne, ale Java leży w innym miejscu. Jak pobraliśmy ręcznie i rozpakowaliśmy to Java leży w katalogu: **/ | ||
+ | |||
+ | === JBoss === | ||
+ | |||
+ | Ściągamy i rozpakowujemy Jboss' | ||
+ | |||
+ | $ wget http:// | ||
+ | $ unzip ./ | ||
+ | |||
+ | Tworzymy symboliczny link – głównie dla wygody i ew upgrejdu JBoss' | ||
+ | |||
+ | $ ln -s ./ | ||
+ | |||
+ | ==== Konfiguracja ==== | ||
+ | |||
+ | === Zmienne === | ||
+ | |||
+ | Trzeba zdefiniować dwie zmienne jeśli chcemy, aby JBoss się poprawnie uruchomił: | ||
+ | |||
+ | $ echo " | ||
+ | |||
+ | Jeśli instalowaliśmy ręcznie Jave to: | ||
+ | |||
+ | $ echo " | ||
+ | |||
+ | jeśli z poziomu poldka to: | ||
+ | |||
+ | $ echo " | ||
+ | |||
+ | Warto też dodać binaria Javy do zmiennej PATH: | ||
+ | |||
+ | $ echo " | ||
+ | |||
+ | Zmienne będą obowiązywać po ponownym zalogowaniu się. | ||
+ | |||
+ | JBoss nie uruchomi się gdy nie będzie mógł rozwiązać poprawnie hostname naszej maszyny, należy dodać do pliku /etc/hosts odpowiedni wpis (z poziomu root' | ||
+ | |||
+ | $ echo „10.0.0.5 nasz_hostname” >> /etc/hosts | ||
+ | |||
+ | Nasze IP uzyskamy z wyniku polecenia: **ifconfig**, | ||
+ | |||
+ | === JBoss === | ||
+ | |||
+ | Domyślnie JBoss będzie nasłuchiwał na **localhoście (127.0.0.1)** jeśli chcemy się do niego dostać z zewnątrz to musimy zmienić wpisy o nasłuchiwaniu JBoss' | ||
+ | |||
+ | < | ||
+ | <!-- A HTTP/1.1 Connector on port 8080 --> | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | i zamieniamy go na: | ||
+ | |||
+ | < | ||
+ | <!-- A HTTP/1.1 Connector on port 8080 --> | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== Uruchomienie ==== | ||
+ | |||
+ | JBoss' | ||
+ | |||
+ | $ ~/ | ||
+ | |||
+ | Ze względu iż nie bardzo mamy jak wyjść z tego programu więc należało by uruchomić JBoss' | ||
+ | |||
+ | $ screen ~/ | ||
+ | |||
+ | Aby wyjść ze screena należy nacisnąć: **CTRL+a CTRL+d**, aby wejść w screena ponownie należy wpisać: | ||
+ | |||
+ | $ screen -r | ||
+ | |||
+ | JBoss nasłuchuje na porcie **8080 (http)**. Ten port można zmienić w pliku: **$HOME/ | ||
+ | |||
+ | Aby móc przewijać logi w górę w screenie należy wejść w tryb kopiowania: **CTRL+a CTRL+[**, aby wyjść z trybu kopiowania naciskamy: **CTRL+c**. Jeśli chcemy wyłączyć JBoss' | ||
+ | |||
+ | $ ~/ | ||
+ | |||
+ | JBoss jest gotowy do pracy i można uploadować aplikacje (rozszerzenia: | ||
+ | |||
+ | $ rm -R ~/ | ||
+ | |||
+ | usuwanie należy wykonywać przy zastopowanym JBossie. Deplojowanie aplikacji możemy też wykonać z konsoli webowej JBoss' | ||
+ | |||
+ | ==== Bezpieczeństwo ==== | ||
+ | |||
+ | Domyślnie JBoss jest zabezpieczony za pomocą bindowania się na **localhosta** – co nie umożliwia potencjalnym hostom dostanie się do niego z domyślnym hasłem. Jednak JBoss' | ||
+ | |||
+ | === Zmiana hasła === | ||
+ | |||
+ | Zmianę hasła przeprowadzamy za pomocą wy-edytowania pliku: **~/ | ||
+ | |||
+ | < | ||
+ | admin=admin | ||
+ | </ | ||
+ | |||
+ | zmieńmy na inne: | ||
+ | |||
+ | < | ||
+ | admin=nowehaslomoje123 | ||
+ | </ | ||
+ | |||
+ | Zmiana hasła nie wymaga restartu JBoss' | ||
+ | |||
+ | === SSL === | ||
+ | |||
+ | Bezpiecznie się łączyć z naszymi aplikacjami za pomocą SSL'a. Najpierw musimy wygenerować odpowiednie certyfikaty: | ||
+ | |||
+ | $ openssl genrsa -out ./ssl.key 1024 | ||
+ | $ openssl req -new -x509 -days 365 -key ./ssl.key -out ./ssl.crt | ||
+ | You are about to be asked to enter information that will be incorporated | ||
+ | into your certificate request. | ||
+ | What you are about to enter is what is called a Distinguished Name or a DN. | ||
+ | There are quite a few fields but you can leave some blank | ||
+ | For some fields there will be a default value, | ||
+ | If you enter ' | ||
+ | ----- | ||
+ | Country Name (2 letter code) [AU]:PL | ||
+ | State or Province Name (full name) [Some-State]: | ||
+ | Locality Name (eg, city) []:Miasto | ||
+ | Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nazwa Firmy | ||
+ | Organizational Unit Name (eg, section) []:IT | ||
+ | Common Name (eg, YOUR name) []: | ||
+ | Email Address []: | ||
+ | $ openssl pkcs12 -export -in ./ssl.crt -inkey ./ssl.key -out ssl.p12 -name jboss | ||
+ | Enter Export Password: | ||
+ | Verifying - Enter Export Password: | ||
+ | $ keytool -importkeystore -srckeystore ./ssl.p12 -srcstoretype pkcs12 -srcalias jboss -srcstorepass | ||
+ | |||
+ | Mamy wygenerowany certyfikat w formacje **jks**, teraz należy go skopiować do katalogu JBoss' | ||
+ | |||
+ | $ cp ./ssl.jks ./ | ||
+ | |||
+ | Aby włączyć SSL'a na JBossie musimy go najpierw zatrzymać: | ||
+ | |||
+ | $ ~/ | ||
+ | |||
+ | Edytujemy plik **$HOME/ | ||
+ | < | ||
+ | <!-- SSL/TLS Connector configuration using the admin devl guide keystore | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | --> | ||
+ | </ | ||
+ | i zamieniamy ją na: | ||
+ | < | ||
+ | <!-- SSL/TLS Connector configuration using the admin devl guide keystore --> | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | Wartość zmienne **keystorePass** trzeba zmienić z **nasze_tajne_haslo** na hasło, które ustawiliście przy generowaniu certyfikatu. | ||
+ | |||
+ | Startujemy JBoss' | ||
+ | |||
+ | $ screen ~/ | ||
+ | |||
+ | JBoss nasłuchuje na porcie **8443 (https)** oraz na **8080 (http)**. Te porty można zmienić w pliku: **$HOME/ | ||
+ | |||
+ | === Vhosty === | ||
+ | |||
+ | Definiowanie vhostów na JBossie jest toporne ponieważ trzeba zrobić odpowiednie wpisy w konfiguracji oraz w pliku aplikacji **ear** albo **war** – co wiąże się z rozpakowaniem i spakowaniem tych plików. | ||
+ | |||
+ | Zatrzymujemy JBoss' | ||
+ | |||
+ | $ ~/ | ||
+ | |||
+ | Edytujemy plik $HOME/ | ||
+ | < | ||
+ | < | ||
+ | ... | ||
+ | < | ||
+ | ... | ||
+ | <Engine name=" | ||
+ | ... | ||
+ | <Host name=" | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | <Host name=" | ||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | <Valve className=" | ||
+ | cachedConnectionManagerObjectName=" | ||
+ | transactionManagerObjectName=" | ||
+ | </ | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | Teraz trzeba dodać do pliku: **projekt.war/ | ||
+ | < | ||
+ | < | ||
+ | " | ||
+ | " | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | Jeśli nie ma takiego pliku: **projekt.war/ | ||
+ | |||
+ | Jak takie coś w bardzo szybki sposób przeprowadzić? | ||
+ | |||
+ | === Allow/deny === | ||
+ | |||
+ | Dostęp po adresie **IP** możemy dać lub też zabronić na poziomie **vhosta** bo właśnie tam się definiuje ACLe. Tu akurat jest bardzo prosto (chyba, że się korzysta z JBoss Community; | ||
+ | < | ||
+ | <Valve className=" | ||
+ | </ | ||
+ | Taką regułkę najlepiej dać dla vhosta localhost ponieważ od razu odetniemy dostęp dla hostów z poza 10.100.* do aplikacji systemowych JBoss' | ||
+ | |||
+ | ==== Zakończenie ==== | ||
+ | |||
+ | Wszelkie uwagi mile widziane na **kamil|at|kamilm.net**, |