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.129
nginx 의 핵심 학습 방식, 설정 파일 학습
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 collectstatic
4. 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에 따라 라이센스가 부여됩니다.