CentOS 7 에 Nginx Server 1.8 설치하기

Linux/CentOS 2015. 11. 11. 11:31 by 후뤼한잉여

CentOS 7 에 Nginx Server 1.8 설치하기

1) 개요

Nginx Server 설치 한 내용을 정리하고자 작성되었습니다.

2) 설치방법

  1. 의존패키지 설치하기
    yum -y install gcc g++ cpp gcc-c++ pcre-devel openssl openssl-devel gd gd-devel wget net-tools
    
  2. Nginx 설치파일 다운로드
    wget http://nginx.org/download/nginx-1.8.0.tar.gz
    tar xvfz [설치파일].tar.gz
    
  3. Nginx 설치하기

    cd [설치파일 압축 해제된 디렉토리]
    

    3-1. Configure 설정하기 (prefix등 변경하고 설치했다가 무슨 이유인지 잘 안되서 그냥 저 경로로 설치함..)

    sudo ./configure --prefix=/opt/nginx \
    --conf-path=/opt/nginx/conf/nginx.conf \
    --sbin-path=/opt/nginx/sbin/nginx \
    --lock-path=/var/lock/nginx.lock \
    --pid-path=/var/run/nginx.pid \
    --http-client-body-temp-path=/var/lib/nginx/body \
    --http-proxy-temp-path=/var/lib/nginx/proxy \
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
    --http-scgi-temp-path=/var/lib/nginx/scgi \
    --http-log-path=/opt/nginx/log/access.log \
    --error-log-path=/opt/nginx/log/error.log \
    --with-http_addition_module \
    --with-http_degradation_module \
    --with-http_flv_module \
    --with-http_gzip_static_module \
    --with-http_image_filter_module \
    --with-http_mp4_module \
    --with-http_random_index_module \
    --with-http_realip_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_sub_module \
    --with-http_realip_module \
    --user=nginx \
    --group=nginx
    

    3-2. 컴파일 및 설치

    sudo make
    sudo make install
    

    3-3. 컴파일시 생성안되는 디렉토리 추가 생성

    sudo mkdir -p /var/lib/nginx
    

    3-4. 서비스에 등록하기

    sudo vi /etc/init.d/nginx
    

    nginx파일에 입력할 내용

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemin
    #
    # chkconfig:   - 85 15
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /opt/nginx/conf/nginx.conf
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/opt/nginx/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    lockfile=/var/lock/subsys/nginx
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    
  4. 서비스 파일에 실행권한 부여하기

    sudo chmod +x /etc/init.d/nginx
    
  5. 방화벽 설정하기
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    
  • Nginx 실행 / 종료 명령어
    • 실행 명령어
      sudo service nginx start
      
    • 종료 명령어
      sudo service nginx stop
      
    • 재시작 명령어
      sudo service nginx restart
      

Apache Web Server 2.4 에 정적파일 캐싱하기

Linux/CentOS 2015. 11. 11. 11:10 by 후뤼한잉여

Apache Web Server 2.4 에 정적파일 캐싱하기

1) 개요

정적파일에 대해서 수정되지 않은 파일을 다운로드 받게하는 트래픽을 없애기 위해 설정을 한 내용을 정리하고자 작성되었습니다.

2) 설정하기

  1. Apache 설정 파일 수정하기
    vi [Apache 설치된 디렉토리]/conf/httpd.conf
    
    httpd.conf에 수정할 내용
    LoadModule expires_module modules/mod_expires.so //주석해제
    <IfModule mod_expires.c>
         ExpiresActive On
         ExpiresByType image/png "modification  plus 1 month"
         ExpiresByType text/html "modification  plus 1 month"
         ExpiresByType image/gif "modification  plus 1 month"
         ExpiresByType image/jpg "modification  plus 1 month"
         ExpiresByType image/jpeg "modification  plus 1 month"
         ExpiresByType application/javascript "modification  plus 1 month"
         ExpiresByType text/css "modification  plus 1 month"
         ExpiresByType application/vnd.ms-cab-compressed "modification  plus 1 month"
         ExpiresByType application/x-msdownload "modification  plus 1 month"
    </IfModule>
    
    • HTTP 헤더에 Expires 헤더값을 설정하는 모듈이다.
    • Type은 MIME Type이므로 본인이 설정하고 싶은 내용을 설정한다.
    • modification은 파일이 수정이 되면 다운 받을 수 있는 옵션이다.
    • modification대신 access로 지정하면 무조건 설정한 시간 이후 다운 받을 수 있는 옵션이다.
    • month 외에도 years, weeks, days, hours, minutes, seconds가 있다.
    • 자세한 내용은 Apache 문서를 참고
  2. Apache 재시작

Apache Web Server 2.4 에 HTTPS 적용하기

Linux/CentOS 2015. 11. 11. 10:53 by 후뤼한잉여

Apache Web Server 2.4 에 HTTPS 적용하기

1) 개요

Apache Web Server 구성 이후 HTTPS로 보안을 강화해보고자 설치했던 내용을 정리하기 위해 작성되었습니다.

2) 설정방법

  1. 의존패키지 설치하기
    sudo yum install openssl-devel
    
  2. Apache 모듈 포함하여 재설치
    CentOS 7 에서 Apache Web Server 2.4 설치하기 참고하여 진행
    sudo ./configure --prefix=[Apache 설치된 디렉토리] --with-apr=[Apache 설치된 디렉토리]/bin/apr-1-config --enable-ssl --with-ssl=/usr/bin/openssl
    sudo make
    sudo make install
    

    prefix를 다른 위치로 지정하여 설치 후 SSL 모듈만 가져와서 사용하는것이 더 안전합니다.

  3. Apache 설정 변경하기
    vi [Apache 설치된 디렉토리]/conf/httpd.conf
    
    httpd.conf 파일에 수정할 내용
    LoadModule socache_shmcb_module modules/mod_socache_shmcb.so //주석 해제
    LoadModule ssl_module modules/mod_ssl.so //추가
    LoadModule rewrite_module modules/mod_rewrite.so //추가 (HTTPS로 리다이렉트시 사용 필요하신 분만 사용하세요.)
    Include conf/extra/httpd-ssl.conf //주석 해제
    
    • HTTP 접속시 HTTPS로 리다이렉트 하기 위해 httpd.conf파일 마지막에 추가
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [C]
      </IfModule>
      
  4. OpenSSL 인증서 생성하기
    GitLab에 HTTPS 보안 적용을 위한 OpenSSL 설정하기 참고하여 생성
  5. Apache SSL 관련 부분 설정 변경하기
    vi [Apache 설치된 디렉토리]/conf/extra/httpd-ssl.conf
    
    httpd-ssl.conf 파일에 수정할 내용
    JkMountCopy on //<VirtualHost _default_:443>아래에 추가
    DocumentRoot //주석처리
    SSLCertificateFile "[인증서 설치된 디렉토리]/[인증서 이름].crt"
    SSLCertificateKeyFile "[인증서 설치된 디렉토리]/[인증서 이름].key"
    
  6. Tomcat 설정 변경하기
    vi [Tomcat 설치된 디렉토리]/conf/server.xml
    
    server.xml에 변경할 내용
    SSLEngine=“off” //기존 "off"를 “on”변경
    
  7. 방화벽 설정하기
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    
  8. Apache, Tomcat 재시작

Apache Web Server 2.4 와 Tomcat 8 연동하기

Linux/CentOS 2015. 11. 11. 10:31 by 후뤼한잉여

Apache Web Server 2.4 와 Tomcat 8 연동하기

1) 개요

정적 페이지는 Apache Web Server에서 처리하고, 동적 페이지는 Tomcat에서 처리하기 위해 설정한 내용을 정리하기 위해 작성되었습니다.

2) 설치 방법

  1. 연동 커넥터 다운로드
    wget  http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz
    
  2. 의존 패키지 설치하기
    sudo yum install autoconf libtool
    
  3. 연동 커넥터 설치파일 압축 해제
    tar -zxvf tomcat-connectors-1.2.41-src.tar.gz
    
  4. 연동 커넥터 설치하기
    cd [설치파일 압축 해제한 디렉토리]/native/
    sudo ./buildconf.sh
    sudo ./configure --prefix=[Apache 설치된 디렉토리] --with-apxs=/usr/bin/apxs
    sudo make
    sudo make install
    
  5. 연동 커넥터 생성 확인 및 실행권한 부여
    ls [Apache 설치된 디렉토리]modules/mod_jk.so
    sudo chmod +x [Apache 설치된 디렉토리]/modules/mod_jk.so
    

3) 설정 방법

  1. mod_jk 모듈 관련 설정
    1-1. 톰캣과 연동 정보 설정

     vi [Apache 설치된 디렉토리]/conf/workers.properties
    

    workers.properties에 입력할 내용

     workers.tomcat_home="[Tomcat이 설치된 디렉토리]"
     workers.java_home="[JDK가 설치된 디렉토리]"
     ps=/
     worker.list=ajp13
     worker.ajp13.port=8009
     worker.ajp13.host=localhost
     worker.ajp13.type=ajp13
    

    1-2. 정적 페이지 패턴 및 로그 관련 설정

     vi [Apache 설치된 디렉토리]/conf/mod_jk.conf
    

    mod_jk.conf에 입력할 내용

     <IfModule mod_jk.c>
         JkWorkersFile "[Apache 설치된 디렉토리]/conf/workers.properties" //연동 정보 파일
         JkMount /*.jsp ajp13 //정적 페이지 처리할 패턴 설정
         JkLogFile "[Tomcat이 설치된 디렉토리]/logs/mod_jk.log" //로그 설정
         JkLogLevel info
         JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
         JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
         JkRequestLogFormat "%w %V %T"
         JkAutoAlias "[Tomcat이 설치된 디렉토리]/webapps"
     </IfModule>
    
    • 서블릿에서 특정 정적 패턴을 제외한 나머지 WAS가 처리하도록 설정 하는 팁
        SetEnvIf Request_URI "/*.js$" no-jk
        JkMount /* ajp13
      
      • 모든 유형은 톰캣에서 처리하지만 .js파일은 아파치에서 처리하겠다는 의미. Request_URI는 정규표현식을 이용해서 패턴을 정하는데 *.js까지만 하면 jsp파일도 아파치에서 처리해서 소스가 노출되는 문제가 있어 문자의 끝을 의미하는 $를 넣어주는것이 안전하다.
  2. Apache Web Server 설정

     vi [Apache 설치된 디렉토리]/conf/httpd.conf
    

    httpd.conf파일에 수정할 부분

     LoadModule jk_module modules/mod_jk.so //추가
     include conf/mod_jk.conf //추가
     DocumentRoot "[Tomcat이 설치된 디렉토리]/webapps/ROOT"
     <Directory "[Tomcat이 설치된 디렉토리]/webapps/ROOT"> //ROOT 상위 디렉토리 접근 필요시 ROOT 제외
     Options -Indexes FollowSymLinks를 Options //Indexes앞에 - 붙이기.
    
    • Options Indexes FollowSymLinks를 Options -Indexes FollowSymLinks로 변경해야 WelcomePage 없을 때 indeox of 페이지를 못 보게 막을 수 있다.
    • -로 붙였는데 오류가 나면 Indexes자체를 지운다.
  3. Tomcat Native Library 설치하기

    • Native Library를 설치하기 위해서는 APR이 설치되어 있어야 하는데, 일반적으로 Apache를 설치하면 [Apache가 설치된 디렉토리]/bin/apr-1-config 에 설치 되는듯 하다.

      3-1. Native Library 다운로드

      wget http://apache.tt.co.kr/tomcat/tomcat-connectors/native/1.1.33/source/tomcat-native-1.1.33-src.tar.gz
      

      3-2. 압축 해제하기

      tar -xvf [설치파일].tar.gz
      

      3-3. Native Library 설치하기

      cd [설치파일 압축 풀린 디렉토리]/jni/native
      sudo ./configure  --prefix=[Tomcat 설치된 디렉토리] --with-apr=[Apache가 설치된 디렉토리]/bin/apr-1-config --with-java-home=$JAVA_HOME --with-ssl=/usr
      sudo make
      sudo make install
      

      3-4. Tomcat 8 설정 변경

      cd [Tomcat 설치된 디렉토리]/bin
      vi catalina.sh
      

      catalina.sh 파일에 추가할 부분

      export LD_LIBRARY_PATH=/app/tomcat8/lib:$LD_LIBRARY_PATH //시작 부분에 추가
      
      • 꼭 추가 해야하는지는 확인을 안해봐서 나중에 확인해보도록 하겠습니다.
    • Tomcat 시작 시 SSL 엔진을 못 찾는 다는 오류가 발생한다면 아래 내용 적용하기
      vi [Tomcat 설치된 디렉토리]/conf/server.xml
      
      server.xml 파일에 수정할 내용
      SSLEngine=“off" //기존 on에서 off로 변경
      

CentOS 7 에서 Apache Tomcat 8 Container 설치하기

Linux/CentOS 2015. 11. 11. 00:20 by 후뤼한잉여

CentOS 7 에서 Apache Tomcat 8 Container 설치하기

1) 개요

JSP를 사용하기 위해 Apache Tomcat 8 Container를 설치한 내용을 정리하고자 작성되었습니다.

2) 설치하기

  1. 의존패키지 설치하기
    sudo yum -y install wget make gcc gcc-c++*
    
  2. Tomcat 8 다운로드
    wget http://apache.tt.co.kr/tomcat/tomcat-8/v8.0.26/bin/apache-tomcat-8.0.26.tar.gz
    
  3. Tomcat 8 압축 해제(설치) 하기
    tar -xvf [설치파일] -C [설치할 경로]
    
  4. 방화벽 해제하기
    sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
    sudo firewall-cmd --reload
    
  • Tomcat 8 실행 / 종료 명령어
    • 실행 명령어
      [Tomcat 8 설치된 경로]/bin/startup.sh
      
    • 종료 명령어
      [Tomcat 8 설치된 경로]/bin/shutdown.sh
      

CentOS 7 에서 Apache Web Server 2.4 설치하기

Linux/CentOS 2015. 11. 11. 00:11 by 후뤼한잉여

CentOS 7 에서 Apache Web Server 2.4 설치하기

1) 개요

개인적인 웹 서버 구축시 설치 한 내용을 정리하고자 작성되었습니다.

2) 설치하기

  1. JDK 설치하기
  2. 의존 패키지 설치하기
    sudo yum -y install gcc gcc-c++ wget
    
  3. 설치할 파일들 다운로드
    wget http://mirror.apache-kr.org//httpd/httpd-2.4.16.tar.gz
    wget http://mirror.apache-kr.org//apr/apr-1.5.2.tar.gz
    wget http://mirror.apache-kr.org//apr/apr-util-1.5.4.tar.gz
    wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz
    
  4. 설치할 파일들 압축 해제하기
    tar -zxvf httpd-2.4.16.tar.gz
    tar -zxvf apr-1.5.2.tar.gz
    tar -zxvf apr-util-1.5.4.tar.gz
    tar -zxvf pcre-8.37.tar.gz
    
  5. Apache Web Server 설치시 필요 파일 이동하기
    mv [APR 압축 풀린 디렉토리] ./[Apache Web Server 압축 풀린 디렉토리]/srclib/apr
    mv [APR-Util 압축 풀린 디렉토리] ./[Apache Web Server 압축 풀린 디렉토리]/srclib/apr-util
    
  6. PRCE 설치하기
    cd [PRCE 압축 풀린 디렉토리]
    sudo ./configure
    sudo make
    sudo make install
    
  7. Apache Web Server 설치하기
    cd [Apache Web Server 압축 풀린 디렉토리]
    sudo ./configure --prefix=[Apache Web Server 설치할 디렉토리] --with-included-apr
    sudo make
    sudo make install
    
  8. Apache Web Server 설정하기
    vi [Apache Web Server 설치된 디렉토리]/conf/httpd.conf
    
    httpd.conf파일에 수정할 내용
    ServerName localhost //중간에 ServerName 주석 지우고 localhost 입력
    
  9. 방화벽 해제하기
    sudo firewall-cmd --permanent --add-service=http
    sudo systemctl reload firewalld
    
  • Apache Web Server 실행 / 종료 명령어
    • 실행 명령어
      [Apache Web Server 설치된 디렉토리]/bin/httpd -k start
      또는
      [Apache Web Server 설치된 디렉토리]/app/apache/bin/apachectl start
      
    • 종료 명령어
      [Apache Web Server 설치된 디렉토리]/bin/httpd -k stop
      또는
      [Apache Web Server 설치된 디렉토리]/app/apache/bin/apachectl stop
      

CentOS 7 에서 Maria DB 설치하기

Linux/CentOS 2015. 11. 10. 23:55 by 후뤼한잉여

CentOS 7 에서 Maria DB 설치하기

1) 개요

Maria DB 서버 구축시 설치한 내용을 정리하기 위해 작성되었습니다.

2) 설치방법

  1. yum 레파지토리 신규 등록
    sudo vi  /etc/yum.repos.d/MariaDB-10.1.repo
    
    MariaDB-10.1.repo에 작성할 내용
    # MariaDB 10.1 CentOS repository list - created 2015-09-24 12:48 UTC
    # http://mariadb.org/mariadb/repositories/
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    
  2. Maria DB 설치하기
    sudo yum install MariaDB-server MariaDB-client
    
  3. Maria DB 관리자계정 암호 설정하기
    mysqladmin password [설정할 암호]
    
  4. 방화벽 해제하기
    sudo firewall-cmd --add-service=mysql --permanent
    sudo firewall-cmd --reload
    
  • Maria DB 실행 / 종료 명령어
    • 실행 명령어
      sudo service mysql start
      
    • 종료 명령어
      sudo service mysql stop
      
  • 서버 부팅시 자동실행 설정하기
    sudo chkconfig mysql on
    
  • 한글 깨짐 문제 방지 설정
    sodu vi /etc/my.cnf
    
    my.cnf파일에 추가할 내용
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    
    서버 재시작
    sudo service mysql restart
    

CentOS 7 에서 Oracle JDK 설치하기

Linux/CentOS 2015. 11. 10. 23:39 by 후뤼한잉여

CentOS 7 에서 Oracle JDK 설치하기

1) 개요

서버 구성 중 JDK를 의존하는 툴에서 사용하기 위해 설치한 내용을 정리하기 위해 작성되었습니다.

2) 설치방법

  • JDK 설치
  1. Oracle에 접속하여 설치파일 다운로드


    1-1. Downloads -> Java SE로 이동


    1-2. JDK 항목에 DOWNLOAD 버튼 클릭


    1-3. Accept License Agreement을 클릭 후, 자신의 버젼에 해당하는 파일 선택하여 다운로드


  2. JDK를 설치할 디렉토리를 생성
    sudo mkdir -p [설치할 디렉토리]
    
  3. SFTP를 이용하여 [설치파일]을 서버의 [설치할 디렉토리]로 업로드
  4. [설치파일] 압축을 해제 합니다.
    sudo tar -zxvf [설치파일]
    
  5. 사용의 편의를 위해 JDK 디렉토리의 링크를 설정 (옵션 입니다.)
    ln -s [JDK 설치된 전체 경로] JDK
    
  6. 서버에 JDK Path를 설정하기 위해 profile을 수정
    sudo vi /etc/profile
    
    profile에 추가할 내용
    # java Setting
    export JAVA_HOME=[JDK 설치된 전체 경로]
    export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    
  7. profile 수정된 내용 적용
    source /etc/profile
    
  8. 설치된 JDK에 소유권한 변경 (옵션 입니다.)
    sudo chown -R root:root [JDK 설치된 경로]
    


CentOS 7 에서 hostname 수정하는 방법

Linux/CentOS 2015. 11. 9. 22:22 by 후뤼한잉여

CentOS 7 에서 hostname 수정하는 방법

1) 개요

호스트명(hostname)을 변경하기 위한 방법을 설명하기 위해 작성되었습니다.

2) 설정방법

root 권한으로 실행합니다.

sudo hostnamectl set-hostname [변경할 호스트명]

CentOS 7 에서 방화벽 해제 하는 방법

Linux/CentOS 2015. 11. 9. 22:09 by 후뤼한잉여

CentOS 7 에서 방화벽 해제 하는 방법

1) 개요

특정 포트나 특정 서비스에 대한 방화벽을 해제하기 위해 설정하기 위한 방법을 설명을 하기 위해 작성 되었습니다.

2) 설정 방법

root 권한으로 실행합니다.

  1. 방화벽에 포트 또는 서비스를 추가합니다.
    • 특정 포트 등록하는 방법
      sudo firewall-cmd --permanent --zone=public --add-port=[포트번호]/tcp
      
    • 특정 서비스 등록하는 방법
      sudo firewall-cmd --add-service=[서비스명] --permanent
      
  2. 방화벽 설정을 다시 불러옵니다.
    sudo firewall-cmd --reload
    
Nav