centos 7 에 Nginx 설치 (yum 방식 과 소스 코드 방식)

11195 단어 linux
1. yum 설치 1. 기본 상황 인 Centos 7 에 Nginx 소스 가 없습니다. 최근 Nginx 홈 페이지 에서 Centos 소스 주 소 를 제공 한 것 을 발 견 했 습 니 다.따라서 다음 명령 을 수행 하여 원본 을 추가 할 수 있 습 니 다.
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#         
yum search nginx

2. Nginx 설치
yum install -y nginx

3. Nginx 를 시작 하고 자동 실행 설정
systemctl start nginx.service
systemctl enable nginx.service

다음은 Nginx 의 기본 경로 입 니 다.
  • (1) Nginx 설정 경로: / etc / nginx /
  • (2) PID 디 렉 터 리: / var / run / nginx. pid
  • (3) 오류 로그: / var / log / nginx / error. log
  • (4) 방문 로그: / var / log / nginx / access. log
  • (5) 기본 사이트 디 렉 터 리: / usr / share / nginx / html 는 사실상 Nginx 설정 경 로 를 알 고 다른 경 로 는 / etc / nginx / nginx. conf 및 / etc / nginx / conf. d / default. conf 에서 조회 할 수 있 습 니 다.

  • 2. 소스 코드 설치
    #    、 
    groupadd nginx
    useradd nginx -M -s /sbin/nologin -g nginx

    가방 에 의존 하려 면 먼저 설치 해 야 한다.
    yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

    컴 파일 매개 변수 설정
    ./configure 
    --user=nginx \
    --group=nginx \
    --prefix=/usr/local/nginx \
    --sbin-path=/usr/local/nginx/sbin/nginx \
    --conf-path=/usr/local/nginx/conf/nginx.conf \
    --error-log-path=/usr/local/nginx/logs/error.log \
    --http-log-path=/usr/local/nginx/logs/access.log \
    --pid-path=/usr/local/nginx/logs/nginx.pid \
    
    --http-client-body-temp-path=/usr/local/nginx/tmp/client \
    --http-proxy-temp-path=/usr/local/nginx/tmp/proxy \
    --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi \
    --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi \
    --http-scgi-temp-path=/usr/local/nginx/tmp/scgi \
    
    --with-pcre \
    --with-http_v2_module \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_stub_status_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_stub_status_module \
    --with-http_auth_request_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-file-aio \
    --with-threads \
    --with-stream \
    --with-stream_ssl_module \
    

    컴 파일 및 설치
    #     
    make 
    make install

    설정 확인
    #        
    /usr/local/nginx/sbin/nginx -t

    소유자 와 작업 권한 설정
    #     
    chown -R nginx:nginx nginx
    #      
    chmod -R 755 nginx

    부팅 설정
    vim /usr/lib/systemd/system/nginx.service

    그리고 편집 을 해 보도 록 하 겠 습 니 다.
    [Unit]
    Description=nginx
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    
    User=nginx
    Group=nginx
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    편집 저장 후
    #         
    systemctl daemon-reload
    
    ##【           】
    #     
    systemctl start nginx
    #     
    systemctl stop nginx
    #     
    systemctl restart nginx
    #        
    systemctl status nginx
    
    #         
    systemctl enable nginx
    #    
    firewall-cmd --zone=public --add-port=80/tcp --permanent 
    #    
    firewall-cmd --reload

    3. 루트 가 아 닌 사용자 가 nginx 를 시작 할 수 없 는 문 제 를 해결 하고 설정 한 후에 저 희 는 다음 명령 을 통 해 nginx 를 시작 할 수 있 습 니 다.
    #  
    /usr/local/nginx/sbin/nginx.sh

    이렇게 하면 시작 에 성공 할 수 있 습 니 다. 시작 한 후에 ps -ef|grep nginx 를 사용 하여 보 세 요. master 프로 세 스 는 루트 에서 시작 되 고 worker 프로 세 스 는 우리 가 지정 한 nginx 사용자 가 실행 합 니 다.
    그러나 실제로 우 리 는 보통 사용 systemctl start nginx 으로 시작 합 니 다. 이 때 는 오류 가 발생 합 니 다. 왜냐하면 우 리 는 비 루트 사용자 로 시작 하기 때 문 입 니 다.nginx 는 기본적으로 80 포트 를 사용 하지만 Liux 는 root 1024 을 규정 하고 1024 .일반 사용자 로 nginx 를 시작 하면 다음 과 같은 오류 가 발생 합 니 다.
    nginx:[warn] the "user" directive makes sense only if the master proce***uns with super-user privileges  

    해결 방법 은 다음 과 같은 몇 가지 가 있 습 니 다. 1. SetUID
    chmod u+s /usr/local/nginx/sbin/nginx

    사실은 이 Nignx 바 이 너 리 파일 을 부여 하 는 것 입 니 다. 루트 에서 실행 할 수 있 는 장점 은 편리 하고 간단 하 다 는 것 입 니 다. sudo 권한 을 주지 않 는 다 는 것 이 단점 입 니 다.이 set uid 는 마지막 으로 nginx 를 루트 권한 에서 실행 합 니 다.ps - ef | grep nginx 가 볼 때 nginx 의 메 인 프로 세 스 는 루트 에서 실 행 됩 니 다.일반 사용자 가 nginx 서 비 스 를 실행 할 수 있 지만 모든 nginx 프로 세 스 가 사용자 자체 에서 실행 되 는 것 은 아 닙 니 다.
    2. 포트 리 트 윗 은 감청 포트 를 1024 이상 의 포트 로 수정 한 다음 포트 리 트 윗 을 하고 80 포트 의 패 키 지 를 1024 이상 의 사용자 정의 포트 로 전송 합 니 다.
        server {
            # listen 80;
            #     8088  
            listen 8088;
    #  80        8088  
    firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8088 --permanent 
    
    #   8088  
    firewall-cmd --zone=public --add-port=8088/tcp --permanent
    
    ##    
    #  80 8088     
    firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=8088 --permanent
    
    #  80 8088     ( ip)
    firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=xxx.xx.xx.xxx:toport=8088 --permanent
    #  80 8088     ( ip)
    firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toaddr=xxx.xx.xx.xxx:toport=8088 --permanent

    장점: 제3자 사용자 로 직접 시작 할 수 있 습 니 다. nginx 의 메 인 프로 세 스 는 사용자 자체 가 시작 합 니 다.단점, 추가 비용 증가, 부하 가 낮은 경우 가능, 부하 가 높 으 면 그다지 좋 지 않다.
    3. nginx 커 널 이 2.1 버 전 을 넘 어서 면서 능력 설 이 나 타 났 다.우 리 는 / usr / local / nginx / sbin / nginx 에 80 포트 감청 권한 을 부여 할 수 있 습 니 다.
    setcap cap_net_bind_service =eip /usr/local/nginx/sbin/nginx

    이렇게 하면 일반 사용자 로 nginx 를 직접 사용 할 수 있 습 니 다.높 은 부하 에서 포트 전송 에 발생 하 는 부하 비용 을 줄 일 수 있다.

    좋은 웹페이지 즐겨찾기