- HANA Cloud
- SAP BTP
- HANA DB
- angularJS
- Windows Service
- Capire
- BTP 배포
- raspbian
- BTP Deployment
- 윈도우 서비스
- raspberry pi
- sap
- springboot
- Devian
- ionic native
- cf push
- Business Application Studio
- TypeScript
- cloud foundry
- sapui5
- JavaScript
- tomcat
- blue-green
- ionic3
- ChatGPT
- CAP Java
- eclipse plugin
- ionic
- 구글맵 예제
- BTP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Today
- Total
Ryan's Log
라즈베리파이 - #3 Apache2 + Tomcat8 설치 (MOD_JK) 본문
[라즈베리파이]
Apache2 + Tomcat8 설치 (MOD_JK)
몇해간 호스팅에 의존하던 개인 데모용 Java WAS를 라즈베리파이로 교체 하기로 맘먹고 파이 요리를 시작했다.
우선 버전은
> lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.3 (stretch) Release: 9.3 Codename: stretch
절차를 미리 정리 하면...
-. 관련 패키지 일괄 설치
-. 설치된 Apache, Tomcat 동작 확인
.- Apache와 Tomcat 연결 (mod-jk 설정)
.- 잘 연결 했는가?
무엇보다 먼저 패키지 매니저를 업데이트 한다.
> sudo apt-get update
총 3개의 패키지(Apache2, Tomcat8, libapache2-mod-jk)를 설치한다.
참고로 libapache2-mod-jk는 Apache와 Tomcat을 연결하는 Apache의 모듈이다.
> sudo apt-get install apache2 tomcat8 libapache2-mod-jk
설치 후 브라우저에서 Apache와 Tomcat의 동작상태를 각각 확인한다.
Apache는 포트 80을 사용하므로 그냥 IP만
http://your-server-ip
Tomcat은 기본 포트 8080을 사용하므로 IP:8080
http://your-server-ip:8080
사실 여기까지는 뭐 apt-get 한방으로 끝났으나...
앞으로 진행될 mod-jk는 눈 똑바로 뜨고 진행해야 ~~
우선 Apache 설정에서 VirtualHost를 찾는다.
Apache보다 Tomcat과 친하게 지내느라 흐릿해진 내 기억속에 Apache 설정 파일은 분명 httpd.conf 였었는데 2.0부터 인가보다. apache2.conf 로 변경됬으며 Virtual Host 설정도 sites라는 이름으로 분리(파일도 분리)된 것이라 굳게 믿고
./sites-enabled 하위에 포트 80에 대한 Virtual Host를 정의한 파일을 찾아 JkMount 설정을 추가한다.
> sudo vi /etc/apache2/sites-enabled/000-default.conf
<VirtualHost> 태그 안에 아래 추가
JkMount /* ajp13_worker
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html JkMount /* ajp13_worker # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
위에 정의한 ajp13_worker의 정의는 workers.properties에서 찾을 수 있다.
> sudo vi /etc/libapache2-mod-jk/workers.properties
workers.properties에 대부분이 정상으로 작성되어 있으나 Java HOME은 없는 경로로 작성되어 있다.
아래를 /usr/lib/jvm 아래 있는 JDK로 올바르게 수정(여러 버전이 설치되어 있을 수 있으니...)
workers.java_home=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt
마지막으로 Tomcat에 AJP프로토콜을 열어준다.
> sudo vi /etc/tomcat8/server.xml
아래라인 주석 해제하고, 겸사겸사 URIEncoding="UTF-8"도 추가
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
이제 두 서버를 사이좋게 재시작한다.
> sudo service tomcat8 restart
> sudo service apache2 restart
이제 포트 80을 호출해도 Tomcat의 It Works!가 열린다.
http://your-server-ip
Tomcat의 포트 8080을 막고자 할 때는 server.xml에서 다음 Connector를 삭제한다.
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
JSP등 특정 URL 패턴만 Tomcat이 처리하도록 할 경우 (보통 정적파일은 Apache가 처리하는게 빠르니까) 000-default.conf의 JkMount 설정을 편집한다.
JkMount /*.jsp ajp13_worker
여기까지 잘 안된경우..
apache 설정에 mod-jk를 강제로 추가해본다.
> sudo vi /etc/apache2/apache2.conf
apache2.conf의 가장 마지막 라인 뒤에 Load Module 한다.
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
본래 mod_jk.so가 자동으로 얹혀저야 하나 잘 ㅇ ㄷ ㄴ ㅂ ㅈ ㅝ
아래는 내 파이의 workers.properties
# workers.properties - # # This file is a simplified version of the workers.properties supplied # with the upstream sources. The jni inprocess worker (not build in the # debian package) section and the ajp12 (deprecated) section are removed. # # As a general note, the characters $( and ) are used internally to define # macros. Do not use them in your own configuration!!! # # Whenever you see a set of lines such as: # x=value # y=$(x)\something # # the final value for y will be value\something # # Normaly all you will need to do is un-comment and modify the first three # properties, i.e. workers.tomcat_home, workers.java_home and ps. # Most of the configuration is derived from these. # # When you are done updating workers.tomcat_home, workers.java_home and ps # you should have 3 workers configured: # # - An ajp13 worker that connects to localhost:8009 # - A load balancer worker # # # OPTIONS ( very important for jni mode ) # # workers.tomcat_home should point to the location where you # installed tomcat. This is where you have your conf, webapps and lib # directories. # workers.tomcat_home=/usr/share/tomcat8 # # workers.java_home should point to your Java installation. Normally # you should have a bin and lib directories beneath it. # workers.java_home=/usr/lib/jdk/jdk-8-oracle-arm32-vfp-hflt # # You should configure your environment slash... ps=\ on NT and / on UNIX # and maybe something different elsewhere. # ps=/ # #------ ADVANCED MODE ------------------------------------------------ #--------------------------------------------------------------------- # # #------ worker list ------------------------------------------ #--------------------------------------------------------------------- # # # The workers that your plugins should create and work with # worker.list=ajp13_worker # #------ ajp13_worker WORKER DEFINITION ------------------------------ #--------------------------------------------------------------------- # # # Defining a worker named ajp13_worker and of type ajp13 # Note that the name and the type do not have to match. # worker.ajp13_worker.port=8009 worker.ajp13_worker.host=localhost worker.ajp13_worker.type=ajp13 # # Specifies the load balance factor when used with # a load balancing worker. # Note: # ----> lbfactor must be > 0 # ----> Low lbfactor means less work done by the worker. worker.ajp13_worker.lbfactor=1 # # Specify the size of the open connection cache. #worker.ajp13_worker.cachesize # #------ DEFAULT LOAD BALANCER WORKER DEFINITION ---------------------- #--------------------------------------------------------------------- # # # The loadbalancer (type lb) workers perform wighted round-robin # load balancing with sticky sessions. # Note: # ----> If a worker dies, the load balancer will check its state # once in a while. Until then all work is redirected to peer # workers. worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=ajp13_worker
'Raspberry Pi' 카테고리의 다른 글
라즈베리파이 - #4 Apache2에 SSL 적용 (4) | 2018.03.09 |
---|---|
라즈베리파이 - #1 Mac에서 Raspbian 설치 (0) | 2017.09.14 |