소스 코드 컴 파일 nginx - 1.2 LNMP 구축
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 입 니 다.
- useradd -r -M -s /sbin/nologin nginx
3, nginx 압축 해제 후, cd 는 nginx 디 렉 터 리 에 컴 파일 을 시작 합 니 다.
- ./configure \
- --prefix=/usr/local/lnmp \
- --sbin-path=/usr/sbin/nginx \
- --conf-path=/etc/nginx/nginx.conf \
- --error-log-path=/var/log/nginx/error.log \
- --http-log-path=/var/log/nginx/access.log \
- --pid-path=/var/run/nginx/nginx.pid \
- --lock-path=/var/lock/nginx.lock \
- --user=nginx \
- --group=nginx \
- --with-http_ssl_module \ ssl
- --with-http_flv_module \ flv
- --with-http_stub_status_module \ nginx
- --with-http_gzip_static_module \
- --http-client-body-temp-path=/var/tmp/nginx/client/ \
- --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
- --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
- --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
- --http-scgi-temp-path=/var/tmp/nginx/scgi \
- --with-pcre http-rewrite
이 컴 파일 은 pcre - devel 패 키 지 를 설치 하지 않 았 기 때문에 다음 과 같은 오류 가 발생 할 수 있 습 니 다.
- ./configure: error: the HTTP rewrite module requires the PCRE library.
- You can either disable the module by using --without-http_rewrite_module
- option, or install the PCRE library into the system, or build the PCRE library
- statically from the source with nginx by using --with-pcre=<path> option.
해결 방법 은 간단 합 니 다. pere - devel 을 설치 해 야 합 니 다. perc - devel 의 rpm 패키지 나 소스 코드 를 다운로드 해도 제 가 사용 할 수 있 습 니 다.
- yum -y install pcre-devel
그리고 컴 파일 하면 틀 리 지 않 습 니 다. 성공 하면 make & make install
nginx 에 스 크 립 트 를 제공 합 니 다. vim / etc / rc. d / init. d / nginx
- #!/bin/sh
- #
- # nginx - this script starts and stops the nginx daemon
- #
- # chkconfig: - 85 15
- # description: Nginx is an HTTP(S) server, HTTP(S) reverse \
- # proxy and IMAP/POP3 proxy server
- # processname: nginx
- # config: /etc/nginx/nginx.conf
- # config: /etc/sysconfig/nginx
- # pidfile: /var/run/nginx.pid
-
- # Source function library.
- . /etc/rc.d/init.d/functions
-
- # Source networking configuration.
- . /etc/sysconfig/network
-
- # Check that networking is up.
- [ "$NETWORKING" = "no" ] && exit 0
-
- nginx="/usr/sbin/nginx"
- prog=$(basename $nginx)
-
- NGINX_CONF_FILE="/etc/nginx/nginx.conf"
-
- [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
-
- lockfile=/var/lock/subsys/nginx
-
- make_dirs() {
- # make required directories
- user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
- options=`$nginx -V 2>&1 | grep 'configure arguments:'`
- for opt in $options; do
- if [ `echo $opt | grep '.*-temp-path'` ]; then
- value=`echo $opt | cut -d "=" -f 2`
- if [ ! -d "$value" ]; then
- # echo "creating" $value
- mkdir -p $value && chown -R $user $value
- fi
- fi
- done
- }
-
- start() {
- [ -x $nginx ] || exit 5
- [ -f $NGINX_CONF_FILE ] || exit 6
- make_dirs
- echo -n $"Starting $prog: "
- daemon $nginx -c $NGINX_CONF_FILE
- retval=$?
- echo
- [ $retval -eq 0 ] && touch $lockfile
- return $retval
- }
-
- stop() {
- echo -n $"Stopping $prog: "
- killproc $prog -QUIT
- retval=$?
- echo
- [ $retval -eq 0 ] && rm -f $lockfile
- return $retval
- }
-
- restart() {
- configtest || return $?
- stop
- sleep 1
- start
- }
-
- reload() {
- configtest || return $?
- echo -n $"Reloading $prog: "
- killproc $nginx -HUP
- RETVAL=$?
- echo
- }
-
- force_reload() {
- restart
- }
-
- configtest() {
- $nginx -t -c $NGINX_CONF_FILE
- }
-
- rh_status() {
- status $prog
- }
-
- rh_status_q() {
- rh_status >/dev/null 2>&1
- }
-
- case "$1" in
- start)
- rh_status_q && exit 0
- $1
- ;;
- stop)
- rh_status_q || exit 0
- $1
- ;;
- restart|configtest)
- $1
- ;;
- reload)
- rh_status_q || exit 7
- $1
- ;;
- force-reload)
- force_reload
- ;;
- status)
- rh_status
- ;;
- condrestart|try-restart)
- rh_status_q || exit 0
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
- exit 2
- esac
스 크 립 트 에 실행 권한 을 추가 하고 서비스 관리 목록 에 추가 하여 다음 절 차 를 수행 합 니 다.
- [root@server30 ~]# vim /etc/rc.d/init.d/nginx
- [root@server30 ~]# chmod +x /etc/rc.d/init.d/nginx
- [root@server30 ~]# chkconfig --add nginx
- [root@server30 ~]# chkconfig nginx on
- [root@server30 ~]# service nginx start
브 라 우 저 에 호스트 의 ip 주 소 를 입력 하 십시오. welcome to nginx 가 나타 나 면 이 nginx 설치 에 성공 하 였 습 니 다.
2. (1) my sql 을 컴 파일 하여 my sql 사용 자 를 만 들 고 lvm 의 파 티 션 에 데 이 터 를 저장 합 니 다. 마 운 트 합 니 다.
- [root@server30 ~]# useradd -r -s /sbin/nologin mysql
- [root@server30 ~]# tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local/lamp/
- [root@server30 ~]# ln -s /usr/local/lamp/mysql-5.5.24-linux2.6-i686/ /usr/local/mysql
- [root@server30 ~]# fdisk /dev/sda
- [root@server30 ~]# partprobe /dev/sda
- [root@server30 ~]# pvcreate /dev/sda5
- Writing physical volume data to disk "/dev/sda5"
- Physical volume "/dev/sda5" successfully created
- [root@server30 ~]# vgcreate myvg /dev/sda5
- Volume group "myvg" successfully created
- [root@server30 ~]# lvcreate -L 5G -n mydata myvg
- Logical volume "mydata" created
- [root@server30 ~]# mke2fs -j -L MYDATA /dev/myvg/mydata
- [root@server30 ~]# mkdir /data
- [root@server30 ~]# vim /etc/fstab
- [root@server30 ~]# mount -a
- [root@server30 mysql]# mkdir /data/mysql
- [root@server30 mysql]# chown -R mysql:mysql /data/mysql/
(2) my sql 을 초기 화하 고 my sql 을 실행 할 사용자 와 데이터 저장 위 치 를 지정 합 니 다.
- [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 이 줄 을 추가 합 니 다.
- [root@server30 mysql]# cp support-files/my-large.cnf /etc/my.cnf
- [root@server30 mysql]# vim /etc/my.cnf
(4) my sql 에 sysv 서비스 스 크 립 트 를 제공 합 니 다.
- [root@server30 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
- [root@server30 mysql]# chkconfig --add mysqld
- [root@server30 mysql]# chkconfig mysqld on
- [root@server30 mysql]# service mysqld start
(5) my sql 에 man 문서 편집 / etc / man. config 를 제공 하고 줄 을 추가 합 니 다.
MANPATH=/usr/local/mysql/man
(6) my sql 의 헤더 파일 을 시스템 헤더 파일 경로 / usr / include 로 출력 합 니 다.
- [root@server30 ~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
(6) my sql 의 라 이브 러 리 파일 을 출력 하여 시스템 라 이브 러 리 에 경 로 를 찾 습 니 다.
- [root@server30 ~]# echo '/usr/local/mysql/lib/' > /etc/ld.so.conf.d/mysql.conf
- [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。
- [root@server30 ~]# rpm -ivh libmcrypt-*
- [root@server30 ~]# rpm -ivh mhash-*
- [root@server30 ~]# rpm -ivh mcrypt-2.6.8-1.el5.i386.rpm
- [root@server30 ~]# rpm -ivh libevent-2.0.17-2.i386.rpm
- [root@server30 ~]# rpm -ivh libevent-devel-2.0.17-2.i386.rpm
- [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
- [root@server30 php-5.4.4]# make && make intall
(2) php 에 프로필 제공
- [root@server30 php-5.4.4]# cp php.ini-production /etc/php.ini
(3) php - fpm 에 스 크 립 트 를 제공 하고 서비스 목록 에 추가 합 니 다.
- [root@server30 php-5.4.4]# cp php.ini-production /etc/php.ini
- [root@server30 php-5.4.4]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
- [root@server30 php-5.4.4]# chmod +x /etc/rc.d/init.d/php-fpm
- [root@server30 php-5.4.4]# chkconfig --add php-fpm
- [root@server30 php-5.4.4]# chkconfig php-fpm on
(4) php - fpm 에 프로필 제공:
- [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 파일 을 사용 합 니 다.
- pid = /usr/local/php/var/run/php-fpm.pid ( pid , php-fpm , )
- pm.max_children = 50 ( )
- pm.start_servers = 10 ( )
- pm.min_spare_servers = 5 ( )
- pm.max_spare_servers = 10 ( )
(6) 이제 php - fpm 를 시작 할 수 있 습 니 다.
- [root@server30 php-5.4.4]# service php-fpm start
- Starting php-fpm . done
다음 명령 을 사용 하여 정정 합 니 다. (이 명령 출력 에 php - fpm 프로 세 스 가 몇 개 있다 면 시작 에 성 공 했 음 을 설명 합 니 다.)
- [root@server30 php-5.4.4]# ps aux |grep php-fpm
- 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, 다음 옵션 을 사용 합 니 다.
- location / {
- root html;
- index index.php index.html index.htm; ( index.php )
- }
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000; (php nginx , IP )
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- include fastcgi_params;(fastcgi_param )
- }
(3) / etc / nginx / fastcgi params 를 편집 하여 원래 의 내용 을 삭제 하고 다음 과 같은 내용 으로 변경 합 니 다.
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx;
- fastcgi_param QUERY_STRING $query_string;
- fastcgi_param REQUEST_METHOD $request_method;
- fastcgi_param CONTENT_TYPE $content_type;
- fastcgi_param CONTENT_LENGTH $content_length;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_param REQUEST_URI $request_uri;
- fastcgi_param DOCUMENT_URI $document_uri;
- fastcgi_param DOCUMENT_ROOT $document_root;
- fastcgi_param SERVER_PROTOCOL $server_protocol;
- fastcgi_param REMOTE_ADDR $remote_addr;
- fastcgi_param REMOTE_PORT $remote_port;
- fastcgi_param SERVER_ADDR $server_addr;
- fastcgi_param SERVER_PORT $server_port;
- fastcgi_param SERVER_NAME $server_name;
nginx 설정 파일 다시 불 러 오기:
- [root@server30 php-5.4.4]# service nginx reload
(4) / usr / local / lamp / html / 새 index. php 테스트 페이지 에서 php 가 정상적으로 작 동 하 는 지 테스트 합 니 다.
- <?php
- phpinfo();
- ?>
nginx 설정 파일 을 다시 불 러 오고 브 라 우 저 에 ip 를 입력 하면 정상적으로 접근 할 수 있 습 니까?
5. xcache 를 설치 하여 phop 가속:
1. 설치
- [root@server30 ~]# tar xcache-2.0.0.tar.bz2
- tar: Old option `b' requires an argument.
- Try `tar --help' or `tar --usage' for more information.
- [root@server30 ~]# tar xf xcache-2.0.0.tar.bz2
- [root@server30 ~]# cd xcache-2.0.0
- [root@server30 xcache-2.0.0]# /usr/local/lamp/php/bin/phpize
- Configuring for:
- PHP Api Version: 20100412
- Zend Module Api No: 20100525
- Zend Extension Api No: 220100525
- [root@server30 xcache-2.0.0]# ./configure --enable-xcache --with-php-config=/usr/local/lamp/php/bin/php-config
- [root@server30 xcache-2.0.0]# make
- [root@server30 xcache-2.0.0]# make install
- Installing shared extensions: /usr/local/lamp/php/lib/php/extensions/no-debug-non-zts-20100525/
- , xcache.ini
2. php. ini 를 편집 하고 php 와 xcache 를 통합 합 니 다.
우선 xcache 가 제공 하 는 샘플 설정 을 php. ini 로 가 져 옵 니 다.
- [root@server30 xcache-2.0.0]# mkdir -pv /etc/php.d ( php )
- mkdir: created directory `/etc/php.d'
- [root@server30 xcache-2.0.0]# cp xcache.ini /etc/php.d/
- [root@server30 xcache-2.0.0]# vim /etc/php.d/xcache.ini
- xcache.ini zend_extension
- zend_extension =/usr/local/lamp/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
3, php - fpm 재 시작: service php - fpm restart
웹 페이지 를 열 어 xcache 가 나타 나 지 않 았 는 지 확인 합 니 다. 나타 나 면 정상 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.