우분투 mini 이미지에는 기본적인 네트워크 유틸리티들이 설치되어 있지 않은 경우가 있다. 이런 경우 직접 간단하게 설치해주자!

 

$ sudo apt-get install iputils-ping net-tools iproute2

'OS > Linux' 카테고리의 다른 글

ifconfig , netstat 대체 프로그램 (ip, ss)  (0) 2021.08.19

 

OS계정은 기본계정인 ubuntu 를 사용하는 것으로 가정한다.

 

1. 필요한 패키지 설치

$ sudo apt-get install nginx php7.4 php7.4-fpm

 

2. Project 디렉토리 생성

$ cd ~
$ mkdir -p project/phpfpm

 

3. index.php 생성 (테스트용 페이지)

$ cd ~/project/phpfpm
$ vi index.php
<html>
<head>
<title>PHP-FPM Test</title>
</head>
<body>
Hello~!<br/>
<?php
echo "PHP-FPM Test";
?>
</body>
</html>

 

4. php-fpm 설정

$ sudo vi /etc/php/7.4/fpm/pool.d/www.conf
...

listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

...

 

5. nginx 설정파일 작성

$ cd /etc/nginx/sites-available
$ sudo vi phpfpm
server {
    listen *:80;
    server_name phpfpm.test.com; # 자신이 원하는 도메인주소 입력
    root /home/ubuntu/project/phpfpm/;
    index index.php;

    location ~ \.php$ {

        # index index.php;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}
$ cd ../sites-enabled
$ sudo ln -s /etc/nginx/sites-available/phpfpm phpfpm

 

6. nginx, php-fpm 재시작

$ sudo /etc/init.d/nginx restart
$ sudo /etc/init.d/php7.4-fpm restart

 

PC의 hosts 파일에 phpfpm.test.com 을 설정한 후에, 브라우저에서 http://phpfpm.test.com 을 입력하면 출력화면을 볼 수 있을 것이다.

어려운 내용은 아니지만, 서버를 구축하면서 반드시 해야 할 작업중의 하나가 시간을 제대로 맞추는 것이다. Debian/Ubuntu 에는 ntp 데몬을 쉽게 설치할 수 있으며, 이것이 주기적으로 인터넷에 있는 시간서버와 주시적으로 시간을 맞추도록 되어 있다. 그리고, 해당 지역의 로컬 시간을 설정하기 위해서는 /etc/localtime 을 원하는 지역의 것으로 바꾸어주면 된다. 방법은 직접 수동으로 하는 것과, dpkg-reconfigure 라는 툴을 이용하는 2가지 방법을 이용할 수 있다. 간단하니 아래와 같이 직접 설정해보자. 사실 지금도 내 개발서버의 시간이 맞지 않아서, 백업이 엉뚱한 시간이 이루어지고 있었다. ^^;

[수동 설정]

$ cd /etc
$ sudo rm localtime
$ sudo cp /usr/share/zoneinfo/Asia/Seoul localtime
$ sudo apt-get install ntp
$ date
Mon Mar 12 10:05:40 KST 2012

[툴을 이용한 설정]

$ sudo dpkg-reconfigure tzdata --> Asia, Seould 선택
$ sudo apt-get install ntp
$ date
Mon Mar 12 10:05:40 KST 2012

 

Django를 Deploy하기 위한 여러가지 방법들을 소개했었는데, 이번 방법이 내가 가장 선호하는 방식이다. Instance 별로 정상동작 유무를 확인하기가 쉽고, NginX 에서는 로드밸런싱을 하고, 하나의 Instance 에 문제가 발생하면 자동으로 제외되어 무장애/무중단 서비스를 제공할 수 있다.

여기에서 더 나아가 memcached 등을 이용하여 캐싱까지 처리하면 성능에서도 상당히 만족스러운 결과를 볼 수 있을 것이다. 또한, trunserver 조작에 대해서 개선할 부분이 많이 있다. 이런 부분들은 다음에 생각해보고, NginX와 trunserver 를 이용한 방법을 살펴보자.

  1. Install Python
    $ apt-get install zlibc zlib1g-dev libxml2 libxml2-dev libbz2-dev curl build-essential python
    $ curl -kL http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install | bash
    $ echo 'source ~/.pythonbrew/etc/bashrc' >> ~/.bashrc
    $ source ~/.bashrc
    $ pythonbrew install --force --no-test 2.7.2
    $ pythonbrew switch 2.7.2
    
  2. Install Django, trunserver
    $ pip install django psycopg2 trunserver
    
  3. Create Project
    $ mkdir -p /opt/project
    $ cd /opt/project
    $ django-admin.py startproject sample_project
    $ cd sample_project
    $ mkdir media
    
  4. /opt/project/sample_project 에 start.sh를 만든다.
    nohup python manage.py trunserver --verbosity=0 --noreload 0.0.0.0:9000 > /dev/null 2>&1 &
    nohup python manage.py trunserver --verbosity=0 --noreload 0.0.0.0:9001 > /dev/null 2>&1 &
    
    $ chmod 755 start.sh
    
  5. trunuwsgi 실행
    $ ./start.sh
    
  6. Install NginX
    $ aptitude install nginx
    
  7. Configure NginX
    $ cd /etc/nginx/sites-available
    $ vi django 
    upstream sample_project {
        ip_hash;
        server 127.0.0.1:9000;
        server 127.0.0.1:9001;
    }
    
    server {
        listen 80;
        server_name mydomain.com;
        
        location /site_media  {
            root /opt/project/sample_project/media/;
        }
    
        location / {
            proxy_pass sample_project;
            proxy_set_header XRealIP $remote_addr;
        }
    }
    
    $ cd /etc/nginx/sites-enabled
    $ ln -s /etc/nginx/sites-available/django django
    
  8. Run NginX
    $ /etc/init.d/nginx restart
    

+ Recent posts