운영체제 이야기/Linux(CentOS)

[CentOS7] Minimal 버전 설치 이후 웹서버 만들기 따라하기 - 2편

한희성 2019. 11. 5.
반응형

안녕하세요 한희성 입니다.

 

이어서 2편을 쓰도록 하겠습니다.!!!

 

설정해야할것들은 많고.. 시간은 없고 ㅠㅠ 벌써 시간이 오후 10시 30분인데요.. 오늘 다 하고 잘 수 있을지 모르겠네요ㅠㅠ

 

요즘 쌍둥이 아이들이 이시간이 됐는데도 잠을 잘 안자네요.. 이제 막 100일 넘었습니다. ㅎㅎ 딸둥이 아빠랍니다.

 

다시 본론으로 돌아와서 이어서 작성 ~ 

 

12. nginx 설치 및 설정

https://hhseong.tistory.com/119

 

13. tomcat 설치 및 설정

https://hhseong.tistory.com/80

 

14. 방화벽 설정

* netstat -tnlp

- 참고 https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A1%9C%EC%BB%AC%EC%84%9C%EB%B2%84_%EC%97%B4%EB%A6%B0_%ED%8F%AC%ED%8A%B8_%ED%99%95%EC%9D%B8- centos7 은 기본으로 22만 허용되어있음으로 firealld public zone 에 80 추가- 참고 : http://help.nanuminet.com/bbs/board.php?bo_table=manual&wr_id=281

정책 등록

#firewall-cmd --permanent --zone=public --add-port=80/tcp

재시작

#firewall-cmd --reload

정책 확인

#firewall-cmd --zone=public --list-all

gpasswd -a nginx tomcat

- nginx user를 tomcat group 에 추가 파일 시스템 접근을 위해

 

* 방화벽 off

     - 영구 비활성화

     - systemctl disable firewalld

     - systemctl disable iptables

     - systemctl disable ip6tables

 

     - 중지

     - systemctl stop firewalld

     - systemctl stop iptables

     - systemctl stop ip6tables

 

 

 

12. nginx 설치 및 설정

* nginx 실행 및 자동실행 등록

- 참고 : https://www.lesstif.com/pages/viewpage.action?pageId=24445064

 

#systemctl start nginx 

#systemctl enable nginx 

* nginx 기본 설정값 복사

- 참고 https://hhseong.tistory.com/119?category=796867

- /etc/nginx/conf.d

-#cp default.conf default.conf.ori

-#vi default.conf

server {

   listen       80;

   server_name  localhost;

   client_max_body_size 500M;

   charset UTF-8;

   #charset koi8-r;

   #access_log  /var/log/nginx/log/host.access.log  main;

 

   # location / {

   #     root   /usr/share/nginx/html;

   #     index  index.html index.htm;

   # }

 

   location /upload/ {

         alias /u00/upload/;

         #autoindex on;

   }

 

   location / {

         proxy_pass                                http://127.0.0.1:8080;

         proxy_set_header        Host              $host;

         proxy_set_header        X-Real-IP         $remote_addr;

         proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for;

   }

 

    #error_page  404              /404.html;

 

    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }

 

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #    proxy_pass   http://127.0.0.1;

    #}

 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    #location ~ \.php$ {

    #    root           html;

    #    fastcgi_pass   127.0.0.1:9000;

    #    fastcgi_index  index.php;

    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    #    include        fastcgi_params;

    #}

 

    # deny access to .htaccess files, if Apache's document root

    # concurs with nginx's one

    #

    #location ~ /\.ht {

    #    deny  all;

    #}

}

- #systemctl restart nginx- IP 로 접속 확인- 만약 접속이 안된다면 80포트 확인 및 방화벽 확인- #netstat -tnlp- 참고 https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A1%9C%EC%BB%AC%EC%84%9C%EB%B2%84_%EC%97%B4%EB%A6%B0_%ED%8F%AC%ED%8A%B8_%ED%99%95%EC%9D%B8- centos7 은 기본으로 22만 허용되어있음으로 firealld public zone 에 80 추가- 참고 : http://help.nanuminet.com/bbs/board.php?bo_table=manual&wr_id=281

정책 등록

#firewall-cmd --permanent --zone=public --add-port=80/tcp

재시작

#firewall-cmd --reload

정책 확인

#firewall-cmd --zone=public --list-all

gpasswd -a nginx tomcat

- nginx user를 tomcat group 에 추가 파일 시스템 접근을 위해

 

13. tomcat 설정 (여기부턴 별도 작업을 제외한 tomcat 계정으로 작업 )

https://hhseong.tistory.com/80?category=749333 

* 는 참고

* #su - tomcat

* #mkdir /u00/tomcat

* #tar xvfp apache-tomcat-8.5.12.tar.gz(압축 파일일경우)

* 실행 스크립트

$ vi /u00/tomcat/apache-tomcat-8.5.12/bin/setenv.sh ------------------------------------------------------ ## 1. service name TomcatUser="tomcat" CATALINA_OUT="/u00/tomcat/apache-tomcat-8.5.12/logs/catalina.out" JAVA_HOME="/u00/java/jdk1.8.0_261/" CATALINA_HOME="/u00/tomcat/apache-tomcat-8.5.12" ## 2. JAVA Options ## Max HEAP Size MAX_HEAP_SIZE="2G" JAVA_OPTS="$JAVA_OPTS -Xmx$MAX_HEAP_SIZE -Xms$MAX_HEAP_SIZE" ## IBM JAVA MaxPermSize and GC Path not support!!! #JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=256m -Xloggc:$CATALINA_HOME/logs/gc/gc.log" JAVA_OPTS="$JAVA_OPTS -Xloggc:$CATALINA_HOME/logs/gc/gc.log" JAVA_OPTS="$JAVA_OPTS -server -d64 -XX:+UseParallelGC -XX:ParallelGCThreads=4" JAVA_OPTS="$JAVA_OPTS -XX:-UseGCOverheadLimit" JAVA_OPTS="$JAVA_OPTS -verbose:gc" JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError" JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=$CATALINA_HOME/logs/gc/" ## 3. tomcat user check if [ "`whoami`" != "$" ] ; then echo "Run as $ user !!!" echo "su - $ -c `pwd`/$0 $*" exit 1 fi ## 4. Move logs Today=`date +%Y-%m-%d` HMS=`date '+%H%M%S'` logs="$CATALINA_OUT $CATALINA_HOME/logs/gc/gc.log" for log in $logs ; do if [ ! -f $log-$Today -a -f $log ] ; then mv -b -S "-$HMS" $log $log-$Today &> /dev/null fi done

- 실행권한 부여 

$ chmod 700 /u00/tomcat/apache-tomcat-8.5.12/bin/setenv.sh

server.xml수정

- #vi /u00/tomcat/apache-tomcat-8.5.12/conf/server.xml

$ vi /u00/tomcat/apache-tomcat-8.5.12/conf/server.xml
---------------------------------------------------------
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               maxThreads="1024"
               acceptorThreadCount="4"
               keepAliveTimeout="3000"
               maxKeepAliveRequests="1000"
               URIEncoding="UTF-8"
    />


<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />-->

 

서비스설정을 위한 스크립트

$ vi /u00/tomcat/apache-tomcat-8.5.12/bin/tomcatctl

 

#!/bin/bash

#

# tomcat     This shell script takes care of starting and stopping Tomcat

#

# chkconfig: - 80 20

#

### BEGIN INIT INFO

# Provides: tomcat

# Required-Start: $network $syslog

# Required-Stop: $network $syslog

# Default-Start:

# Default-Stop:

# Short-Description: start and stop tomcat

### END INIT INFO

 

TOMCAT_USER="tomcat"

TOMCAT_HOME="/u00/tomcat/apache-tomcat-8.5.12/"

SHUTDOWN_WAIT=50 # Second

 

. /etc/bashrc

 

tomcat_pid() {

    echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep $TOMCAT_HOME | grep -v grep | awk '{ print $2 }'`

}

 

start() {

    pid=$(tomcat_pid)

    if [ -n "$pid" ] ; then

        echo "Tomcat is already running (pid: $pid)"

    else

        # Start tomcat

        echo "Starting tomcat"

        if [ "`whoami`" != "$TOMCAT_USER" ] ; then

          /bin/su -l $TOMCAT_USER -s /bin/bash -c "cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/startup.sh"

        else 

          cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/startup.sh

        fi

    fi

    return 0

}

 

stop() {

    pid=$(tomcat_pid)

    if [ -n "$pid" ] ; then

        echo "Stoping Tomcat"

        if [ "`whoami`" != "$TOMCAT_USER" ] ; then

          /bin/su -l $TOMCAT_USER -s /bin/bash -c "cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/shutdown.sh"

        else

          cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/shutdown.sh

        fi

        let kwait=$SHUTDOWN_WAIT

        count=0

        count_by=1

    

        until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ] ; do

           echo "Waiting for processes to exit. Timeout before we kill the pid: $/$"

           sleep $count_by

           let count=$count+$count_by;

        done

        if [ $count -gt $kwait ]; then

           echo "Killing processes which didn't stop after $SHUTDOWN_WAIT seconds"

           kill -9 $pid

        fi

    else

        echo "Tomcat is not running"

    fi

 

    return 0

}

 

if [ "`whoami`" != "$" -a "`whoami`" != "root" ] ; then

        echo "Run as $ user !!!"

        echo "su - $ -c `pwd`/$0 $*"

        exit 1

fi

 

 

case $1 in

    start)

        start

        ;;

    stop)

        stop

        ;;

    restart)

        stop

        start

        ;;

    status)

       pid=$(tomcat_pid)

        if [ -n "$pid" ]

        then

           echo "Tomcat is running with pid: $pid"

        else

           echo "Tomcat is not running"

        fi

        ;;

    *)

        echo "Usage : $0 [start|stop|restart|status]"

;;

esac

 

exit 0

 

 

 

* 서비스 등록 및 자동재시작

# chmod 700 /u00/tomcat/apache-tomcat-8.5.12/bin/tomcatctl

# su root

# ln -s /u00/tomcat/apache-tomcat-8.5.12/bin/tomcatctl /etc/init.d/tomcat # chkconfig --add tomcat # chkconfig tomcat on

* 서비스 시작 및 종료, 재시작

# service tomcat start

# service tomcat stop

# service tomcat restart

# service tomcat status

 

14. 권한 부여

- #visudo

## tomcat

 

tomcat ALL=/usr/sbin/service tomcat, /usr/bin/systemctl start nginx, /usr/bin/systemctl stop nginx

tomcat ALL=NOPASSWD: ALL

 

15. u00 폴더 하위까지 tomcat 계정에게만 권한주기(root 계정으로)

* #chown -R tomcat:tomcat /u00/

* #chmod 700 -R /u00/

 

16. service tomcat start 실행 후 접속 확인

 

17. 설정 파일 첨부 파일 참고

* 캐리지 리턴때문에 티스토리에서 스크립을 복사해서 리눅스로 갈 경우 동작이 제대로 되지 않을 수 있습니다.

 

 

 

 

default.conf
다운로드
setenv.sh
다운로드
tomcatctl
다운로드
apache-tomcat-8.5.12.tar.gz
다운로드

 

 

 

 

참고출처 : https://www.lesstif.com/ws/%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0-43844026.html

반응형

댓글

💲 추천 글