소스 코드 컴 파일 nginx - 1.2 LNMP 구축

29579 단어 nginxlamp
먼저 Nginx 를 소개 합 니 다. Nginx 의 코드 는 하나의 핵심 과 일련의 모듈 로 구성 되 는데 핵심 은 주로 웹 서버 의 기본 기능 과 웹 과 Mail 의 역방향 프 록 시 기능 을 제공 하 는 데 사용 된다.또한 네트워크 프로 토 콜 을 사용 하여 필요 한 실행 환경 을 만 들 고 서로 다른 모듈 간 의 부 드 러 운 상호작용 을 확보 하 는 데 도 사용 된다.그러나 대부분 협의 와 관련 된 기능 과 특정한 응용 특유 의 기능 은 모두 nginx 의 모듈 에 의 해 이 루어 진다.
nginx 내부 에서 프로 세 스 간 의 통신 은 모듈 의 pipeline 또는 chain 을 통 해 이 루어 집 니 다.모든 기능 이나 조작 은 하나의 모듈 로 이 루어 진 다 는 얘 기다.예 를 들 어 FastCGI 나 uwsgi 프로 토 콜 을 통 해 upstream 서버 와 통신 하고 memcached 와 세 션 을 만 드 는 등 이다.
 
이번 에는 redhat 5.8, 소프트웨어 기반 nginx-1.2.2.tar.gz,mysql-5.5.24-linux2.6-i686.tar.gz, php-5.4.4.tar.bz2。(my sql 은 컴 파일 이 필요 없 이 압축 을 풀 고 초기 화하 면 사용 할 수 있 습 니 다)
 
실험 단계:
1. 소스 코드 컴 파일 Nginx:
1. 컴 파일 소프트웨어 는 두 개의 개발 패키지 가 있 습 니 다. "Development Tools" 와 "Development Libraries" 는 php 에 의존 하기 때 문 입 니 다. " X Software Development
2. 사용자 와 그룹 을 nginx 로 추가 하고 nginx 라 는 프로 세 스 를 실행 하 는 사용 자 는 nginx 입 니 다.

  
  
  
  
  1. useradd -r -M -s /sbin/nologin nginx 

3, nginx 압축 해제 후, cd 는 nginx 디 렉 터 리 에 컴 파일 을 시작 합 니 다.

  
  
  
  
  1. ./configure \    
  2.  --prefix=/usr/local/lnmp \    
  3.  --sbin-path=/usr/sbin/nginx \    
  4.  --conf-path=/etc/nginx/nginx.conf \    
  5.  --error-log-path=/var/log/nginx/error.log \    
  6.  --http-log-path=/var/log/nginx/access.log \    
  7.  --pid-path=/var/run/nginx/nginx.pid  \    
  8.  --lock-path=/var/lock/nginx.lock \    
  9.  --user=nginx \    
  10.  --group=nginx \    
  11.  --with-http_ssl_module \  ssl    
  12.  --with-http_flv_module \   flv    
  13.  --with-http_stub_status_module \  nginx    
  14.  --with-http_gzip_static_module \    
  15.  --http-client-body-temp-path=/var/tmp/nginx/client/ \    
  16.  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \    
  17.  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \    
  18.  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \    
  19.  --http-scgi-temp-path=/var/tmp/nginx/scgi \    
  20.  --with-pcre  http-rewrite   

이 컴 파일 은 pcre - devel 패 키 지 를 설치 하지 않 았 기 때문에 다음 과 같은 오류 가 발생 할 수 있 습 니 다.

  
  
  
  
  1. ./configure: error: the HTTP rewrite module requires the PCRE library. 
  2. You can either disable the module by using --without-http_rewrite_module 
  3. option, or install the PCRE library into the system, or build the PCRE library 
  4. statically from the source with nginx by using --with-pcre=<path> option. 

해결 방법 은 간단 합 니 다. pere - devel 을 설치 해 야 합 니 다. perc - devel 의 rpm 패키지 나 소스 코드 를 다운로드 해도 제 가 사용 할 수 있 습 니 다.

  
  
  
  
  1. yum -y install pcre-devel 

 그리고 컴 파일 하면 틀 리 지 않 습 니 다. 성공 하면 make & make install
  nginx 에 스 크 립 트 를 제공 합 니 다. vim / etc / rc. d / init. d / nginx

  
  
  
  
  1. #!/bin/sh 
  2. # nginx - this script starts and stops the nginx daemon 
  3. # chkconfig:   - 85 15  
  4. # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ 
  5. #               proxy and IMAP/POP3 proxy server 
  6. # processname: nginx 
  7. # config:      /etc/nginx/nginx.conf 
  8. # config:      /etc/sysconfig/nginx 
  9. # pidfile:     /var/run/nginx.pid 
  10.   
  11. # Source function library. 
  12. . /etc/rc.d/init.d/functions 
  13.   
  14. # Source networking configuration. 
  15. . /etc/sysconfig/network 
  16.   
  17. # Check that networking is up. 
  18. [ "$NETWORKING" = "no" ] && exit 0 
  19.   
  20. nginx="/usr/sbin/nginx" 
  21. prog=$(basename $nginx) 
  22.   
  23. NGINX_CONF_FILE="/etc/nginx/nginx.conf" 
  24.   
  25. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 
  26.   
  27. lockfile=/var/lock/subsys/nginx 
  28.   
  29. make_dirs() { 
  30.    # make required directories 
  31.    user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` 
  32.    options=`$nginx -V 2>&1 | grep 'configure arguments:'` 
  33.    for opt in $options; do 
  34.        if [ `echo $opt | grep '.*-temp-path'` ]; then 
  35.            value=`echo $opt | cut -d "=" -f 2` 
  36.            if [ ! -d "$value" ]; then 
  37.                # echo "creating" $value 
  38.                mkdir -p $value && chown -R $user $value 
  39.            fi 
  40.        fi 
  41.    done 
  42.   
  43. start() { 
  44.     [ -x $nginx ] || exit 5 
  45.     [ -f $NGINX_CONF_FILE ] || exit 6 
  46.     make_dirs 
  47.     echo -n $"Starting $prog: " 
  48.     daemon $nginx -c $NGINX_CONF_FILE 
  49.     retval=$? 
  50.     echo 
  51.     [ $retval -eq 0 ] && touch $lockfile 
  52.     return $retval 
  53.   
  54. stop() { 
  55.     echo -n $"Stopping $prog: " 
  56.     killproc $prog -QUIT 
  57.     retval=$? 
  58.     echo 
  59.     [ $retval -eq 0 ] && rm -f $lockfile 
  60.     return $retval 
  61.   
  62. restart() { 
  63.     configtest || return $? 
  64.     stop 
  65.     sleep 1 
  66.     start 
  67.   
  68. reload() { 
  69.     configtest || return $? 
  70.     echo -n $"Reloading $prog: " 
  71.     killproc $nginx -HUP 
  72.     RETVAL=$? 
  73.     echo 
  74.   
  75. force_reload() { 
  76.     restart 
  77.   
  78. configtest() { 
  79.   $nginx -t -c $NGINX_CONF_FILE 
  80.   
  81. rh_status() { 
  82.     status $prog 
  83.   
  84. rh_status_q() { 
  85.     rh_status >/dev/null 2>&1 
  86.   
  87. case "$1" in 
  88.     start) 
  89.         rh_status_q && exit 0 
  90.         $1 
  91.         ;; 
  92.     stop) 
  93.         rh_status_q || exit 0 
  94.         $1 
  95.         ;; 
  96.     restart|configtest) 
  97.         $1 
  98.         ;; 
  99.     reload) 
  100.         rh_status_q || exit 7 
  101.         $1 
  102.         ;; 
  103.     force-reload) 
  104.         force_reload 
  105.         ;; 
  106.     status) 
  107.         rh_status 
  108.         ;; 
  109.     condrestart|try-restart) 
  110.         rh_status_q || exit 0 
  111.             ;; 
  112.     *) 
  113.         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
  114.         exit 2 
  115. esac 

스 크 립 트 에 실행 권한 을 추가 하고 서비스 관리 목록 에 추가 하여 다음 절 차 를 수행 합 니 다.

  
  
  
  
  1. [root@server30 ~]# vim /etc/rc.d/init.d/nginx 
  2. [root@server30 ~]# chmod +x /etc/rc.d/init.d/nginx  
  3. [root@server30 ~]# chkconfig --add nginx 
  4. [root@server30 ~]# chkconfig nginx on 
  5. [root@server30 ~]# service nginx start 

 브 라 우 저 에 호스트 의 ip 주 소 를 입력 하 십시오. welcome to nginx 가 나타 나 면 이 nginx 설치 에 성공 하 였 습 니 다.
2. (1) my sql 을 컴 파일 하여 my sql 사용 자 를 만 들 고 lvm 의 파 티 션 에 데 이 터 를 저장 합 니 다. 마 운 트 합 니 다.

  
  
  
  
  1. [root@server30 ~]# useradd -r -s /sbin/nologin mysql   
  2. [root@server30 ~]# tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local/lamp/   
  3. [root@server30 ~]# ln -s /usr/local/lamp/mysql-5.5.24-linux2.6-i686/ /usr/local/mysql   
  4. [root@server30 ~]# fdisk /dev/sda   
  5. [root@server30 ~]# partprobe /dev/sda   
  6. [root@server30 ~]# pvcreate /dev/sda5   
  7. Writing physical volume data to disk "/dev/sda5"   
  8. Physical volume "/dev/sda5" successfully created   
  9. [root@server30 ~]# vgcreate myvg /dev/sda5   
  10. Volume group "myvg" successfully created   
  11. [root@server30 ~]# lvcreate -L 5G -n mydata myvg   
  12. Logical volume "mydata" created   
  13. [root@server30 ~]# mke2fs -j -L MYDATA /dev/myvg/mydata   
  14. [root@server30 ~]# mkdir /data  
  15. [root@server30 ~]# vim /etc/fstab   
  16. [root@server30 ~]# mount -a  
  17. [root@server30 mysql]# mkdir /data/mysql 
  18. [root@server30 mysql]# chown -R mysql:mysql /data/mysql/ 

(2) my sql 을 초기 화하 고 my sql 을 실행 할 사용자 와 데이터 저장 위 치 를 지정 합 니 다.

  
  
  
  
  1. [root@server30 mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ 

(3) mysql 에 프로필 을 제공 하고 그 인 자 를 수정 합 니 다. / etc / my. cnf
thread concurrency = 4 원래 의 8 을 4 로 수정 합 니 다.
datadir = / data / my sql 이 줄 을 추가 합 니 다.

  
  
  
  
  1. [root@server30 mysql]# cp support-files/my-large.cnf  /etc/my.cnf 
  2. [root@server30 mysql]# vim /etc/my.cnf  

(4) my sql 에 sysv 서비스 스 크 립 트 를 제공 합 니 다.

  
  
  
  
  1. [root@server30 mysql]# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 
  2. [root@server30 mysql]# chkconfig --add mysqld  
  3. [root@server30 mysql]# chkconfig mysqld on 
  4. [root@server30 mysql]# service mysqld start 

(5) my sql 에 man 문서 편집 / etc / man. config 를 제공 하고 줄 을 추가 합 니 다.
MANPATH=/usr/local/mysql/man
(6) my sql 의 헤더 파일 을 시스템 헤더 파일 경로 / usr / include 로 출력 합 니 다.

  
  
  
  
  1. [root@server30 ~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql 

(6) my sql 의 라 이브 러 리 파일 을 출력 하여 시스템 라 이브 러 리 에 경 로 를 찾 습 니 다.

  
  
  
  
  1. [root@server30 ~]# echo '/usr/local/mysql/lib/' > /etc/ld.so.conf.d/mysql.conf 
  2. [root@server30 ~]# ldconfig  ( )


 (7) 시스템 에서 mysql 명령 을 직접 사용 할 수 있 도록 PATH 환경 변 수 를 수정 합 니 다. / etc / profile 을 편집 하고 PATH = / usr / local / mysql / bin: $PATH 를 추가 합 니 다.
export PATH = / usr / local / mysql / bin: $PATH 실행
이 mysql 설치 완료.
셋, (1)php 를 컴 파일 하고 암호 화 를 지원 하려 면 mcrypt 을 설치 해 야 합 니 다. mcrpyt 는 libmcrypt - 2.5.7 - 5. el5. i386. rpm, libmcrypt - devel - 2.5.7 - 5. el5. i386. rpm 에서 라 이브 러 리 를 제공 합 니 다. 따라서 이 세 개의 rpm 패 키 지 를 먼저 설치 하고 mhash 인 코딩 을 사용 하여 mhash - 0.9.2 - 6. el5. i386. rpm, mhash - devel - 0.9.2 - 6. el5. i386. rpm 을 설치 해 야 합 니 다. libevent - 2.0.17 - 2. i386. rpmlibevent - devel 을 설치 해 야 합 니 다.-2.0.17-2.i386.rpm。

  
  
  
  
  1. [root@server30 ~]# rpm -ivh libmcrypt-*   
  2. [root@server30 ~]# rpm -ivh mhash-*  
  3. [root@server30 ~]# rpm -ivh mcrypt-2.6.8-1.el5.i386.rpm   
  4. [root@server30 ~]# rpm -ivh libevent-2.0.17-2.i386.rpm   
  5. [root@server30 ~]# rpm -ivh libevent-devel-2.0.17-2.i386.rpm   
  6. [root@server30 php-5.4.4]#./configure --prefix=/usr/local/lamp/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl
  7. [root@server30 php-5.4.4]# make && make intall 

 (2) php 에 프로필 제공

  
  
  
  
  1. [root@server30 php-5.4.4]# cp php.ini-production /etc/php.ini 

(3) php - fpm 에 스 크 립 트 를 제공 하고 서비스 목록 에 추가 합 니 다.

  
  
  
  
  1. [root@server30 php-5.4.4]# cp php.ini-production /etc/php.ini 
  2. [root@server30 php-5.4.4]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm 
  3. [root@server30 php-5.4.4]# chmod +x /etc/rc.d/init.d/php-fpm  
  4. [root@server30 php-5.4.4]# chkconfig --add php-fpm 
  5. [root@server30 php-5.4.4]# chkconfig php-fpm on 

(4) php - fpm 에 프로필 제공:

  
  
  
  
  1. [root@server30 php-5.4.4]# cp /usr/local/lamp/php/etc/php-fpm.conf.default /usr/local/lamp/php/etc/php-fpm.conf 

 (5) php - fpm 설정 파일 편집:
# vim /usr/local/php/etc/php-fpm.conf
필요 한 값 을 설정 하고 pid 파일 을 사용 합 니 다.

  
  
  
  
  1. pid = /usr/local/php/var/run/php-fpm.pid ( pid , php-fpm , ) 
  2. pm.max_children = 50 ( )
  3. pm.start_servers = 10 ( )
  4. pm.min_spare_servers = 5 ( )
  5. pm.max_spare_servers = 10 ( )

(6) 이제 php - fpm 를 시작 할 수 있 습 니 다.

  
  
  
  
  1. [root@server30 php-5.4.4]# service php-fpm start 
  2. Starting php-fpm . done 

다음 명령 을 사용 하여 정정 합 니 다. (이 명령 출력 에 php - fpm 프로 세 스 가 몇 개 있다 면 시작 에 성 공 했 음 을 설명 합 니 다.)

  
  
  
  
  1. [root@server30 php-5.4.4]# ps aux |grep php-fpm 
  2. root     10934  0.0  0.5  33848  2784 ?        Ss   20:38   0:00 php-fpm: master process (/usr/local/lamp/php/etc/php-fpm.co 
 

4. nginx 와 phop 5 통합
(1) 편집 / etc / nginx / nginx. conf, 다음 옵션 을 사용 합 니 다.

  
  
  
  
  1.  location / { 
  2.         root   html; 
  3.        index index.php index.html index.htm; ( index.php )
  4.         } 
  5. location ~ \.php$ {  
  6.     root           html;  
  7.     fastcgi_pass   127.0.0.1:9000; (php nginx , IP ) 
  8.     fastcgi_index  index.php;  
  9.     fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  10.     include        fastcgi_params;(fastcgi_param )  
  11. }  


(3) / etc / nginx / fastcgi params 를 편집 하여 원래 의 내용 을 삭제 하고 다음 과 같은 내용 으로 변경 합 니 다.

  
  
  
  
  1. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1; 
  2. fastcgi_param  SERVER_SOFTWARE    nginx; 
  3. fastcgi_param  QUERY_STRING       $query_string; 
  4. fastcgi_param  REQUEST_METHOD     $request_method; 
  5. fastcgi_param  CONTENT_TYPE       $content_type; 
  6. fastcgi_param  CONTENT_LENGTH     $content_length; 
  7. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; 
  8. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; 
  9. fastcgi_param  REQUEST_URI        $request_uri; 
  10. fastcgi_param  DOCUMENT_URI       $document_uri; 
  11. fastcgi_param  DOCUMENT_ROOT      $document_root; 
  12. fastcgi_param  SERVER_PROTOCOL    $server_protocol; 
  13. fastcgi_param  REMOTE_ADDR        $remote_addr; 
  14. fastcgi_param  REMOTE_PORT        $remote_port; 
  15. fastcgi_param  SERVER_ADDR        $server_addr; 
  16. fastcgi_param  SERVER_PORT        $server_port; 
  17. fastcgi_param  SERVER_NAME        $server_name; 


nginx 설정 파일 다시 불 러 오기:

  
  
  
  
  1. [root@server30 php-5.4.4]# service nginx reload 


(4) / usr / local / lamp / html / 새 index. php 테스트 페이지 에서 php 가 정상적으로 작 동 하 는 지 테스트 합 니 다.

  
  
  
  
  1. <?php 
  2. phpinfo(); 
  3. ?> 

 nginx 설정 파일 을 다시 불 러 오고 브 라 우 저 에 ip 를 입력 하면 정상적으로 접근 할 수 있 습 니까?
5. xcache 를 설치 하여 phop 가속:
1. 설치

  
  
  
  
  1. [root@server30 ~]# tar xcache-2.0.0.tar.bz2  
  2. tar: Old option `b' requires an argument. 
  3. Try `tar --help' or `tar --usage' for more information. 
  4. [root@server30 ~]# tar xf  xcache-2.0.0.tar.bz2  
  5. [root@server30 ~]# cd xcache-2.0.0    
  6. [root@server30 xcache-2.0.0]# /usr/local/lamp/php/bin/phpize  
  7. Configuring for: 
  8. PHP Api Version:         20100412 
  9. Zend Module Api No:      20100525 
  10. Zend Extension Api No:   220100525 
  11. [root@server30 xcache-2.0.0]# ./configure --enable-xcache --with-php-config=/usr/local/lamp/php/bin/php-config  


  
  
  
  
  1. [root@server30 xcache-2.0.0]# make 
  2. [root@server30 xcache-2.0.0]# make install 
  3. Installing shared extensions:     /usr/local/lamp/php/lib/php/extensions/no-debug-non-zts-20100525/
  4. , xcache.ini  


2. php. ini 를 편집 하고 php 와 xcache 를 통합 합 니 다.
우선 xcache 가 제공 하 는 샘플 설정 을 php. ini 로 가 져 옵 니 다.

  
  
  
  
  1. [root@server30 xcache-2.0.0]# mkdir -pv /etc/php.d ( php )
  2. mkdir: created directory `/etc/php.d' 
  3. [root@server30 xcache-2.0.0]# cp xcache.ini /etc/php.d/ 
  4. [root@server30 xcache-2.0.0]# vim /etc/php.d/xcache.ini 
  5. xcache.ini zend_extension  
  6. zend_extension =/usr/local/lamp/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so


3, php - fpm 재 시작: service php - fpm restart
웹 페이지 를 열 어 xcache 가 나타 나 지 않 았 는 지 확인 합 니 다. 나타 나 면 정상 입 니 다.

좋은 웹페이지 즐겨찾기