반응형

오늘은 Ubuntu 18.04 기준에서 http2.0 을 적용하는 방법에 대해서 알아보자.

http2 가 http 보다 좋은건 딱히 설명할 여지가 없다. 

속도가 우선 어마어마하게 개선되었음. 하지만 한국에서는 인터넷 속도가 빨라서 그런지 http2 가 좋은 이유를 모르는 것 같다.

우리가 서버셋팅을 할때 간단하게 몇줄만 넣어주면 되니 아래를 잘 따라하도록 하자.

(1) Apache Version 확인하기

- 공식문서에 보면 Apache Version 2.4.24 이상에서만 http2.0 을 지원한다.
- 그렇다면 자신의 서버에 설치된 Apache의 버젼이 몇인지 확인해보자.

# /etc/apache2# apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2022-06-23T12:51:37

또는

#:/etc/apache2# dpkg -l | grep apache2
ii  apache2                                2.4.29-1ubuntu4.25                              amd64        Apache HTTP Server
ii  apache2-bin                            2.4.29-1ubuntu4.25                              amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                           2.4.29-1ubuntu4.25                              all          Apache HTTP Server (common files)
ii  apache2-utils                          2.4.29-1ubuntu4.25                              amd64        Apache HTTP Server (utility programs for web servers)
ii  libapache2-mod-jk                      1:1.2.43-1                                      amd64        Apache 2 connector for the Tomcat Java servlet engine

이렇게 확인할 수 있다. 대충 봐도 2.4.29 이니 크게 상관없을듯 하다. 만약 2.4.25 미만인 경우에는 upgrade ppa 추가해서 하면 된다.

(2) http2 모드 활성화 초간단 설정 

- 딱 2개만 넣으면 된다.
- 일단 http2 mod 활성화

# sudo a2enmod http2
Module http2 already enabled

난 이미 모드를 활성화 해놔서 저렇게 뜸.. 모드 활성화 명령어를 입력해주세요.

(3) 특정 프로젝트 설정파일에 집어넣기!

# sudo vim /etc/apache2/sites-available/000-default.conf
~~~~~ (내용)


<VirtualHost *:443>

        ServerName 사이트도메인

        SSLEngine on
        SSLCertificateKeyFile /~~~/.key.pem
        SSLCertificateFile /~~~/.pem
        SSLCACertificateFile /~~~/.pem

        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # HTTP2 Protocol
        Protocols h2 http/1.1
</VirtualHost>

여기서 Protocols h2 http/1.1 만 보면된다.

개쉬움 자 그럼 사이트 들어가서 f12 눌러서 프로토콜을 보자.

(4) http2.0 적용 확인방법

위 그림 처럼 protocol에 h2 라고 나오면 끝!!!

 

개쉬움 어서어서 적용하시오.!!!!1

반응형
반응형

오늘은 Ubuntu 서버에서 Apache 웹서버와 Tomcat WAS 서버를 연동하는 법을 알려드리고자 합니다.

(방법)

1. Apache 의 reverse proxy를 이용한 방법

2. Apache AJP Connector를 이용한 방법

두가지 방법이 있습니다. 결론적으로 (1)번 방법은 간단한 설정으로 가능하기 때문에 매우 쉬운방법이고 (2)번 방법은 어느정도 손이 좀 많이 가는 방법입니다.

오늘은 (2)번 방법에 대해서 설명하고자 합니다.

 

(시작!!!!!!)

 

(1) 각종 설치과정

- Apache와 Tomcat을 설치하는 과정을 생략하겠습니다.

- Ubuntu에서 주어지는 명령어를 쓰셔서 Apache는 간단하게 설치가 가능하고 Tomcat은 tomcat.apache.org 사이트에서 tar.gz 확장자의 파일을 다운받아서 설치하시면 됩니다.

(2) Apache AJP mod_jk 다운로드

# sudo apt-get install libapache2-mod-jk

- Ubuntu는 mirror 사이트에서 위 명령어만 치면 다운로드가 가능합니다.

- 저 mod_jk가 없으면 ajp connector를 사용할 수 없습니다.

- 타 OS를 쓰고 계신다면 아래 재료에서 다운로드도 가능합니다.

- mod_jk를 설치를 완료하고 나면 /etc/libapache2-mod-jk 에 다음과 같은 파일들이 있는 것을 확인 가능하십니다.

# ls -la /etc/libapache2-mod-jk/
total 12
drwxr-xr-x   2 root root 4096 Feb 10 18:28 .
drwxr-xr-x 101 root root 4096 Feb 10 17:16 ..
lrwxrwxrwx   1 root root   33 Mar 13  2018 httpd-jk.conf -> ../apache2/mods-available/jk.conf
-rw-r--r--   1 root root 3000 Feb 10 18:13 workers.properties

- 여기서 workers.properties를 수정해서 Tomcat과의 Connection를 관리할 수 있습니다.

(3) works.properties 수정

- workers.properties 는 tomcat를 여러개 설정정보 등록해두고 Apache에 연결할때 Alias로 호출하여 연동할 수 있도록 도와주는 설정파일입니다.

# vim ./workers.properties
~~~~~~
~~~~~~ (파일을 열었다고 가정합니다.)
~~~~~~

worker.list=tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1

위 처럼 셋팅해주시면 됩니다.

tomcat1 은 제가 정한 Alias이기 때문에 각자가 지정한 이름으로 변경해도 무방합니다.

list 에는 tomcat를 여러개 관리할 경우 ","를 기준으로 나열하신다음에 아래 쪽에 worker를 추가하시면 됩니다.

만약 1개뿐이라면 크게 설정을 변경하실 건 없습니다.

(4) Apache 설정파일 수정

- Apache 설정파일을 수정할때 VirtualHost부분은 따로 언급하지 않겠습니다.

- 이 부분은 다른 좋은글이 많으니 참조해주세요.

- 아래 설정중에 JkMount 쪽만 보시면 됩니다.

# sudo vim /etc/apache2/sites-available/000-default.conf
~~~~~
~~~~~ (파일열었습니다.)
~~~~~

<VirtualHost *:80>

        # 여기에다가 접속하는 도메인명을 넣어주세요.
        ServerName abc.testdomain.com

        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # 아래 내용은 걍 http -> hhtps로 넘겨라 라는 표현입니다.(신경쓰지마셈)
        RewriteEngine on
        RewriteCond "%{HTTPS}" "!on"
        RewriteRule ^.+ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

</VirtualHost>

# HTTPS access
<VirtualHost *:443>

        # 여기에다가 접속하는 도메인명을 넣어주세요.
        ServerName abc.testdomain.com

        # 여기에는 SSL 인증서가 있다면 경로를 넣어주세요
        SSLEngine on
        SSLCertificateKeyFile /was/apache-tomcat-9.0.58/conf/ssl/KeyFile_Wildcard.testdomain.com_apache.pem
        SSLCertificateFile /was/apache-tomcat-9.0.58/conf/ssl/File_Wildcard.testdomain.com_apache.pem
        SSLCACertificateFile /was/apache-tomcat-9.0.58/conf/ssl/CA_GLOBALSIGN_ROOT_CA.pem

        CustomLog ${APACHE_LOG_DIR}/uc_access.log combined
        ErrorLog ${APACHE_LOG_DIR}/uc_error.log

        # JkMount 뒤에 alias명은 works.properties에서 작성한 list이름을 넣어주세요.
        JkMount /* tomcat1
        JkMount / tomcat1

</VirtualHost>

(5) Tomcat 의 설정파일을 열어서 AJP 설정을 OPEN 함.

- 자~ Apache까지 작업이 끝났으니 이제 Tomcat에서 AJP 설정을 해봅시다.

vim /was/apache-tomcat-9.0.58/conf/server.xml

~~~ (파일 열었습니다.)
~~~

~~~~
    <!--
    아래 Connector 정보는 안쓸꺼기 때문에 주석 처리합니다.
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->


    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!-- 기존 주석 처리 되어 있던 아래 내용을 오픈 합니다. -->
    <Connector protocol="AJP/1.3"
               address="0.0.0.0"
               port="8009"
               redirectPort="8443"
               secretRequired = "false"
               />

- 여기서 중요한 점은 address=":::1" 이라고 된 부분을 address="0.0.0.0" 으로 변경 해야 합니다.

- 또한 secretRequired = "false"를 해서 Apache에서 별도의 비밀번호 없이 접속할 수 있도록 합니다.

- True인 경우에는 workers.properties와 Tomcat의 server.xml에 서로 비밀번호를 넣어주어야 합니다.

(6) 재시작

자 이제 재시작 한번 하고 결과를 확인하시면 됩니다.

$ sudo /etc/init.d/apache2 restart
$ /was/apache-tomcat-9.0.58/bin/startup.sh

 

반응형
반응형

리눅스 파일 시스템에서 간혹가다가 

rm -rf 명령어로 삭제되지 않는 경우가 있다. 나의 경우에도 이런 경우가 발생했다.

 

$ sudo rm -rf SPOBEE_ADMIN_LOG/
rm: cannot remove '.nfs00000000000545ce00000002': Device or resource busy
rm: cannot remove '.nfs0000000000120b3d00000001': Device or resource busy
rm: cannot remove '.nfs0000000000120b3c00000003': Device or resource busy

 

아 짱나네 rm -rf는 거의 무적 지우기 인데 왜 삭제 안되는거지 해서 찾아보다 보니 사용중인 프로세스가 있어서 그런거였음.

그렇다면 해당 파일이 사용중인 프로세스가 무엇인지 확인하는 명령어를 통해서 kill 후 삭제처리를 해보니 잘되었다.

아래 코드를 참조하시기 바란다.

 

$ lsof +D ./파일명
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    98469 apptm  154w   REG   0,47    59299 1182524 .nfs0000000000120b3c00000003
java    98469 apptm  155w   REG   0,47   676833 1182525 .nfs0000000000120b3d00000001
java    98469 apptm  156w   REG   0,47      392  345550 .nfs00000000000545ce00000002

 

위 코드를 보니 98469 PID를 가진 프로세스가 파일을 잡고 안놔주고 있는 실정임. 

ps 명령어를 통해서 저 PID를 찾아서 KILL 하자

 

$ ps -ef | grep 98469
계정명     98469      1 16 Jan06 pts/0    03:16:15 /usr/lib/jvm/jdk1.8.0_191/bin/java -Djava.util.logging.config.file=/was/apache-tomcat-9.0.21/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dspring.profiles.active=ops -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /was/apache-tomcat-9.0.21/bin/bootstrap.jar:/was/apache-tomcat-9.0.21/bin/tomcat-juli.jar -Dcatalina.base=/was/apache-tomcat-9.0.21 -Dcatalina.home=/was/apache-tomcat-9.0.21 -Djava.io.tmpdir=/was/apache-tomcat-9.0.21/temp org.apache.catalina.startup.Bootstrap start

 

결국 TOMCAT에 잡고 있었음 ㅋㅋ

톰캣 끄고 삭제 처리 하니 깔끔하게 지워짐... 쉽구만...

만약에 다른 프로세스라면 $kill -9 98469 이렇게 삭제 처리하면 됩니다.

반응형
반응형

오늘은 apache2에 패스워드를 처리하는 방법에 대해서 알아보겠다.

외부에 디자인된 파일이나 간단한 공유가 있을때 많이 사용하지만, 별도의 인증과정이 없다보니 구글이나 다른 포털에서 막 긁어가는 경우가 허다해서 보안상 매우 좋지 않다. 이번 기회에 웹 파일용으로 쓰는 모든 것들에 대해서 처리를 해보도록 하자.!

 

1. apache2 설치 및 utils 데몬 설치

$sudo apt-get update
$sudo apt-get install apache2 apache2-utils

위 과정을 통해서 최신 apache2를 설치하도록 한다.

 

2. 유저 패스워드 파일 생성하기

$sudo htpasswd -c /etc/apache2/.htpasswd test_account

여기 test_account 란에 접속할 계정명을 적어주면된다.
만약에 추가로 여러개의 계정을 생성하고자 하는 경우에는 아래와 같은 명령어를 쓰면된다."-c" 옵션만 빼면된다.

$sudo htpasswd /etc/apache2/.htpasswd test2_account

cat 명령어를 통해서 현재 설치된 계정의 파일을 확인해볼 수 있다.

$ cat /etc/apache2/.htpasswd

(결과)
test_account:$apr1$6ktuE~~~~~~~~~~~~~~~~~~~~dsf33###l/

 

3. 아파치 세부 설정

 

3.1 virtural hosting 설정에서 아래의 코드를 추가해준다.

$ cd /etc/apache2/sites-available/

....(중략)
....

<VirtualHost *:80>
         ServerName test.test.com
         DocumentRoot /home/aaaaa/html
         ErrorLog ${APACHE_LOG_DIR}/error.log
         CustomLog ${APACHE_LOG_DIR}/access.log combined
         <Directory /home/aaaaa/html>
                AuthType Basic
                AuthName "Restricted Content"
                AuthUserFile /etc/apache2/.htpasswd
                Require valid-user
         </Directory>
</VirtualHost>

위 코드에서는 test.test.com 이라는 도메인으로 호출했을때만 apache2가 연동되도록 했고 Root Directory를 /home/aaaaa/html 폴더로 설정했다.

AuthUserFile 은 2번 항목에서 설정한 파일의 위치를 적어두었다.

 

3.2 Apache 에서 접근 권한 셋팅

$sudo vi /etc/apache2/apache2.conf

....(중략)

<Directory /home/aaaaa/html>
        Options Indexes FollowSymLinks
        AllowOverride   All
        Require all granted
</Directory>

위 와 같이 설정해주는데 AllowOverride 를 All 로 설정하는것이 중요 포인트이다.

 

4. Apache2 재부팅

$sudo service apache2 restart

이렇게 하면 끝!!!

이제 한번 접속해보자.!

이렇게 로그인이 잘 되는것을 확인할 수 있다.

 

반응형

+ Recent posts