>  기사  >  운영 및 유지보수  >  Linux+Nginx+Php를 사용하여 고성능 웹 서버를 설정하는 방법

Linux+Nginx+Php를 사용하여 고성능 웹 서버를 설정하는 방법

WBOY
WBOY앞으로
2023-05-20 23:19:551183검색

nginx("engine x")는 고성능 http 및 역방향 프록시 서버이자 imap/pop3/smtp 프록시 서버입니다. nginx는 러시아에서 두 번째로 방문객이 많은 rambler.ru 사이트를 위해 igor sysoev에 의해 개발되었으며, 이 사이트는 2년 반 넘게 운영되어 왔습니다. igor는 BSD와 유사한 라이센스에 따라 소스 코드를 릴리스합니다. 아직 베타 버전이지만 nginx는 안정성, 풍부한 기능 세트, 샘플 구성 파일 및 낮은 시스템 리소스 소비로 이미 알려져 있습니다.

설치 단계

1. php5.2.9

tar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13/
./configure --prefix=/usr/local에 필요한 지원 라이브러리를 컴파일하고 설치합니다.
make
make install
cd ../

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
/sbin/ldconfig
cd libltdl/
. /configure --enable-ltdl-install
make
make install
cd ../../

tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../

ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/ libmcrypt .so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/ lib /libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/ libmhash .la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so. 2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6. 8 /
/sbin/ldconfig
./configure
make
make install
cd ../


2. mysql 5.1.34 확장 라이브러리

/usr/sbin/groupadd mysql
/usr을 컴파일하고 설치합니다. /sbin/ useradd -g mysql mysql
tar zxvf mysql-5.1.34.tar.gz
cd mysql-5.1.34/
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with -extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile - -with-plugins=innobase
make && make install
chmod +w /usr/local/webserver/mysql
chown -r mysql:mysql /usr/local/webserver/mysql
cd ../

mysql 설치는 여기에서 생략


3. PHP 컴파일 및 설치(fastcgi 모드)

tar zxvf php-5.2.9.tar.gz
gzip -cd php-5.2.9-fpm-0.5.10.diff.gz | d php -5.2.9 -p1
cd php-5.2.9/
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php /etc --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with- freetype- dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path - -enable -safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi -- 활성화- fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable- pcntl - -enable-sockets --with-ldap --with-ldap-sasl
make zend_extra_libs='-liconv'
make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ../


4. php-fpm 구성 파일 수정

rm -f /usr/local/webserver/php/etc/php-fpm.conf
vi /usr/local/webserver/php /etc/ php-fpm.conf

다음 내용을 입력하세요:




/usr/local/webserver/php/logs /php-fpm.pid
<값 이름="error_log">/usr/local/webserver/php/logs/php-fpm.log
<값 이름="log_level" >notice
10
1m
5s
yes



default
127.0.0.1:9000




0666


/usr/sbin/sendmail -t -i
< value name="display_errors">1


www
www
static
128

20
5
35< /value>


0초
0초
< value name="slowlog">logs/slow.log

51200
0


yes
< value name="max_requests">500

127.0.0.1

$hostname
/usr/local/bin:/usr/bin:/bin
/tmp
/tmp
/tmp

$machtype
2



五、创建www用户组及www用户

/usr/sbin/groupadd www
/usr/sbin/useradd -g www www


ㅋㅋㅋ会被안장 /usr/local/nginx에 있습니다. 일반적으로 过译选项, 你可以改变这个设定.指定编译选项安装, 如:

./configure --user=www --group=www --prefix=/usr /local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module

make && make install
cd ../


七、创建fcgi.conf文件

rm -f /usr/local/webserver/nginx /conf/fcgi.conf
vi /usr/local/webserver/nginx/conf/fcgi.conf

输入以下内容:

fastcgi_param 게이트웨이_인터페이스 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 - f / usr/local/webserver/nginx/conf/nginx.conf
vi /usr/local/webserver/nginx/conf/nginx.conf

输入以下内容:

user www www;

worker_processes 8;
error_log /usr/ local/webserver/nginx/logs/logs/nginx_error.log crit;pid /usr/local/webserver/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;

events {

epoll 사용;
worker_connections 51200;

}

http {

include mime.types;
default_type application/octet-stream;
charset utf-8;

server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 크기 8m;

파일 보내기;

tcp_nopush 켜기;

keepalive_timeout 60;
tcp_nodelay on;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 8 64k;
fast cgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

#limit_zone 크롤러 $binary_remote_addr 10m;
#多个站点设置,站点文件夹必须放는 nginx의 html目录,否则不支持多站点
server {

listen 80;

server_name www.v-ec.com;
root /usr/local/webserver/nginx/html/www.v-ec.com ;
index index.php index.html;

위치 ~ .*.(php|php5)?$ {
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;

fastcgi_index 인덱스 .php;

include fcgi.conf;
}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}

location ~ .*.(js|css )?$ {

6시간 만료;
}

log_format veclog '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_loglogs/vec.log veclog;
}
#多个站点设置,站点文件夹必须放在nginx的html目录,否则不支持多站点
server {

listen 80;

server_name www.w3cgroup.com;
루트 /usr/local/webserver/nginx/html/www.w3cgroup.com;
index index.php index.html;

location ~ .*.(php|php5)?$ {
#fastcgi_pass unix:/tmp/ php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
30일 만료;
}

location ~ .*.(js|css)?$ {

6시간 만료;
}

log_format w3cclog '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_loglogs/w3c.log w3clog;
}
}

九、配置开机自动启动nginx + php

vi /etc/rc .local


현재 末尾增加以下内容:

ulimit -shn 51200
/usr/local/webserver/php/sbin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx

十、优化linux内核参数

vi /etc/sysctl.conf

에서 末尾增加以下内容:


net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_syncookies = 1

net .ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1使配置立即生效:

/sbin/sysctl –p

做到这里, 可以rebootlinux了, 불출 의외의 말은 以顺利开启nginx



平滑重启nginx

ps aux | grep nginx

找到nginx의 마스터 프로세스, 假如为:5800,然后kill

kill –hup 5800

平滑重启php

/usr/local/webserver/php/sbin/php-fpm restartphp-fpm적 실행命令:시작 | 중지 | 종료 | 다시 시작 | 새로고침 | 로그로테이션

위 내용은 Linux+Nginx+Php를 사용하여 고성능 웹 서버를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제