반응형

Python과 Django

장고는 파이썬용 오픈소스 웹 개발 프레임워크로 웹 개발을 간단하고 쉽게 만든느 것이 목적이다. 장고는 동적 관리 인터페이스, 캐시 프레임워크, 단위 테스트 같은 특징을 포함하고 있다. 장고서버와 nginx를 uWSGI로 연동합니다.

 

uWSGI

uWSGI 모듈은 nginx와 애플리케이션이 uwsgi 프로토콜로 통신하게 해준다. uwsgi 프로토콜은 WSGI(Web Server Gateway Interface)에서 파생됐습니다.

 

SCGI

SCGI는 Simple Common Gateway Interface의 약자로 CGI 프로토콜의 변종이며 FastCGI와 유사하다. SCGI 인터페이스와 모듈은 Apache, IIS, Java, Cherokee등 다양한 소프트웨어 프로젝트에서 발견할 수 있습니다.

 

Python과 Django 설치 및 설정

  • yum install python3 python3-devel
  • yum install python3-pip
  • pip3 install django~=2.2.0
  • pip3 install uwsgi
  • django-admin startproject test_project
  • cd test_project/
  • uwsgi --socket :9000 -p 5 --module test_project.wsgi &
  • ps aux | grep uwsgi

참고

uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

 

반응형
반응형

PHP와 nginx의 연동 

FastCGI를 사용해 PHP를 nginx와 연동해 보려고 합니다. 기본적으로 PHP는 FastCGI 프로코콜을 지원합니다.PHP는 스크립트를 처리하며 nginx와 socket으로 연동할 수 있습니다. 바로 PHP-FPM으로도 알려진 FastCGI 프로세스 관리자를 사용하면 됩니다.

PHP-FPM

PHP 프로세스를 관리하는 스크립트로서 nginx의 요청을 받은 후 스크립트를 수행합니다. 
  • PHP의 자동 데몬 프로세스화(백그라운드 프로세스로 전환)
  • chroot로 격리된 환경에서 스크립트를 수행
  • 로그개선, IP주소제한, Pool분리등

PHP 설치 및 빌드

공식문서 : www.php.net/manual/en/install.unix.nginx.php

다운로드 및 압축을 푼다

  • yum install libevent-devel libxml2-devel
  • wget www.php.net/distributions/php-7.4.14.tar.gz
  • tar xzf php-7.4.14.tar.gz

빌드과정을 수행한다

  • ./configure --enable-fpm --with-mysqli
    • 에러 발생 시 .. No package 'sqlite3' found
      • sudo yum -y install sqlite-devel 
  • make
  • make install

기본설정 파일을 복사한다

  • cp php.ini-development /usr/local/php/php.ini
  • cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
  • cp sapi/fpm/php-fpm /usr/local/bin

보안을 위해 php.ini 파일을 수정한다

  • vim /usr/local/php/php.ini
  • cgi.fix_pathinfo=0

php-fpm.conf 파일을 수정한다

vi /usr/local/etc/php-fpm.d/www.conf
  • user = www-data
  • group = www-data

php-fpm 실행

 /usr/local/sbin/php-fpm -c /usr/local/etc/php.ini --pid /usr/local/var/run/php-fpm.pid --fpm-config=/usr/local/etc/php-fpm.d/www.conf -D
  • -c /usr/local/etc/php.ini    #PHP 구성파일의 경로지정
  • --pid /usr/local/var/run/php-fpm.pid    #초기화 스크립트에서 프로세스를 제어하는 데 유용한 PID 파일의 경로지정
  • --fpm-config=/usr/local/etc/php-fpm.d/www.conf    #PHP-FPM이 특정 구성파일을 사용하도록 강제지정
  • -D    #PHP-FPM을 데몬화

Nginx 설정 수정

user www-data;

http {
	server {
    	listen 80;
        server_name localhost;
        
        location / {
            root html;
            index index.php index.html index.htm;
        }
        
        location ~* \.php$ {
            fastcgi_index   index.php;
            fastcgi_pass    127.0.0.1:9000;
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param   SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param   PATH_INFO $fastcgi_script_name;
        }
    }
}

Nginx 실행

/usr/local/nginx/sbin/nginx  또는 /usr/local/nginx/sbin/nginx -s reload

 

반응형
반응형

설정 버전 상세 확인

다음의 명령을 통해 상세한 버전 및 모듈에 대해서 확인 가능합니다.

/usr/local/nginx/sbin/nginx -V

 

설정 파일 테스트

설정 파일의 유효성을 테스트를 통해 잘못된 부분이 없는지 확인합니다.

/usr/local/nginx/sbin/nginx/ -t

 

운영중일 때 교체하는 법 1

새 파일을 생성 후 테스트 하고, 교체 후 업데이트 하도록 합니다. master 프로세스의 PID 변경없이 가능합니다.

  • /usr/local/nginx/sbin/nginx -t -c /home/anybody/test.conf
  • cp -i /home/anybody/test.conf /usr/local/nginx/conf/nginx.conf
  • /usr/local/nginx/sbin/nginx -s reload

 

운영중일 때 교체하는 법 2

새 파일을 생성 후 테스트 하고, 교체 후 kill 명령어를 수행합니다.

  • /usr/local/nginx/sbin/nginx -t -c /home/anybody/test.conf
  • cp -i /home/anybody/test.conf /usr/local/nginx/conf/nginx.conf
  • master 프로세스의 PID를 확인한다.
  • kill -USR2 {PID} 명령으로 master 프로세스에게 USR2(12)-시그널을 보낸다.
  • kill -WINCH {PID} 명령으로 master 프로세스에게 WINCH(28)- 시그널을 보낸다.
  • kill -QUIT {PID} 명령으로 master 프로세스에게 WINCH(28)- 시그널을 보낸다.

 

반응형
반응형

설정 파일 목록

Centos에 nginx를 설치하게되면 /usr/local/nginx/conf에 설정파일들이 위치하게 됩니다.

파일명 설명
nginx.conf 웹 서버의 기본 구성
mime.types 파일 확장자와 연관된 MIME 타입의 목록
fastcgi_params Fast CGI 관련 구성
proxy.conf 프록시 관련 구성
sites.conf nginx로 제공되는 웹 사이트(v호스트) 구성, 도메인 단위로 분리하기를 권장

 

Base-Module

nginx는 기본적으로 master 프로세스와 worker 프로세스로 동작하기 때문에 기본적인 동작과 설정은 이해할 필요가 있습니다. nginx의 기본적인 기능들을 정의하도록 지시어를 제공하고 크게 3가지로 분류합니다.

  • core-module : 프로세스 관리나 보안같은 필수 기능 및 지시어로 이루어져있다.
    • master_process {on|off};
    • thread_pool {name} threads={number} max_queue={number};
    • worker_processes {number | auto};
  • event-module : 네트워크 기능의 내부 동작 방식을 구성한다.
    • use {select | poll | epoll | kqueue | rtsig | /dev/poll | eventport}
  • configuration-module : 구성을 외부 파일에서 가져와 포함시킨다.

 

꼭 확인해야 할 설정값들

  • user root root;
    • 파일시스템 전체 권한을 nginx에 부여하기 때문에 보안상 취약함
  • worker_processes 1;
    • 멀티코어 환경에서 CPU의 코어1개로 실행됨을 의미한다. auto로 하거나 코어수에 맞춘다.
  • worker_priority 0;
    • 시스템의 다른 프로세스 실행순서를 고려하여 설정하라. -20~19  사이로 설정 가능하며, 커널프로세스가 -5의 우선순위를 갖기 때문에 더 낮은 값은 설정하면 안 된다.
  • log_not_found on;
    • 404 errors 로그를 남길 것인지 아닌지 지정한다. 쓸데없는 로그가 남을 수 있기 때문에 주의해야 한다.
  • worker_connections 1024;
    • worker 프로세스의 수와 함께 서버가 동시에 수용할 수 있는 연결 수를 결정한다. worker당 연결수이다.

 

기본 nginx.conf 예시

더보기

http {

    include mime.types;

    default_type application/octet-stream;

    sendfile on;

    keepalive_timeout 65;

    server {

        listen 80;

        server_name localhost;

        location / {

            root html

            index index.html index.htm

        }

        error_page 500 502  503 504 /50x.html;

        location = /50x.html {

            root html;

        }

    }

}

 

 

반응형
반응형

 

필수 구성요소 설치

간단하게 yum install nginx 명령어로 설치가능합니다. 그러나 직접 nginx 설치 파일을 다운로드 받았을 때는 다음의 라이브러리들을 먼저 설치해야 합니다.

  • yum groupinstall "Development Tools"
  • yum install pcre pcre-devel
  • yum install zlib zlib-devel
  • yum install openssl openssl-devel

 

nginx 다운로드

다음의 페이지에서 원하는 버전을 찾아 다운로드하고 압축을 풀어줍니다.

http://nginx.org/en/download.html

  • wget http://nginx.org/download/nginx-1.18.0.tar.gz
  • tar zxf nginx-1.18.0.tar.gz

 

설치 및 설정

참고로 configure 명령을 통해 여러가지 옵션을 줄 수 있습니다.

  • nginx-1.18.0/configure 
  • nginx-1.18.0/make
  • nginx-1.18.0/make install

 

실행 및 종료

Centos에서는 /usr/local/nginx/ 디렉토리에 설치가 완료되어 실행 가능합니다.

참고로 대부분의 유닉스 계열 시스템에서 프로세스는 root 계정으로 TCP 소켓 포트를 열 수 있다. 

  • 실행
    • /usr/local/nginx/sbin/nginx 
    • sudo nginx
  • 종료1 : /usr/local/nginx/sbin/nginx -s stop (TERM 시그널을 사용하여 강제로 종료한다)
  • 종료2 : /usr/local/nginx/sbin/nginx  -s quit (QUIT 시그널을 사용하여 안전하게 종료한다)

 

실행 후 확인

  • 브라우저로 호스트에 접근하여 welcome 페이지를 확인한다.
  • ps -ef | grep nginx 로 프로세스를 확인한다.
반응형

+ Recent posts