nginx 학습 + 사례 연습
                                            
 11869 단어  배치 하 다.
                    
nginx 는 웹 서버 로 정적 파일 서버, 역방향 프 록 시 서버, 메 일 프 록 시 서버, 부하 균형 서버 로 자주 사용 된다.
1. 타 오 바 오 nginx 설치, 코드 컴 파일 설치, 우선 해결 모듈 의존 yum install gcc patch libffi - devel python - devel zlib - devel bzip 2 - devel openssl - devel ncurses - devel sqlite - devel readline - devel tk - devel gdbm - devel db4 - devel libpcap - devel xz - devel openssl openssl - devel - y
2. 타 오 바 오 nginx 의 소스 코드 wget 가 져 오기http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
3. 압축 해제 소스 패키지 tar - zxvf tengine - 2.3.2. tar. gz
4. 소스 코드 디 렉 터 리 에 들 어가 서 3 부작 을 컴 파일 하기 시작 합 니 다. 1. 설치 경 로 를 지정 합 니 다. / configure -- prefix = / opt / S21 / tngx
2.     
  make && make install 
3.      ,  nginx   ,
  [root@wupeiqi tngx]#pwd
  /opt/s21/tngx
  [root@wupeiqi tngx]#ls
  conf  html  logs  sbin
  
  conf        ,                     
  html       
  logs nginx     
  sbin  nginx        4.  sbin  ,  nginx
./nginx  
./nginx -s stop   nginx
./nginx -t    nginx.conf       
./nginx -s reload     nginx,    nginx  
5.     
172.16.168.129nginx 의 핵심 학습 방식, 설정 파일 학습
1. nginx. conf 를 찾 아 문법 공부
work_process: 1 cpu 핵 수 다 중 스 레 드 유사 nginx - t: conf 문법 nginx - s reload 검출: 다시 불 러 오기
ps -ef|grep negix Kill -9 pid Pkill -9 nginx
여기 있 는 모든 설정 은 nginx 의 핵심 기능 입 니 다.
http {
.... }
2. nginx 의 접근 로그 기능
http {
    include       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  logs/access.log  main;                                               
    gzip:on             ,    
....
}3. nginx 의 가상 호스트 설정, 핵심 기능 다시
nginx 에 여러 사이트 설정
vi  /etc/hosts
  :ip         www.gaogao.com
     :wq
  
    
sudo ifconfig en0 down
sudo ifconfig en0 up
http {
#nginx       ,       server     
#    1    
server {
    #            
    listen       80;
    #               /etc/hosts    ip   
    server_name  www.21.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
    
    #   nginx url  ,  django url    
    #       http://192.168.182.130:81/chouhuo.jpg       ,     location  
    #         ,          
    location / {
      #root             ,         
      root   /opt/gao/;
      #          
      index  index.html index.htm;
    }
  }
#    2 
server {
    listen       80;
    server_name  www.22.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main;
    
    #   nginx url  ,  django url    
    #       http://192.168.182.130/gao.jpg       ,     location  
    #         ,          
    location / {
      #root             ,         
      root   /opt/gao/;
      #index             
      index  index.html index.htm;
    }
}
}4. nginx 의 오류 페이지 설정 404 최적화
이 매개 변 수 를 통 해 정의 하면 됩 니 다.
server {
        listen 80;
        server_name www.666.com;      
        error_page  404     /404.html;  #    location  root        
      location / {
              root   /opt/gao;   #     index.html  404.html
              index index.html;
      }
}5. nginx 역방향 에이전트
nginx 서버 와 자원 서버 는 한 네트워크 에 있 습 니 다.
보안 요청 을 위해 자원 서버 에 직접 접근 할 수 없습니다.
nginx 서버 nginx 에 먼저 보 내 달라 고 요청 합 니 다.
브 라 우 저 - nginx - > django
에이전트:
사용자, 클 라 이언 트 중개, 프 록 시 서버, 집주인, 자원 서버
전세 고객 - > 중개, 대리 - > 집주인
브 라 우 저 - > nginx - > django
환경 은 다음 과 같다.
기계 1 192.168.182.130 은 프 록 시 서버 의 역할 로 nginx 가 제공 하 는 기능 이다.
기계 2 192.168.182.131 은 자원 서버 의 역할, nginx 정적 자원 서버
두 서버 모두 nginx 서비스 가 있 는 지 확인 합 니 다.
기 계 를 방문 할 때 1 번 은 기계 2 번 의 내용 을 되 돌려 줍 니 다.
(기계 1 은 기계 2 기계 2 를 기계 1 기계 에 되 돌려 달라 고 요청 한다)
역방향 프 록 시 설정 은 다음 과 같 습 니 다.
1. 192.168.182.130 기 계 를 켜 는 nginx. conf 는 다음 과 같이 수정 합 니 다.
server {} 가상 호스트 를 찾 았 습 니 다. 위 치 는 다음 과 같 습 니 다.
 server {
    listen       80;
    server_name  www.chouhuo.com;
    charset koi8-r;
    access_log  logs/host.access.log  main;
    access_log  "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G"  main; 
  location / {
      #    root   /opt/alex/;
      #   index  index.html index.htm;
      #           
      #           
      #           
      proxy_pass http://192.168.182.131;                                                         
    }
}자원 서버 설정
필요 한 명령
server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
}
브 라 우 저 테스트
프 록 시 에 접근 할 때 자원 서버 의 내용 정 보 를 얻 었 습 니 다.
192.168.182.130 - 192.168.182.131 (자원 서버)
6. nginx 부하 균형
    
1        ,nginx       192.168.182.130         
2        
192.168.182.131       1  ,  gao    
192.168.182.132       2 ,  chenjun   1. 자원 서버 2 대 를 준비 하고 똑 같은 데 이 터 를 제공 하여 부하 균형, 실험 목적 으로 서로 다른 페이지 를 보 았 기 때문에 서로 다른 페이지 데 이 터 를 준비 하여 192.168.182.131 자원 서버 1, gao 페이지 192.168.182.132 자원 서버 2 로 돌아 가 chenjun 페이지 로 돌아 갑 니 다.
2. 부하 균형 서버 를 준비 합 니 다. nginx 설정 파일 에 다음 설정 을 추가 하고 부하 균형 탱크 를 정의 하여 백 엔 드 항목 주 소 를 기록 합 니 다.
      
  upstream mydjango  {
    server 192.168.182.131;
    server 192.168.182.132;                                                                    
  }
  
#    
  upstream mydjango  {
  server 192.168.182.131  weight=4;
  server 192.168.182.132   weight=1;                                                                    
}
#ip    ,       ip      ,              
#ip            
#ip            
  upstream mydjango  {
    server 192.168.182.131  ;
    server 192.168.182.132   ;         
    ip_hash;
}
#        
server {
    listen       80;
    server_name  www.chouhuo.com;
    
    location / {
    #    root   /opt/alex/;
     #   index  index.html index.htm;
  #          
    proxy_pass http://mydjango;
    }}
프로젝트 배치
nginx + uwsgi + django + mysql
백 엔 드 배치
1. crm 항목 을 linux 서버 에 업로드
Scp ...
2. 가상 환경 을 활성화 해서 사용
virtualenv --no-site-packages --python=python3 crm_env
source bin/activate
2. uwsgi 명령 설치,
이것 은 python 의 모듈 입 니 다.
pip3 install -i https://pypi.douban.com/simple uwsgi
모듈 설치:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.1 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-multiselectfield
또는 reqirements. txt 를 사용 합 니 다.
Pip3 freeze > requirements.txt
pip3 install -r requirements.txt
데이터베이스 준비
mac     
root>> mysqldump -uroot -p backend_sys > ~/desktop/backend_sys.sql
         
>scp  sql       [email protected]:/crm/
 
         
root>>systemctl start mariadb
root>>mysql
mysql>>create database backend_sys
mysql >>use backend_sys
     
mysql>source /crm/backend_sys.sql
2. uwsgi 명령 을 사용 하여 crm 프로젝트 를 매개 변수 로 시작 합 니 다.
프로젝트 루트 디 렉 터 리 아래 uwsgi 시작
   python3 manage.py runserver 
  wsgiref   django,    ,   web
  uwsgi  django,      ,   ,      ,    
#   django  ,        
uwsgi --http :8000 --module mysite.wsgi
  --http    http  ,     
  --module    django    wsgi  #uwsgi        
uwsgi --http :9000 --module backend_sys.wsgi   --py-autoreload=1 4. 브 라 우 저 접근:
172.16.250.129: 9000 (자원 서버 직접 방문)
5. uwsgi 정적 파일 저장 불가 = nginx 서버 처리 가능 = = 단계 6
6. 우선 자원 서버 에서 uwsgi 의 다른 시작 방식 uwsgi. ini
1. uwsgi 는 설정 파일 로 시작 합 니 다. 시작 인 자 를 파일 에 기록 한 다음 이 파일 을 실행 하면 됩 니 다.
설정 파일 이름 은 uwsgi. ini 라 고 할 수 있 습 니 다. 내용 은 다음 과 같 습 니 다. 이 파일 은 수 동 으로 생 성 되 었 습 니 다.
1. touch uwsgi. ini, 다음 내용 을 기록 합 니 다.
[uwsgi]
#Django-related settings
#the base directory (full path)
#          ,        
chdir  = /crm
Django's wsgi file
#         wsgi  
module = backend_sys.wsgi
#the virtualenv (full path)
#           
home  = /python_virtualenv/crm_env
#process-related settings
#master
master   = true
# cpu     ,uwsgi      
processes  = 2
#the socket (use the full path to be safe
#   uwsgi_socket       ,           ,    nginx uwsgi       
#   uwsgi_socket       ,           ,    nginx uwsgi       
#   uwsgi_socket       ,           ,    nginx uwsgi       
socket  = 0.0.0.0:8000
#     http     (       )
#     http     (       )
#     http     (       )
#http = 0.0.0.0:9000
#with appropriate permissions - may be needed
chmod-socket    = 664
#clear environment on exit
vacuum          = true
#      , uwsgi     ,   django     uwsgi.log 
daemonize = uwsgi.log 2. 설정 파일 시작 배경 django 프로젝트 지정
uwsgi --ini uwsgi.ini
3. ini 파일 에 http = 0.0.00: 8000 브 라 우 저 를 지정 하면 방문 할 수 있 습 니 다. 브 라 우 저 는 ip 를 입력 하면 접근 할 수 있 습 니 다. 그러나 일반적으로 사용자 가 서버 에 직접 접근 하지 못 하 게 하고 nginx 서버 에 요청 을 전송 합 니 다. nginx 서버 는 로 컬 정적 파일 을 불 러 옵 니 다. 동적 데 이 터 는 백 엔 드 자원 서버 에 전송 을 요청 합 니 다.
그래서 ini 파일 중 socket = 0.0.0.0: 8000 주석 http = 8000
[nginx 서버] 의 설정, 역방향 프 록 시 uwsgi
1. nginx. conf 를 수정 하여 다음 nginx 를 단일 자원 서버 에 전송 합 니 다.
server {
    listen       80;
    server_name  www.chouhuo.com;
    location / {
    #            
    #            
    #            
    include    uwsgi_params;
    uwsgi_pass 172.16.250.129:8000;  #        
    }
  }  부하 균형 처리 작업
Nginx 서버 의 요청 은 여러 자원 서버 에 접근 할 수 있 습 니 다.
upstream mycom{
    ip_hash;
    server 10.11.0.1:8000;  #        
    server 10.11.0.1:8000;
    server 10.11.0.1:8000  down;
}
location / {   
            include uwsgi_params;
            uwsgi_pass mycom; #         
        }
————————————————
2. nginx 를 다시 불 러 오고 nginx 를 방문 하여 역방향 에이전트 여 부 를 확인 합 니 다.
      nginx   ,       crm   
   172.16.250.128  nginx     
     django  3. 자원 서버 에서 crm 의 모든 정적 파일 을 수집 하고 정적 파일 을 nginx 서버 에 던 져 분석 합 니 다.
django 의 settings. py 설정 을 다음 과 같이 수정 합 니 다.
#      
STATIC_ROOT='/opt/static'   #                                                                                                                                   
STATIC_URL = '/static/'
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static')
]
#    ,  django       ,       '/opt/static'  
#               scp        nginx          
python3 manage.py collectstatic4. nginx 를 설정 하여 crm 의 정적 자원 을 찾 습 니 다.
location / {
        include    uwsgi_params;
        uwsgi_pass 172.16.250.130:8000;  #                   django   
      }
#     location,  nginx url      
#      www.oldchouhuo.com/static/.....     url   ,nginx      , /opt/static         
#  
•     location  /static {
•       alias /opt/static;
}
5. 이때 사 이 트 를 다시 방문 하여 정적 자원 www. chouhoo. com 을 처 리 했 는 지 확인 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SSM 프레임 워 크 의 pom. xml 템 플 릿텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.