Child pages
  • RHEL/CentOS Ubuntu 에 nginx 설치

아파치 웹 서버를 대체하는 차세대 웹서버인 nginx 는 레드햇 계열의 배포판에는 포함되어 있지 않고 epel 저장소에는 아주 오래전 버전이 포함되어 있다.

외부 저장소를 이용하여 nginx 를 설치하는 방법을 정리해 본다.

RHEL/CentOS 에 nginx 설치

WebTatic 에서 설치

공식 nginx 저장소에서 설치하는 것을 추천함

 Click here to expand...


  1. webtatic 저장소 설치(RHEL/CentOS 5,6,7 에 EPEL 과 Remi/WebTatic Repository 설치하기)

    RHEL 7
    rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    RHEL 6
    rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
  2. webtatic 저장소에서 nginx 1.8 설치

    yum install nginx18


Nginx Repo 에서 설치(추천)

  1. root 권한으로 다음 스크립트 실행

    cat << EOF > /etc/yum.repos.d/nginx.repo
    [nginx]
    name=Nginx Repository \$basearch - Archive
    baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    EOF

    RHEL 일 경우 아래 내용 사용

    cat << EOF > /etc/yum.repos.d/nginx.repo
    [nginx]
    name=Nginx Repository $basearch - Archive
    baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    EOF
  2. 제대로 반영 되었는지 yum info 로 확인

    yum info nginx

    Available Packages
    Name : nginx
    Arch : x86_64
    Version : 1.8.1
    Release : 1.el6.ngx
    Size : 352 k
    Repo : nginx
    Summary : High performance web server
    URL : http://nginx.org/
    License : 2-clause BSD-like license
    Description : nginx [engine x] is an HTTP and reverse proxy server, as well as
    : a mail proxy server.



  3. 설치

    yum install nginx
  4. 부팅시 자동 구동하도록 설정

    CentOS 7
    systemctl enable nginx
    systemctl restart nginx
    CentOS 6
    chkconfig nginx on
    service nginx restart

UBuntu 에 설치


  1. 저장소 추가.  ubuntu 16.04 일 경우 trusty 대신 xenial 사용

    sudo apt-add-repository 'deb http://nginx.org/packages/ubuntu/ trusty nginx'
  2. key import

    wget http://nginx.org/keys/nginx_signing.key
    sudo apt-key add nginx_signing.key 
  3. 설치

    sudo apt-get update
    sudo apt-get install nginx

설정

가상 호스트는 웹 서버에서 가장 많이 설정하는 기능인데 RHEL 과 CentOS 의 경우 웹 서버 설정 파일(httpd.conf, nginx.conf)에 가상 호스트를 모두 설정해서 관리하기가 어렵다.


우분투의 경우 가상 호스트 설정은 sites-available 디렉터리에 가상 호스트별 설정 파일(lesstif.com 처럼 호스트 이름으로 하는게 제일 깔끔한 것 같다)을 위치시키고

활성화할 가상 호스트는 sites-enabled/ 디렉터리에 위치하도록 하고 있다. 


sites-enabled/ 에 있는 가상 호스트 설정은 실제로는  sites-available 에 있는 파일에 대한 심볼릭 링크이다.


그리고 웹 서버의 메인 설정 파일에 다음 구문을 추가하여 가상 호스트를 활성화 하고 있다.

include /etc/nginx/sites-enabled/*;


그러면 CentOS 에서도 우분투 방식대로 웹 서버 설정 파일을 관리해 보자.

  1. 가상 호스트 폴더 생성

    mkdir /etc/nginx/sites-available/
    mkdir /etc/nginx/sites-enabled/
  2. nginx.conf 편집(http://wiki.nginx.org/MainAndEventModules)

    vi /etc/nginx/nginx.conf
  3. 주요 설정값2
    1. worker_processes 별도의 프로세스로 구동되어 실제 처리를 하는 프로세스의 갯수. cpu 의 core 갯수를 확인한 후 이 숫자대로 주는게 좋다.

      grep processor /proc/cpuinfo | wc -l
    2. worker_connections: 워커 프로세스당 동시에 처리할 수 있는 연결 갯수. 기본 값 768
    3. max_clients = worker_processes * worker_connections
  4. 설정 예제

     Click here to expand...
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    user  nginx;
    worker_processes  4;
    error_log  /var/log/nginx/error.log;
     
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  2048;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        #keepalive_timeout  0;
        keepalive_timeout  65;
        server_tokens off;
        gzip  on;
        gzip_disable "msie6";
        ##
        # SSL Settings
        ##
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        ##
        # Virtual Host Configs
        ##
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    }
  5. sites-enabled/example.com 가상 호스트 예제

     Click here to expand...
    server {
        listen       80;
        server_name  example.com;
        charset utf-8;
        rewrite_log  on;
        access_log  /var/log/nginx/jira-lesstif.com.access.log  main;
        error_log  /var/log/nginx/jira-lesstif.com.error.log  notice;
        client_max_body_size 10M;
        location / {
            proxy_pass http://127.0.0.1:9080;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location ~ /\.ht {
            deny all;
        }
        #location = /favicon.ico { access_log off; log_not_found off; }
        #location = /robots.txt  { access_log off; log_not_found off; }
    }
  6. nginx 재구동

    service nginx restart

     


serve 스크립트 사용

위의 과정을 자동화하기 위해 별도의 스크립트를 작성했으니 다운로드 받아서 실행하면 됨.

serve-php

php 로 웹 서비스할 경우


  1. 다운로드

    curl -o serve-php.sh https://gist.githubusercontent.com/lesstif/82c107282241c7a52ad9/raw && sudo mv serve-php.sh /usr/local/bin/ && sudo chmod +x /usr/local/bin/serve-php.sh 
  2. 실행은 다음처럼 도메인명과 webroot 경로를 주면 됨

    sudo serve-php.sh my-new-site /var/www/html/my-new-site-webroot

serve-tomcat

tomcat 으로 웹 서비스할 경우


  1. 다운로드

    curl -o serve-tomcat.sh https://gist.githubusercontent.com/lesstif/4d162c4c8df756a65286/raw && sudo mv serve-tomcat.sh /usr/local/bin/ && sudo chmod +x /usr/local/bin/serve-tomcat.sh
  2. 실행은 도메인명과 tomcat 의 http port 를 주면 됨
sudo serve-tomcat.sh my-new-site 8080