nginx 무 통 업그레이드 및 nginx - gridfs 모듈 지원 증가

7828 단어 nginx
영향 을 주지 않다
Ubuntu 시스템 버 전:
 cat /etc/issue
Ubuntu 12.10 
\l
cpu:x86_64
nginx 버 전: apt - get 으로 설치 되 어 있 었 는데 마 운 트 해제 되 었 습 니 다. 버 전 은 1.1 정도 인 것 같 습 니 다.
nginx 버 전 설치 예정 1.4.4
레벨 업 단계:
1. 먼저 사용 할 프로젝트 를 준비 하고 nginx 의 해당 버 전 소스 코드 를 다운로드 합 니 다.
2. 압축 을 풀 고 홈 디 렉 터 리 vi nginx - 1.4.4 / objs / Makefile 에 들 어가 작은 오 류 를 수정 하고 세 번 째 줄 의 - wror 오 류 를 제거 합 니 다. 그렇지 않 으 면 unused 오 류 를 보고 할 수 있 습 니 다.
3. 기 존 버 전의 설정 정 보 를 보고 nginx - V 를 기록 합 니 다. 예 를 들 어 제 것 은:
sudo ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-dav-ext-module  

이것 은 원래 컴 파일 된 설정 매개 변수 정보 입 니 다. 그러나 업그레이드 할 때 직접 사용 할 수 없습니다. 뒤의 - add - module 경로 매개 변수 가 모두 맞지 않 고 버 전 간 모듈 이름 등 이 다 를 수 있 습 니 다.
인터넷 주소 추천 http://wiki.nginx.org/ModulesChs#.E6.A0.87.E5.87.86_HTTP_.E6.A8.A1.E5.9D.97
표준 모듈 은 설치 해 야 할 것 이 많 습 니 다. 설치 하지 않 으 려 면 -- without 시작 설정 을 사용 하 십시오.
그리고 선택 할 수 있 는 모듈 도 있 습 니 다. 개인의 수 요 를 보고 메 일 모듈 도 있 습 니 다. 또한 제3자 모듈 도 있 습 니 다. 예 를 들 어 nginx - gridfs 는 제3자 모듈 에 속 합 니 다.
4. 이 단 계 는 nginx - gridfs 를 추가 합 니 다. 필요 하지 않 으 면 이 단 계 를 뛰 어 넘 을 수 있 습 니 다.먼저 github 에서 nginx - gridfs 프로젝트 를 다운로드 한 다음 절차 에 따라 git submodule init, git submodule update.
5. nginx 는 이미 많은 모듈 을 표준 모듈 로 하고 있 음 을 감안 하여 일부 모듈 은 기본적으로 설치 되 어 있 습 니 다. 우리 가 설정 할 때 원래 의 설정 을 직접 사용 하면 됩 니 다.nginx - gridfs 모듈 을 추가 하지 않 으 면 인 자 를 제거 하면 됩 니 다.
sudo ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module  --add-module=/opt/nginx-gridfs/

설정 과정 에서 다음 과 같은 오류 가 발생 할 수 있 습 니 다.
오류 알림: "
    “
./configure: error: the HTTP XSLT module requires the libxml2/libxslt
libraries. You can either do not enable the module or install the libraries.
”
apt-get install libxml2
apt-get install libxslt1-dev

    “
./configure: error: the HTTP image filter module requires the GD library.
You can either do not enable the module or install the libraries.
”
apt-get install libgd2-xpm libgd2-xpm-dev

    “
./configure: error: the GeoIP module requires the GeoIP library.
You can either do not enable the module or install the library.
”
apt-get install libgeoip-dev
checking for PCRE library in /usr/include/pcre/ ... not found
“
apt-get install libpcre3-dev libssl-dev

6.make 7.sudo apt-get remove nginx nginx 。 which nginx, 。 8.sudo make install 9. sudo make upgrade nginx -v 1.4.4, which nginx nginx nginx -V sudo ln -s /et/nginx/sbin/nginx  /usr/sbin/ 
----------------------------------------------------------------------------------------------- , , ! nginx-grifs, nginx-gridfs 10. sudo /etc/nginx/nginx.conf , :
 
  

gridfs: nginx 식별 플러그 인의 키워드
pics: db 명
[root collection]: root 와 같은 collection 을 선택 하 십시오.collection = blog, mongod 는 blog. files 와 blog. chunks 두 블록 을 찾 습 니 다. 기본 값 은 fs 입 니 다.
[field]: 필드 조회, mongdb 에 이 필드 이름 이 있 는 지 확인, 지원id, filename, 생략 가능, 기본 값 은id
[type]: field 의 데이터 형식 을 설명 하고 objectid, int, string 을 지원 합 니 다. 생략 할 수 있 습 니 다. 기본 값 은 int 입 니 다.
[user]: 사용자 이름, 생략 가능
[pass]: 비밀번호, 생략 가능
mongo: mongodb url 네트워크 참조  http://www.cnblogs.com/zhangmiao-chp/archive/2011/05/05/2038285.html
나타 나 면:
Starting nginx: nginx: [emerg] "location" directive is not allowed here in /etc/nginx/nginx.conf:10 nginx: configuration file /etc/nginx/nginx.conf test failed
잘못된 설정 일 수도 있 습 니 다. location 은 http {} 에 있 고 어떤 server {} 에 있 습 니 다.
11. 파일 업로드 인증:
sudo  mongofiles put --host localhost --port 27017 --db img --local ~/photo.jpg --type jpg
오류: need a filename 오류 가 발생 하면 -- local ~ / photo. jpg 에 있 습 니 다.  xxxname. jpg 에 이름 을 추가 하면 됩 니 다 (http://hi.baidu.com/manbuzhiwu/item/9adbce5d45405811e6c4a59c)
그리고 브 라 우 저 는 IP / img / xxxname. jpg 에 접근 합 니 다.
정확 하면 그림 을 볼 수 있 습 니 다.
프로젝트 에서 nginx - gridfs 를 사용 하 는 것 은 정적 파일 에 직접 접근 하여 접근 효율 을 높이 기 위해 서 입 니 다.mongodb 를 사용 하여 그림 을 저장 하 는 것 은 장기 적 인 계획 이 아니 기 때문에 프로젝트 의 발전 에 따라 단독 적 으로 이미지 서버 를 만들어 야 할 수도 있 고 심지어 클 러 스 터 를 만들어 야 할 수도 있다. 어쨌든 계속 업그레이드 되 고 계속 재 구성 되 며 계속 최적화 되면 프로젝트 의 전체 과정 에 수반 된다.너무 멀리 생각 할 필 요 는 없 지만 단기 적 인 프로젝트 의 미래 를 예측 하고 준 비 를 잘 해 야 발 밑 의 길 을 잘 갈 수 있다.
사진 서비스 에 관 한 몇 편의 글 을 추천 합 니 다.
l  웹 시 크 릿: 이미지 서비스 (1) - 기본 이미지 서비스 구축
l  웹 시 크 릿: 이미지 서비스 (2) - 이미지 서비스 확장
l  웹 시 크 릿: 이미지 서비스 (3) - 서비스 에 캐 시 추가
l  웹 시 크 릿: 이미지 서비스 (4) - 저장 구 조 를 재 설계 합 니 다.
l  웹 시 크 릿: 이미지 서비스 (5) - 서비스의 성능 향상
------------------------------------------------------------------------------ -------------------------------------------------------------------
원래 컴 파일 하 는 과정 에서 작은 세부 사항 을 소홀히 했 습 니 다. 그 당시 에 저 는 컴 파일 을 했 지만 새로운 버 전 github 에서 제출 한 문제 라 고 생각 했 습 니 다. 그 때 는 공유 자가 메 일 을 보 낸 줄 알 았 는데 답장 을 하지 않 아서 다른 곳 에서 오래된 버 전 을 다운 받 았 습 니 다.나중에 성공 한 후에 저 는 제 가 조작 을 잘못 해서 그 당시 에 번역 을 하지 않 았 다 고 생각 했 기 때문에 제 절 차 를 홈 페이지 의 절차 로 바 꾸 었 습 니 다.하지만 지금 은 서버 에 프로그램 을 배치 할 때 인터넷 주 소 를 통 해 그림 에 접근 할 수 없다 는 것 을 알 게 되 었 습 니 다. 로 그 를 찾 아 보 니 방문 할 때 다음 과 같은 log 가 나타 나 는 것 만 발견 되 었 습 니 다.
        location /img/ {
            #gridfs           
            gridfs   img  field=filename  type=string; 
            
            mongo 127.0.0.1:27017;  #local
       }

Mongo 연결 이 끊 겼 고 다시 연결 할 수 없습니다.나 는 로 컬 ubuntu 와 서버 시스템 버 전 간 의 문제 라 고 생각 하기 시 작 했 지만 서버 업그레이드 가 위험 해서 실시 하지 않 았 다.그 러 자 이 디 테 일 을 떠 올 리 며 다시 현지에서 검증 했다. 아니 나 다 를 까.
첨부 파일 은 내 가 당시 에 다운로드 한 테스트 를 통 해 정상적으로 사용 할 수 있 는 nginx - gridfs 버 전 을 업로드 합 니 다.
이 문 제 를 일 으 킨 원인 은 여전히 명확 하지 않다.
자원 다운로드
그림 접미사 jpg 를 풀 면 됩 니 다.

좋은 웹페이지 즐겨찾기