>  기사  >  백엔드 개발  >  Linux에서 php mysql nginx 환경 배포

Linux에서 php mysql nginx 환경 배포

WBOY
WBOY원래의
2016-07-25 09:12:28864검색

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
와 함께 사용해야 합니다.








성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.