nginx + phpの設定

WBOY
リリース: 2016-06-23 14:34:50
オリジナル
1057 人が閲覧しました

この記事では、多くの内容について http://blog.s135.com/nginx_php_v6/ を参照しています。Zhang Yan に感謝します。

私の centos6 は 64 ビット版です

インストール手順:
(システム要件: Linux 2.6+ カーネル、この記事の Linux オペレーティング システムは CentOS 5.3 で、RedHat AS4 にも正常にインストールされました)

1関連するオープン ソース プログラムを入手します:

【CentOS オペレーティング システムに適用可能】CentOS Linux システムに付属の yum コマンドを使用して、必要なプログラム ライブラリをインストールおよびアップグレードします (RedHat およびその他の Linux ディストリビューションは、これらのライブラリの RPM パッケージを見つけることができます)。インストール CD から実行します):

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-develcurlcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

ソースパッケージ Iダウンロードされました

mysql-5.5.25a-linux2.6-x86_64.tar.gz

imagick-2.3.0.tgz

PDO_MYSQL-1.0.2.tgz

memcached-1.4.13

アクセル- 0 .9.6.1。 .tar.gz

libmcrypt-2.5.8.tar.gz

mhash-0.9.9.9.tar.bz2

pcre-8.30.tar.bz2

mcrypt-2.6.8.tar.gz

php- 5.3.14.tar. bz2

2. php-5.3.14 (FastCGI モード) をインストールします

1. PHP 5.2.14 に必要なサポート ライブラリをコンパイルしてインストールします:

tar zxvf libiconv-1.14.tar。 gz

cd libiconv-1.14/

./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 http://www.cnblogs.com/

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
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
./configure
make
make install
cd ../


2. mysql-5.5.25a (コンパイル済みバージョン) をインストールします



/usr/local/mysql にインストールされます。この場合、いくつかの依存関係は次のとおりです。インストールの問題が発生する必要がなくなります。

shell> useradd -r mysql mysql
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> mysql バージョンへのフルパス mysql

shell> cd mysqlshell> chgrp -R mysql_install_db --user=mysql

shell> root .

shell> chown -R mysql data

# 次のコマンドはオプションです

shell> cp support-files/my-medium.cnf /etc/my.cnf

shell> bin/mysqld_safe --user=mysql &

#コマンドはオプションです

shell>cp support-files/mysql.server /etc/init.d/mysqld


shell>chkconfig --add mysqld

shell>chkconfig mysqld on
mysql コマンドラインを入力して root アカウントを追加します権限あり

*.* のすべての権限を 'carddev'@'localhost' に許可
3. PHPのコンパイルとインストール(FastCGIモード)

tar zxvf php-5.3.14.tar.gz

cd php-5.3.14

./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/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-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 --nable-soap

make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /etc/php.ini
cd ../

以下php安装错误来自百度搜索

php安装の候、出现cannot stat `ext/ phar/phar.phar': そのようなファイルまたはディレクトリはありません

これより我また: cd ext/phar/
ls -l
结果発行现没有pha​​r.phar 这个文件!!以上我怀疑是phar.php ,
cp ./ phar.php ./phar.phar
make install

4、编译設置PHP5扩展模块

我将memcacheサーバー端とクライアント端都設置了一台机上,这样方便测试

最初にmemcacheサーバーを設置

tar zxvf memcached-1.4.13.tg.gz
cd memcache-1.4.13/
./configure ?prefix=/usr/local/memcached
make
make install
cd ../

在此時,不必ず会编译通过,依旧会出现:

libevent ディレクトリを確認中… 構成: エラー: libevent が必要です。 http://www.monkey.org/~provos/libevent/ から入手できます
既にインストールされている場合は、?with-libevent=/dir/ を使用してそのパスを指定します

因みに libevent 这个包是系统默认インストール
したがって、次のコマンドを使用してインストールします:

yum install libevent-devel

時々、lib パケットに到達できない警告が表示されます。例:

libevent-1.4.so.2 にはアクセスできませんが、接続を確立できます。ldconfig を使用してこの問題を解決することもできます。/etc/ld.so.conf に、いくつかの一般的な lib パスを追加します。

2. memcache クライアント端末をインストールします

Memcached クライアント端末は libmemcached に基づいており、必要に応じて libmemcached をインストールしてください。はいlibmemcached- 1.0.9

cd libmemcached-1.0.9

./configure --prefix=/usr/local/libmemcached --with-libmemcached-dir=/usr/local/libmemcached

make && make install

OK、现在、libmemcached ライブラリ経由で memcached とインターフェースするための PHP 拡張機能をインストールします

下ダウンロード地址:http://pecl.php.net/package/memcached

tar zxvf memcached-2.0.1. tgz

cd memcached-2.0 .1

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/ local/libmemcached

make && make install


tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/webserver/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php -config=/usr/local/webserver/php/bin/php-config
make
make install
cd ../

tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/ local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/ mysql
make
make install
cd ../

tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install
cd ../

tar zxvf imagick- 2.3.0.tgz
cd imagick-2.3.0/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php -config
make
make install
cd ../

5、修正php.ini文件

手作業修正:查找/etc/php.ini中のextension_dir = "./"
extension_dir = "/usrに修正/local/php/lib/php/extensions"

cp -R /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/* /usr/local/php/lib/php /extensions
并在此行後增以下几行,然后保存:

extension = "pdo_mysql.so"
extension = "imagick.so"
extension = "memcached.so"

再查找; cgi.fix_pathinfo=0
cgi.fix_pathinfo=0に修正し、Nginxファイルタイプの漏洩を防止します。

6、eAccelerator加速PHPを配置:

mkdir -p /usr/local/eaccelerator_cache
vi /etc/php. ini


按shift+g键跳躍配置文件の最終尾,加上以下配置信息:

[eaccelerator]
zend_extension="/usr/local/php/lib/php/extensions/eaccelerator.so "
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/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_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1 "
eaccelerator.compress_level="9"

7、创建www用户和组

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

chown -R www.www /var/www

8、構成php-fpm.conf

打开一下两行注释:

pid = run/php-fpm.pid
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

ユーザー= www

グループ = www

到了php5.3.3、默认即サポートphp-fpm
但しphp/sbin/php-fpmの内容発行了改、前は一つの脚本、现在は一つの二进制文件であり、信号制御が必要です:

master进程理解可能以下信号
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 再新打开日志文件
SIGUSR2 平滑重ロード全ワーカー进程并再新入構成と二进制模块
例:

php -fpm 关闭:
kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -SIGUSR2 `cat /usr/local/php/var/run/ php-fpm.pid`

サービス中に追加されます并每次开机自動启動

cp $PHP_SOURCE_DIR/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 700 /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

服务方式启アニメーションphp-fpm
service php-fpm restart

注:/usr/local/php/ sbin/php-fpm には、start|stop|quit|restart|reload|logrotate、php.ini を変更した後、php-cgi を再ロード、構成ファイルを再ロードする、reload を含むその他のパラメータもあります。 Nginx 0.8.46

1、Nginxのインストールに必要なpcre库:

tar zxvf pcre-8.30.tar.gz
cd pcre-8.30/
./configure
make && make install
cd ../


2. Nginx をインストールします

tar zxvf nginx-1.3.3.tar。 gz
cd nginx-1.3.3/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../



3. Nginx ログ ディレクトリを作成します

mkdir -p /usr/local/nginx/logs/
chmod +w /usr/local/nginx/logs/
chown -R www:www /usr /local/nginx/logs/

4. Nginx 設定ファイルを作成します
① /usr/local/webserver/nginx/conf/ ディレクトリに nginx.conf ファイルを作成します:

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

ユーザー www www;
worker_processes 8;

#error_log logs/error.log;
#error_log logs/error.log注意 ;
#error_log ログ/error.log 情報;
error_log /usr/local/nginx/logs/error.log crit;
pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 65535;

events {
use epoll;
worker_connections 65535;
}

http {

include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$ request " '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

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 65; 00;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;

fastcgi_temp_file_write_size 128k;

gzip_min_length 1k;
gzip_http_version 1.0; zip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on ;


server {



listen 80;
server_name localhost;
Index Index.html Index.htm Index.php;
root /var/www;
#charset koi8-r;

#access_log ログ/host .access.log main;

location ~ .*.(php|php5)?$

{


#root html;
#indexindex.htmlindex.htm;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index Index .php;

include fcgi.conf;

}

#error_page 404 /404.html;

# サーバーエラーページを静的ページ /50x.html

#
location ~ .*.(gif| jpg| jpeg|png|bmp|swf)$
{
有効期限 30 日;
}

location ~ .*.(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 /usr/local/nginx/logs/access.log access;

}


}

②. /usr/local/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 SER VER_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
/usr /local/nginx/sbin/nginx

共有ライブラリのロード中に Nginx启起動エラーが発生しました: libpcre.so.1

[root@localhost conf]# ldd $(that /usr/local/nginx/sbin/nginx)

linux-vdso.so.1 => (0x00007fff227ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032f3800000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000032f6000000)
libpcre.so.1 =>見つかりません
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00000032fc400000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00000032fa400000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000032f3400000)
libz.so.1 => /lib64/libz.so.1 (0x00000032f3c00000)
libc.so.6 => /lib64/libc.so.6 (0x00000032f3000000)
/lib64/ld-linux-x86-64.so.2 (0x00000032f2c00000)
libfreebl3.so => /lib64/libfreebl3.so (0x00000032f5c00000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00000032fb000000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00000032f9800000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00000032f7000000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00000032f8800000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00000032f9000000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00000032f9400000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00000032f5000000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00000032f4c00000)

libpcre.so.1 => が表示されます。見つかりません并没有找到,进入/lib目录中手動链接下

[root@localhost lib]# ln -s libpcre.so.0.0.1 libpcre.so.1

その後在启动nginx ok 了

[root@localhost lib]# /usr/local/nginx/sbin/nginx

另外我在/etc/ld.so.conf下面加了一部構成

1 include ld.so.conf.d/*. conf
2 include /usr/lib
3 include /usr/lib64
4 include /usr/local/lib

4、構成开机自動启动Nginx

vi /etc/rc.local

ulimit -SHn 65535
/usr/local/nginx/sbin/nginx

五、优化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
ネット。コア。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.ip v 4.tcp_syn_retries = 2

net .ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
ネット.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

6. 止まらずに平滑化するNginx サービス Nginx 設定の変更

1. /usr/local/nginx/conf/nginx.conf 設定ファイルを変更した後、次のコマンドを実行して設定ファイルが正しいかどうかを確認してください:

/usr/local/nginx /sbin/nginx -t

画面に次の 2 行の情報が表示された場合、設定ファイルは正しいです:

設定ファイル /usr/local/webserver/nginx/conf/nginx.conf 構文は問題ありません

設定file /usr/local/webserver/nginx/conf /nginx.conf は正常にテストされました

2. スムーズな再起動:
① Nginx 0.8.x バージョンの場合、今すぐ Nginx 設定をスムーズに再起動するのは非常に簡単です。コマンド:


/usr/local/nginx/sbin/ nginx -s reload

②. Nginx 0.8.x より前のバージョンの場合、スムーズな再起動は次の手順に従ってください。 Nginx のメインプロセス番号を表示するには、次のコマンドを入力します。



ps -ef | grep "nginx: master process" | grep -v "awk -F ' ' '{print $2}'

とは画面に表示されるのは、Nginx のメインプロセス番号です。例:

6302

この時点で、次のコマンドを実行して、変更した Nginx 構成ファイルを有効にします:


kill -HUP 6302

または、必要ありません。このような問題を解決するには、Nginx Pid ファイルを見つけます:


Kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`

Seven. Nginx ログを毎日定期的にカットするスクリプトを作成します

1. スクリプトを作成します /usr/local/nginx/sbin/cut_nginx_log.sh


vi /usr/local/nginx/sbin/cut_nginx_log.sh

次のように入力します:



#!/bin/bash

# このスクリプトは 00:00 に実行されます

# Nginx ログのパス
logs_path="/usr/local/nginx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"% 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 /usr/local/nginx/nginx.pid`


2. crontab を設定し、毎朝 00:00 に nginx アクセスを切断します。


crontab -e

次のように入力します:


00 00 * * * /bin/bash /usr/local/ nginx/sbin/cut_nginx_log.sh

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート