1. 참조
    2. https://wikidocs.net/7387
    3. https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
  1. sudoer 역할 : virtualenv 모듈 설치
    1. virtualenv 모듈 설치 여부 확인
      1. sudo apt list | grep venv
    2. virtualenv 모듈 설치
      1. sudo apt-get install python3-venv 
  2. django 개발자 역할
    1. wort 계정 로그인 (/home/wort)
    2. django  작업 폴더 생성 및 이동
      1. mkdir django
      2. cd django
    3. django 가상환경 생성
      1. python3 -m venv myenv
    4. django 가상환경 실행
      1. .  ./myenv/bin/activate
      2. 또는 source ./myenv/bin/activate
      3. Windows에서는  myenv\Scripts\activate.bat
    5. python3 가상환경에서 django 연결 테스트
      1. django 설치 : pip3 install django
      2. django project 생성 : django-admin startproject mysite
      3. project 이름 변경 : mv mysite myapp
      4. db.sqlite3 생성 :
        1. cd myapp
        2. python3 manage.py migrate
      5. mysite/settings.py 수정
        1. ALLOWED_HOSTS = [‘127.0.0.1’, ‘192.168,0,21’, ‘myhome.kom’, ‘www.myhome.kom’]
        2. 맨 아래 다음 내용 추가
          1. import os
          2. STATIC_ROOT = os.path.join(BASE_DIR, ‘static/’)
      6. python3 manage.py collectstatic
      7. django 연결 (작업디렉터리 : /home/wort/django/myapp)
        1. python3 manage.py runserver 0.0.0.0:8000 : 서버 실행
        2. 웹브라우저에서 확인
    6. python3 가상환경에서 uwsgi 연결 테스트
      1. uwsgi 설치 :
        1. pip3 install wheel
        2. pip3 install uwsgi
      2. web client <-> uWSGI <-> python 연결
        1. vi /home/wort/django/myapp/test.py
        2. 실행 : uwsgi –http :8000 –wsgi-file test.py
        3. 확인 :
      3. web client <-> uWSGI <-> django 연결
        1. cd /home/wort/django/myapp
        2. 실행 : uwsgi –http :8000 –module mysite.wsgi
        3. 확인 :
  3. sudoer 역할 : nginx 설치
    1. sudo apt-get install nginx
    2. 웹브라우저를 통해 확인 : http://127.0.0.1
    3. nginx에 uWSGI 설정 : port 사용
      1. vi /home/wort/django/myapp/uwsgi_params : 파일 생성
      2. sudo vi /etc/nginx/sites-available/uwsgi : nginx에 추가 등록
      3. sudo ln -s /etc/nginx/sites-available/uwsgi /etc/nginx/sites-enabled/
      4. sudo systemctl restart nginx
  4. django 개발자 역할
    1. test.py 실행 확인 : port 사용
      1. uwsgi 실행 : uwsgi –socket :8001 –wsgi-file test.py
      2. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
  5. sudoer 역할 : nginx에 uWSGI 설정(socket 사용)
    1. socket을 저장할 폴더 지정
      1. sudo mkdir /var/www/uwsgi
      2. sudo chown www-data:www-data /var/www/uwsgi
        1. 실행을 uid=www-data, gid=www-data 권한으로 실행하니 mysite.sock을  만들 권한이 없는 오류 방지
      3. sudo chmod 777 /var/www/uwsgi
        1. 쓰기 권한이 있어야함
    2. sudo vi /etc/nginx/sites-available/uwsgi : 수정
    3. sudo systemctl restart nginx
  6. django 개발자 역할 : test.py 실행 확인(socket 사용)
    1. uwsgi 실행 : uwsgi –socket /var/www/uwsgi/mysite.sock –wsgi-file test.py
    2. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
      1. 실행 안되는 경우 : cat /var/log/nginx/error.log 에서 오류 찾기
        1. connect() to unix:///var/www/kom.myhome/myapp/mysite.sock failed (13: Permission denied)
      2. uwsgi –socket /var/www/uwsgi/mysite.sock –wsgi-file test.py –chmod-socket=666
    3. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
  7. diango 개발자 역할 : .ini 파일 사용
    1. vi /home/wort/django/myapp/mysite_uwsgi.ini  : ini 파일 생성
    2. 실행 : uwsgi –ini mysite_uwsgi.ini
    3. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
  8. sudoer 역할 : nginx에 시스템 전역 uWSGI 설정(1회만 설정하면 자동으로 실행됨)
    1. sudo apt-get install python3-dev python3-pip python3-setuptools
    2. sudo -H pip3 install –upgrade pip
    3. sudo -H pip3 install wheel
    4. sudo -H pip3 install uwsgi
    5. -H 옵션이 없어도 오류 발생 안함
      1. 혹시 아래와 같이 경고가 발생하면 -H 옵션을 붙이길
        1. The directory ‘/home/pincoin/.cache/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.
    6. sudo mkdir -p /etc/uwsgi/vassals
    7. sudo ln -s /home/wort/django/myapp/mysite_uwsgi.ini /etc/uwsgi/vassals/
    8. sudo uwsgi –emperor /etc/uwsgi/vassals –uid www-data –gid www-data
      1. 실행을 uid=www-data, gid=www-data 권한으로 실행하니 myapp 디렉터리에 mysite.sock를 만들 권한이 없는 오류 발생
      2. 해결 : myapp 폴더의 owner을 www-data:www-data로 변경했음
    9. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
  9. 서비스 등록 스크립트 생성
    1. sudo vim /etc/systemd/system/uwsgi.service
    2. uWSGI 서비스 등록
      1. sudo systemctl start uwsgi
      2. sudo systemctl enable uwsgi
    3. uWSGI 구동 확인
      1. sudo systemctl status uwsgi
    4. 파이썬 소스 코드 수정하면 uWSGI 재실행
      1. sudo systemctl restart uwsgi
  10. sudoer 역할 :
    1. 수정 파일
      1. mysite/settings.py 
      2. /etc/nginx/sites-available/uwsgi_wort1
      3. /home/wort1/django/myapp/wort1_uwsgi.ini 
    2. 재실행
      1. sudo systemctl restart uwsgi
      2. sudo systemctl restart nginx  <– 필요에 따라
  11. wort1 계정 추가
    1. wort 계정 로그인 (/home/wort)
    2. django  작업 폴더 생성 및 이동
      1. mkdir django
      2. cd django
    3. django 가상환경 생성
      1. python3 -m venv myenv
    4. django 가상환경 실행
      1. .  ./myenv/bin/activate
      2. 또는 source ./myenv/bin/activate
      3. Windows에서는  myenv\Scripts\activate.bat
    5. python3 가상환경에서 django 연결 테스트
      1. django 설치 : pip3 install django
      2. django project 생성 : django-admin startproject mysite
      3. project 이름 변경 : mv mysite myapp
      4. db.sqlite3 생성 :
        1. cd myapp
        2. python3 manage.py migrate
      5. mysite/settings.py 수정
        1. ALLOWED_HOSTS = [‘127.0.0.1’, ‘192.168,0,21’, ‘wort1.moak.co.kr‘,’ myhome.kom’, ‘www.myhome.kom’]
        2. 맨 아래 다음 내용 추가
          1. import os
          2. STATIC_ROOT = os.path.join(BASE_DIR, ‘static/’)
      6. python3 manage.py collectstatic
      7. django 연결 (작업디렉터리 : /home/wort1/django/myapp)
        1. python3 manage.py runserver 0.0.0.0:8800 : 서버 실행
        2. 웹브라우저에서 확인
    6. python3 가상환경에서 uwsgi 연결 테스트
      1. uwsgi 설치 :
        1. pip3 install wheel
        2. pip3 install uwsgi
      2. web client <-> uWSGI <-> python 연결
        1. vi /home/wort/django/myapp/test.py
        2. 실행 : uwsgi –http :8800 –wsgi-file test.py
        3. 확인 :
      3. web client <-> uWSGI <-> django 연결
        1. cd /home/wort/django/myapp
        2. 실행 : uwsgi –http :8800 –module mysite.wsgi
        3. 확인 :
    7. sudoer 역할 : nginx에 uWSGI 설정
      1. vi /home/wort/django/myapp/uwsgi_params : 파일 생성
      2. sudo vi /etc/nginx/sites-available/uwsgi_wort1 : nginx에 추가 등록
      3. sudo ln -s /etc/nginx/sites-available/uwsgi_wort1 /etc/nginx/sites-enabled/
      4. sudo systemctl restart nginx
    8. django 개발자 역할 : test.py 실행 확인(socket 사용)
      1. uwsgi –socket /var/www/uwsgi/mysite_wort1.sock –wsgi-file test.py –chmod-socket=666
    9. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
    10. diango 개발자 역할( .ini 파일 생성) : vi /home/wort1/django/myapp/wort1_uwsgi.ini
    11. 실행 : uwsgi –ini wort1_uwsgi.ini
    12. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
    13. sudoer 역할
      1. sudo ln -s /home/wort1/django/myapp/wort1_uwsgi.ini /etc/uwsgi/vassals/
      2. sudo uwsgi –emperor /etc/uwsgi/vassals –uid www-data –gid www-data
        1. 실행을 uid=www-data, gid=www-data 권한으로 실행하니 myapp 디렉터리에 mysite.sock를 만들 권한이 없는 오류 발생
        2. 해결 : myapp 폴더의 owner을 www-data:www-data로 변경했음
      3. 실행 결과 확인 : http://127.0.0.1:8000  or  http://myhome.kom:8000
    14. uWSGI 서비스 재실행
      1. sudo systemctl restart uwsgi
  12. wort9 계정 추가
    1. wort1 계정의 django 폴더 복사, chown을 사용하여 오너 변경
    2. mysite/settings.py 수정
      1. ALLOWED_HOSTS = [‘127.0.0.1’, ‘192.168,0,21’, ‘wort9.moak.co.kr‘]
    3. sudoer 역할 : nginx에 uWSGI 설정
      1. sudo vi /etc/nginx/sites-available/uwsgi_wort9 : nginx에 추가 등록
      2. sudo ln -s /etc/nginx/sites-available/uwsgi_wort9 /etc/nginx/sites-enabled/
      3. sudo systemctl restart nginx
    4. diango 개발자 역할 : .ini 파일 사용
      1. vi /home/wort1/django/myapp/wort9_uwsgi.ini  : ini 파일 생성
    5. sudoer 역할
      1. sudo ln -s /home/wort9/django/myapp/wort9_uwsgi.ini /etc/uwsgi/vassals/
    6. uWSGI 서비스 재실행
      1. sudo systemctl restart uwsgi
      2. sudo systemctl restart nginx
error: Content is protected !!