> 백엔드 개발 > PHP 튜토리얼 > Linux에서 php mysql nginx 환경 배포

Linux에서 php mysql nginx 환경 배포

WBOY
풀어 주다: 2016-07-25 09:12:28
원래의
903명이 탐색했습니다.

Linux를 만지작거리고 있지만 Linux에서 nginx 서버 환경 배포를 완전히 구성하지 않았습니다. 지난 며칠 동안 아무 것도 없이 배포했는데 이제 환경 배포를 시작하겠습니다. 문서가 발송되었습니다. 궁금한 사항이 있으면 채택 후 문제가 발생하면 모두가 함께 논의할 수 있기를 바랍니다.



|| 安装所需各种依赖包



sudo -s
LANG=C
yum -y install gcc gcc-c autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel 컬 컬 개발자 e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers


1、编译安装PHP 5.2.14所需的支持库:
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure --prefix=/usr/local
만들다
설치
CD ../

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./구성
만들다
설치
/sbin/ldconfig
CD libltdl/
./configure --enable-ltdl-install
만들다
설치
CD ../../



tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./구성
만들다
설치
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
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./구성
만들다
설치
CD ../

关于/etc/ld.so.conf:
这个文件记录了编译时使用动态链接库的路径.
더 보기 将自己可能存放库文件的路径到/etc/ld.so.conf中是明智的选择
添加방법也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:
/usr/X11R6/lib
/usr/로컬/lib
/opt/lib

ldconfig是什么?
它是一个程序, 일반적으로 常它位于/sbin下, 供root 이용자는 供使用입니다.使用,因此当安装完一些库文件,或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig,使所有库文件ت被缓存到ld.so.cache中,如果没做,即使库文件明就/usr/lib下的, 也是不会被使用,结果编译过程中报错,缺少xxx库。 구성, 任何目录下运行可以。
2. MySQL 5.5.3-m3
컴파일 및 설치 /usr/sbin/groupmysql 추가
/usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.5.3-m3.tar.gz
cd mysql-5.5.3-m3/
./configure --prefix=/home/pubsrc/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=partition,innobase,myisammrg
만들기 && 설치하기
chmod w /home/pubsrc/mysql
chown -R mysql:mysql /home/pubsrc/mysql/
CD ../
① mysql 데이터베이스 저장 디렉터리를 생성합니다
mkdir -p /home/pubsrc/mysql/data/
mkdir -p /home/pubsrc/mysql/logs/binlog/
mkdir -p /home/pubsrc/mysql/logs/relaylog/
chown -R mysql:mysql /home/pubsrc/mysql/
② mysql 사용자 계정으로 데이터 테이블을 생성합니다:
/home/pubsrc/mysql/bin/mysql_install_db --basedir=/home/pubsrc/mysql --datadir=/home/pubsrc/mysql/data --user=mysql
③.my.cnf 구성 파일을 생성합니다:
vi /home/pubsrc/mysql/my.cnf
다음을 입력하세요:
[클라이언트]
#문자 세트 서버 = utf8
포트 = 3306
소켓 = /tmp/mysql.sock

[mysqld]
#문자 세트 서버 = utf8
복제-무시-db = mysql
복제-무시-db = 테스트
복제-무시-db = information_schema
사용자 = mysql
포트 = 3306
소켓 = /tmp/mysql.sock
basedir = /home/pubsrc/mysql
datadir = /home/pubsrc/mysql/data
로그 오류 = /home/pubsrc/mysql/logs/mysql_error.log
pid 파일 = /home/pubsrc/mysql/mysql.pid
open_files_limit = 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
table_cache = 614
외부 잠금 = 거짓
max_allowed_packet = 32M
sort_buffer_size = 1M
Join_buffer_size = 1M
thread_cache_size = 300
#thread_concurrency = 8
query_cache_size = 512M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
기본 스토리지 엔진 = MyISAM
thread_stack = 192K
transaction_isolation = 읽기-커밋됨
tmp_table_size = 246M
max_heap_table_size = 246M
long_query_time = 3
로그-슬레이브 업데이트
로그 빈 = /home/pubsrc/mysql/logs/binlog
binlog_cache_size = 4M
binlog_format = 혼합
max_binlog_cache_size = 8M
max_binlog_size = 1G
릴레이 로그 인덱스 = /home/pubsrc/mysql/logs/relaylog
릴레이-로그-정보-파일 = /home/pubsrc/mysql/logs/relaylog
릴레이 로그 = /home/pubsrc/mysql/logs/relaylog
만료_로그_일 = 30
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

Interactive_timeout = 120
wait_timeout = 120

건너뛰기 이름 해결
#master-connect-retry = 10
슬레이브 건너뛰기 오류 = 1032,1062,126,1114,1146,1048,1396

#마스터-호스트 = 192.168.1.2
#마스터-사용자 = 사용자 이름
#마스터-비밀번호 = 비밀번호
#마스터포트 = 3306

서버 ID = 1

innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 512M
innodb_data_file_path = ibdata1:256M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0

#log-slow-queries = /home/pubsrc/mysql/logs/slow.log
#long_query_time = 10

[mysqldump]
빨리
max_allowed_packet = 32M


④. MySQL 데이터베이스를 관리하기 위한 쉘 스크립트를 생성합니다:
vi /home/pubsrc/mysql/mysql
#!/bin/sh
mysql_port=3306
mysql_username="관리자"
mysql_password="12345678"

function_start_mysql()
{
printf "MySQL 시작 중...n"
/bin/sh /home/pubsrc/mysql/bin/mysqld_safe --defaults-file=/home/pubsrc/mysql/my.cnf 2>&1 > /dev/null &
}

function_stop_mysql()
{
printf "MySQL을 중지하는 중...n"
/home/pubsrc/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock 종료
}

function_restart_mysql()
{
printf "MySQL을 다시 시작하는 중...n"
function_stop_mysql
5시 자
function_start_mysql
}

function_kill_mysql()
{
kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
}

if [ "$1" = "start" ]; function_start_mysql
elif [ "$1" = "중지" ]; function_stop_mysql
elif [ "$1" = "다시 시작" ]; then
함수_재시작_mysql
elif [ "$1" = "죽이기" ]; then
function_kill_mysql
그 외
printf "사용법: /data0/mysql/${mysql_port}/mysql {start|stop|restart|kill}ㄴ"
안녕
⑤. 쉘 스크립트에 실행 권한을 부여합니다:
chmod x /home/pubsrc/mysql/mysql
⑥. MySQL을 시작합니다:
/home/pubsrc/mysql/mysql 시작
7. 명령줄을 통해 MySQL 서버에 로그인하고 관리합니다. (비밀번호를 입력하라는 메시지가 나타나면 직접 Enter 키를 누르세요.)
/home/pubsrc/mysql/bin/mysql -u admin -p -S /tmp/mysql.sock
8. 루트 권한이 있는 사용자(admin)와 비밀번호(12345678)를 생성하려면 다음 SQL 문을 입력하세요.
*.*에 대한 모든 권한을 '12345678'로 식별된 'admin'@'localhost'에 부여합니다.
'12345678'로 식별된 'admin'@'127.0.0.1'에게 *.*에 대한 모든 권한을 부여합니다.
9, (선택 사항) MySQL을 중지합니다:
/home/pubsrc/mysql/mysql 중지
3. PHP 컴파일 및 설치(FastCGI 모드)
tar zxvf php-5.2.14.tar.gz
gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | 패치 -d php-5.2.14 -p1
CD PHP-5.2.14/




./configure --prefix=/home/pubsrc/php --with-config-file-path=/home/pubsrc/php/etc --with-mysql=/home/pubsrc/mysql --with-mysqli=/ /home/pubsrc/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 --enable-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 --with-xmlrpc --enable-zip --enable-soap --without-pear


ZEND_EXTRA_LIBS='-liconv'를 만드세요
설치
cp php.ini-dist /home/pubsrc/php/etc/php.ini
CD ../
4. PHP5 확장 모듈
컴파일 및 설치 tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/home/pubsrc/php/bin/phpize
./configure --with-php-config=/home/pubsrc/php/bin/php-config
만들다
설치
CD ../

tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/home/pubsrc/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/home/pubsrc/php/bin/php-config
만들다
설치
CD ../

tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/home/pubsrc/php/bin/phpize
./configure --with-php-config=/home/pubsrc/php/bin/php-config --with-pdo-mysql=/home/pubsrc/mysql
만들다
설치
CD ../

tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./구성
만들다
설치
CD ../

tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0/
/home/pubsrc/php/bin/phpize
./configure --with-php-config=/home/pubsrc/php/bin/php-config
만들다
설치
CD ../
5. php.ini 파일 수정
수동 수정: /home/pubsrc/php/etc/php.ini에서 Extension_dir = "./"
찾기 ​extension_dir = "/home/pubsrc/php/lib/php/extensions/no-debug-non-zts-20060613/"
으로 수정하세요. ​그리고 이 줄 뒤에 다음 줄을 추가하고 저장합니다.
확장자 = "memcache.so"
확장자 = "pdo_mysql.so"
확장자 = "imagick.so"

 그런 다음 output_buffering = Off
를 찾으세요. ​output_buffering = On으로 수정

다시 검색하세요; cgi.fix_pathinfo=0
Nginx 파일 형식 오류 구문 분석 취약점을 방지하려면 cgi.fix_pathinfo=0으로 수정하세요.

자동 수정: 수동 수정이 너무 번거롭다면 다음 쉘 명령을 실행하여 php.ini 파일을 자동으로 수정할 수 있습니다.
sed -i 's#extension_dir = "./"#extension_dir = "/home/pubsrc/php/lib/php/extensions/no-debug-non-zts-20060613/"nextension = "memcache.so"nextension = " pdo_mysql.so"nextension = "imagick.so"n#' /home/pubsrc/php/etc/php.ini
sed -i 's#output_buffering = Off#output_buffering = On#' /home/pubsrc/php/etc/php.ini
sed -i "s#; Always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /home/pubsrc/php/etc/php.ini
sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /home/pubsrc/php/etc/php.ini
6. PHP를 가속화하도록 eAccelerator를 구성합니다.
mkdir -p /home/pubsrc/eaccelerator_cache
vi /home/pubsrc/php/etc/php.ini
Shift g 키를 눌러 구성 파일 끝으로 이동하고 다음 구성 정보를 추가합니다.
[가속기]
zend_extension="/home/pubsrc/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/home/pubsrc/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_기간="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
7. 두 개의 가상 호스트 blog.test.com 및 www.test.com에 대한 디렉터리뿐만 아니라 www 사용자 및 그룹을 생성합니다.
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
mkdir -p /data0/htdocs/blog
chmod w /data0/htdocs/blog
chown -R www:www /data0/htdocs/blog
mkdir -p /data0/htdocs/www
chmod w /data0/htdocs/www
chown -R www:www /data0/htdocs/www
8. php-fpm 구성 파일을 생성합니다(php-fpm은 PHP용 FastCGI 관리 패치로, php-cgi를 다시 시작하지 않고도 php.ini 구성을 원활하게 변경할 수 있습니다).
​/home/pubsrc/php/etc/ 디렉터리에 php-fpm.conf 파일을 생성합니다:
rm -f /home/pubsrc/php/etc/php-fpm.conf
vi /home/pubsrc/php/etc/php-fpm.conf
다음 내용을 입력하세요(프로그램 디버깅을 위해 Nginx PHP를 설치하는 경우 PHP 오류 메시지를 표시하려면 다음 01으로 변경하세요. 그렇지 않으면 Nginx에서 500 공백 상태를 보고합니다) 오류 페이지):






이 구성의 모든 상대 경로는 PHP의 설치 접두사를 기준으로 합니다



PID 파일
/home/pubsrc/php/logs/php-fpm.pid

오류 로그 파일
/home/pubsrc/php/logs/php-fpm.log

로그 수준
공지사항

이 정도의 PHP 프로세스가 SIGSEGV 또는 SIGBUS로 종료되었을 때...
10

... 이 시간 이내에 정상적인 재시작이 시작됩니다.
가속기의 공유 메모리에서 우발적인 중단을 해결하는 데 유용합니다.
1분

마스터의 신호에 대한 아이의 반응을 기다리는 시간 제한
5초

fpm을 디버깅하려면 '아니요'로 설정하세요
그렇습니다







풀 이름입니다. 로그 및 통계에 사용됩니다.
기본값

fastcgi 요청을 수락할 주소입니다.
유효한 구문은 'ip.ad.re.ss:port' 또는 'port' 또는 '/path/to/unix/socket'입니다
127.0.0.1:9000



Listen(2) 백로그 설정
-1

Unix 소켓이 사용된 경우 해당 권한을 설정하세요.
Linux에서는 웹 서버로부터의 연결을 허용하려면 읽기/쓰기 권한을 설정해야 합니다.
많은 BSD 파생 시스템은 권한에 관계없이 연결을 허용합니다.


0666


이 작업자 풀과 관련된 추가 php.ini 정의입니다.

/usr/sbin/sendmail -t -i
1


Unix 프로세스 사용자
www

Unix 프로세스 그룹
www

프로세스 관리자 설정


작업자 프로세스 수 제어 스타일을 설정합니다.
유효한 값은 'static' 및 'apache-like'입니다
정적

처리할 동시 요청 수에 대한 제한을 설정합니다.
Apache MaxClients 지시문과 동일합니다.
원본 php.fcgi의 PHP_FCGI_CHILDREN 환경과 동일
pm_style과 함께 사용됩니다.
128

'아파치형' pm 스타일 설정 그룹


시작 시 생성되는 서버 프로세스 수를 설정합니다.
'apache-like' pm_style이 선택된 경우에만 사용됩니다
20

원하는 최소 유휴 서버 프로세스 수를 설정합니다.
'apache-like' pm_style이 선택된 경우에만 사용됩니다
5

원하는 최대 유휴 서버 프로세스 수를 설정합니다.
'apache-like' pm_style이 선택된 경우에만 사용됩니다
35





작업자 프로세스가 종료된 후 단일 요청을 처리하는 시간 초과(초)
어떤 이유로 'max_execution_time' ini 옵션이 스크립트 실행을 중지하지 않을 때 사용해야 합니다
'0'은 '꺼짐'을 의미합니다
0초

PHP 역추적이 Slow.log 파일에 덤프된 후 단일 요청 제공에 대한 시간 초과(초)입니다.
'0'은 '꺼짐'을 의미합니다
0초

느린 요청에 대한 로그 파일
로그/slow.log

열린 파일 설명 제한 설정
65535

최대 코어 크기 rlimit 설정
0

시작 시 이 디렉토리로 루트를 이동하세요. 절대 경로


시작 시 이 디렉토리에 대한 Chdir, 절대 경로


작업자의 stdout 및 stderr을 기본 오류 로그로 리디렉션합니다.
설정하지 않으면 FastCGI 사양에 따라 /dev/null로 리디렉션됩니다
그렇습니다

다시 생성되기 전에 각 프로세스가 실행되어야 하는 요청 수
타사 라이브러리의 메모리 누수 문제를 해결하는 데 유용합니다.
끝없는 요청 처리를 위해서는 0을 지정하세요
PHP_FCGI_MAX_REQUESTS와 동일
102400

연결이 허용된 FastCGI 클라이언트의 ipv4 주소를 쉼표로 구분한 목록입니다.
원본 php.fcgi(5.2.2)의 FCGI_WEB_SERVER_ADDRS 환경과 동일
AF_INET 청취 소켓에서만 의미가 있습니다.
127.0.0.1

LD_LIBRARY_PATH
와 같은 환경 변수를 전달하세요. 모든 $VARIABLE은 현재 환경에서 가져옵니다

$HOSTNAME
/usr/local/bin:/usr/bin:/bin
/tmp
/tmp
/tmp
$OSTYPE
$MACHTYPE
2








9、启动php-cgi进程,监听127.0.0.1个听64个进程,사용용为www:
ulimit -SHn 65535
/home/pubsrc/php/sbin/php-fpm 시작
참고:/home/pubsrc/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,중신형加载配置文件使用 reload 。
3. Nginx 0.8.46 설치
1. Nginx에 필요한 pcre 라이브러리를 설치합니다:
tar zxvf pcre-8.10.tar.gz
cd pcre-8.10/
./구성
만들기 && 설치하기
CD ../
2. Nginx 설치
tar zxvf nginx-0.8.46.tar.gz
cd nginx-0.8.46/
./configure --user=www --group=www --prefix=/home/pubsrc/nginx --with-http_stub_status_module --with-http_ssl_module
만들기 && 설치하기
CD ../
3. Nginx 로그 디렉터리 생성
mkdir -p /data1/logs
chmod w /data1/logs
chown -R www:www /data1/logs
4. Nginx 구성 파일 생성
① /home/pubsrc/nginx/conf/ 디렉터리에 nginx.conf 파일을 생성합니다:
rm -f /home/pubsrc/nginx/conf/nginx.conf
vi /home/pubsrc/nginx/conf/nginx.conf
다음을 입력하세요:
사용자 www www;

작업자_프로세스 8;

error_log /home/pubsrc/nginx/logs/nginx_error.log crit;

pid /home/pubsrc/nginx/nginx.pid;

#이 프로세스에서 열 수 있는 최대 파일 설명자의 값을 지정합니다.
Worker_rlimit_nofile 65535;

이벤트
{
epoll을 사용하세요.
작업자 연결 65535;
}

http
{
mime.types 포함;
default_type 애플리케이션/옥텟-스트림;

#문자세트 gb2312;

server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
Large_client_header_buffers 4 32k;
client_max_body_size 8m;

파일 보내기;
tcp_nopush 켜짐;

keepalive_timeout 60;

tcp_nodelay 켜짐;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

압축을 푼다;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types 텍스트/일반 애플리케이션/x-javascript 텍스트/css 애플리케이션/xml;
gzip_vary on;

#limit_zone 크롤러 $binary_remote_addr 10m;
서버
{
4590을 들어보세요;
서버 이름 www.inner.bbs.com;
색인 index.html index.htm index.php;
루트 /home/wwwroot/bbs;

#limit_conn 크롤러 20;

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

위치 ~ .*.(gif|jpg|jpeg|png|bmp|swf)?$
{
30일에 만료됩니다.
}

위치 ~ .*.(js|css)?$
{
1시간 후에 만료됩니다.
}

log_format 액세스 '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /home/pubsrc/nginx/logs/access.log 액세스;
}

서버
{
4591을 들어보세요;
server_name www.inner.uc.com;
색인 index.html index.htm index.php;
루트 /data/wwwroot/uc;

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

log_format wwwlogs '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /home/pubsrc/nginx/logs/wwwlogs.log wwwlogs;
}
}
②、/home/pubsrc/nginx/conf/目录中创建fcgi.conf文件:
vi /home/pubsrc/nginx/conf/fcgi.conf
输入以下内容:
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;

# PHP만 해당, PHP가 --enable-force-cgi-redirect
로 빌드된 경우 필수 fastcgi_param REDIRECT_STATUS 200;
5、Nginx
ulimit -SHn 65535
/home/pubsrc/nginx/sbin/nginx
4、配置开机自动启动Nginx PHP
vi /etc/rc.local
下内容:
ulimit -SHn 65535
/home/pubsrc/php/sbin/php-fpm 시작
/home/pubsrc/nginx/sbin/nginx
5、优化Linux内核参数
vi /etc/sysctl.conf
下内容:
#추가
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024 65535
使配置立即生效:
/sbin/sysctl -p
六, 不停止Nginx服务的情况下平滑变更Nginx配置
  1、修改/home/pubsrc/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
/home/pubsrc/nginx/sbin/nginx -t
如果屏幕显示以下两行信息,说明配置文件正确:
   구성 파일 /home/pubsrc/nginx/conf/nginx.conf 구문은 괜찮습니다
   구성 파일 /home/pubsrc/nginx/conf/nginx.conf가 성공적으로 테스트되었습니다

  2、平滑중启:
   ①、对于Nginx 0.8.x版本,现에서 平滑重启Nginx配置不常简单,执行以下命令即可:
/home/pubsrc/nginx/sbin/nginx -s 다시 로드
②、Nginx 0.8.x를 이전에 사용하기 전에 平滑重启稍微麻烦一些,按光以下步骤进行即可。输入以下命令查看Nginx主进程号:
ps -ef | grep "nginx: 마스터 프로세스" | grep -v "grep" | awk -F ' ' '{print $2}'
  屏幕显示的即为Nginx主进程号,例如:
   6302
   这时,执行以下命令即可使修改过的Nginx配置文件生效:
kill -HUP 6302
或者无需这么麻烦,找到Nginx의 Pid文件:
kill -HUP `cat /home/pubsrc/nginx/nginx.pid`
七、编写每텐정时切割Nginx日志的脚本
  1、创建脚本/home/pubsrc/nginx/sbin/cut_nginx_log.sh
vi /home/pubsrc/nginx/sbin/cut_nginx_log.sh
  输入以下内容:
#!/bin/bash
# 이 스크립트는 00:00에 실행됩니다

# Nginx 로그 경로
로그_경로="/home/pubsrc/nginx/logs/"

mkdir -p ${logs_path}$(date -d "어제" "%Y")/$(date -d "어제" "%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "어제" "%Y")/$(date -d "어제" "%m")/access_$(date -d "어제" " %Y%m%d").log
kill -USR1 `cat /home/pubsrc/nginx/nginx.pid`
2、设置crontab,每天凌晨00:00切割nginx访问日志
crontab –e
输入以下内容:
00 00 * * * /bin/bash /home/pubsrc/nginx/sbin/cut_nginx_log.sh

php.ini中的cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞。
3. nginx Qidong 스크립트 생성
vi nginxctl
내용을 입력하세요
#!/bin/bash

BIN=/home/pubsrc/nginx/sbin/nginx
PID=/home/pubsrc/nginx/nginx.pid
케이스 1달러
시작)
$BIN -c /home/pubsrc/nginx/conf/nginx.conf;
$? 종료;
;;
그만)
$(cat $PID)를 죽여라;
$? 종료;
;;
새로고침)
kill -HUP $(cat $PID);
$? 종료;
;;
회전)
kill -USR1 $(cat $PID);
$? 종료;
;;
포트)
echo "귀하의 포트는 $(( 4000 $(id -u) ))";
;;
*)
echo "사용량: $0 {start|stop|reload|roate|port}";
1번출구;
에삭
마지막으로 실행 권한을 부여하세요
chmod 777 nginxctl



CentOS 시스템에 CentOS Memcached 설치.
1. CentOS Memcached를 설치하기 전에 Libevent를 설치해야 합니다:
# 컬 -O http://www.monkey.org/~provos/libevent-1.4.9-stable.tar.gz
# tar zxf libevent-1.4.9-stable.tar.gz
# cd libevent-1.4.9-안정
# ./구성
#만들다
# 설치
2. CentOS Memcached 설치를 계속하세요:
# 컬 -O http://www.danga.com/memcached/dist/memcached-1.2.7.tar.gz
# tar zxf memcached-1.2.7.tar.gz
# cd memcached-1.2.7
# ./구성
#만들다
# 설치
3.CentOS Memcached 설치 후 현재 사용자의 .bash_profile에
추가 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
LD_LIBRARY_PATH 내보내기
4.CentOS Memcached 실행
# memcached -m 512 -u none -vv
테스트 중에 다음과 같은 오류 메시지가 나타납니다.
"/usr/local/memcached/bin/memcached: 공유 라이브러리를 로드하는 중 오류가 발생했습니다. libevent-1.4.so.2: 공유 개체 파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다."
오류 원인은 Libevent가 시스템에 등록되지 않았기 때문입니다. 해결 방법은 다음과 같습니다.
# vi /etc/ld.so.conf.d/libevent-i386.conf
VI에 다음 내용 줄을 입력하십시오:
/usr/local/lib/
마지막으로 잊지 마세요
#ldconfig
5.CentOS Memcached 실행
# memcached -m 512 -u none -vv
CentOS Memcached가 정상적으로 실행되고 있습니다.
위에는 CentOS Memcached의 설치 및 동작 감지에 대한 소개입니다.


1. Memcache 시작을 위한 공통 매개변수
-p 포트 번호 설정(기본값은 11211로 설정되지 않음)
-U UDP 수신 포트(기본값: 11211, 0에서 닫힘)
-l 바인딩 주소(기본값: 내부 및 외부 네트워크나 로컬 컴퓨터의 IP 변경에 관계없이 모두 허용되며 보안 위험이 있으며 127.0.0.1로 설정하면 로컬에서만 액세스할 수 있습니다.)
-d는 독립적인 프로세스로 실행됩니다
-u Bind는 실행 중인 프로세스에 지정된
을 사용합니다. -m 허용되는 최대 메모리 사용량, 단위 M(기본값: 64MB)
-P 는 나중에 프로세스를 빠르게 종료할 수 있도록 파일에 PID를 기록합니다. -d
와 함께 사용해야 합니다.








원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿