来自 美高梅4858官方网站 2019-11-05 07:16 的文章
当前位置: 美高梅4858官方网站 > 美高梅4858官方网站 > 正文

架构 Varnish+nginx+php(FastCGI)+MYS QL5+MenCache+MenCachedb

架构 Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb (一) 
2008年09月27日 星期六 11:42 
架构 Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb 

本文参照他事他说加以考察了 大批量剧情,谢谢张宴!

说明: 
 作者在兼顾系统架构时,实行了大胆的尝试,只用6台Web服务器,达到了可承担4000万PV(页面访问量卡塔尔国的习性: 

 小编的centos6是六10个人的本子

  抛弃了 Apache,因为它能担任的产出连接相对异常低; 
  放任了 Squid,因为它在内部存款和储蓄器利用、访谈速度、并发连接、淹没缓存等方面不比Varnish; 
  丢掉了 PHP4,因为 PHP5 管理面向对象代码的进程要比 PHP4 快,别的,PHP4 已经不再继续支付; 
  放任了 F5 BIG-IP 负载均衡交流机,F5 即便是个好东西,但出于价格不少,四个单位五个成品都运营在其上述,流量大、负载高,进而引致 
属性大减价扣; 

 安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.3,另在RedHat AS4上也安装成功卡塔尔国   

  利用 Varnish cache 减少了百分之八十的数据库查询,肃清了MySQL数据库瓶颈; 
  利用 Varnish cache 的内部存款和储蓄器缓存命中加快了网页的访谈速度; 
  利用 Nginx + PHP5(法斯特CGI) 的越过Apache 10倍的高并发质量,以起码的服务器数量杀绝了PHP动态程序访谈问 
题; 
  利用 Memcached 管理实时数据读写; 
  利用 HAProxy 做接口服务器健检; 

  风姿浪漫、获取有关开源程序:     

  经过压力测量试验,每台Web服务器能够处理3万并发连接数,负责4千万PV完全没难题。 

  【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、晋级所需的程序库(RedHat等别的Linux发行版可从安装光盘中找到这么些程序库的RPM包,实行安装卡塔尔国:

  保险4千万PV的并发连接数:(40000000PV / 86400秒 * 十三个派生连接数 * 5秒内响应 * 5倍峰值) / 6台Web 
服务器 = 19290连接数 

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

试验注解: 

 

 举个简单的事例,服务器192.168.0.2上运维Nginx+PHP,192.168.0.3上运转Apache+PHP,你在 
192.168.0.4上设置压力测验工具webbench,以30万并发连接分别央求Nginx和Apache服务器上的三个PHP文件60分钟。在 
那之间,你用你的浏览器采访Apache服务器上的PHP文件,会开采依然是“该页无法出示”、要么是等待好几分钟技艺开荒,而Nginx服务器的 
PHP文件,如故未有丝毫影响,访问速度仍旧快捷。 

自家下载的源码包

webbench -c 300000 -t 60 

    

webbench -c 300000 -t 60 

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

以下为 Nginx 0.5.33 + PHP 5.2.5 (法斯特CGI) 服务器在3万并发连接下,开启的12个Nginx进度和2肆拾多少个 
php-cgi进度时的系统负荷情状: 

imagick-2.3.0.tgz 

------------------------------------------------------------------------- 

PDO_MYSQL-1.0.2.tgz

设置步骤: 
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为AS4.3卡塔尔国 

memcached-1.4.13

  风姿洒脱、获取相关开源程序: 
  1、下载程序源码包到当前目录: 
  本文中涉及的具有开源软件为了却到二〇〇七年12月14日的风靡牢固版。作者将它们打了多个压缩包。 

eaccelerator-0.9.6.1.tar.bz2 

  第三个压缩包:nginx_php_mysql_1.0_1of2.zip: 
  下载地址: 
fileid=2289607 

libiconv-1.14.tar.gz

  第贰个压缩包:nginx_php_mysql_1.0_2of2.zip: 
  下载地址: 
fileid=2289595 

memcached-1.4.13.tar.gz

  2、解压缩: 

nginx-1.3.3.tar.gz 

unzip nginx_php_mysql_1.0_1of2.zip 
unzip nginx_php_mysql_1.0_2of2.zip 

libmcrypt-2.5.7 

------------------------------------------------------------------------- 
一、) 安装Nginx 
1.) 安装 
Nginx ("engine x") 是二个高品质的 HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。 
Nginx 是由 Igor Sysoev 为俄Rose访谈量第二的 Rambler.ru 站点开采的,它早就在该站点运营抢先七年半了。伊戈尔 将 
源代码以类BSD许可证的样式宣布。固然还是测验版,不过,Nginx 已经因为它的安澜、丰裕的作用集、示例配置文件和低系统财富的费用而盛名了。 
接待访问 Nginx 的粤语维基,. 

ImageMagick.tar.gz

2.)安装Nginx所需的pcre库: 

libmcrypt-2.5.8.tar.gz

[root@localhost]#tar zxvf pcre-7.2.tar.gz 
[root@localhost]#cd pcre-7.2/ 
[root@localhost]#./configure 
[root@localhost]#make && make install 
[root@localhost]#cd ../ 

mhash-0.9.9.9.tar.bz2

3.)Nginx的编译参数如下: 
[root@localhost]#./configure --user=www --group=www --prefix=/usr/ 
local/nginx --with-openssl=/usr/include/openssl --with-pcre=/usr/local/ 
lib --with-http_stub_status_module --without-http_memcached_module -- 
without-http_fastcgi_module --without-http_rewrite_module --without- 
http_map_module --without-http_geo_module --without- 
http_autoindex_module 

pcre-8.30.tar.bz2

在这里地,需求证实一下,由于Nginx的布局文件中作者想用到正则,所以须求 pcre 模块的支撑。上边安装步骤里本人曾经安装了 pcre 及 
pcre-devel 的rpm包,然而 Ngxin 并无法准确找到 .h/.so/.a/.la 文件,由此作者有个别变通了一下: 

mcrypt-2.6.8.tar.gz

[root@localhost]#mkdir /usr/include/pcre/.libs/ 
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/.libs/ 
libpcre.a 
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/.libs/ 
libpcre.la 
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/ 
libpcre.a 
[root@localhost]#cp /usr/local/lib/libpcre.a /usr/include/pcre/ 
libpcre.la 
下一场,纠正 objs/Makefile 差相当少在908行之处上,注释掉以下内容: 

php-5.3.14.tar.bz2

./configure --disable-shared 

 

接下去,就足以健康实行 make 及 make install 了。 

二、安装php-5.3.14(FastCGI模式)   

4.) 更改配置文件 /usr/local/server/nginx/conf/nginx.conf 
以下是笔者的 nginx.conf 内容,仅供参考: 

  1、编写翻译安装PHP 5.2.14所需的帮助库:

#运维顾客 
user nobody nobody; 

 

#伊始进度 
worker_processes 2; 

tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local
make
make install
cd ../

#全局错误日志及PID文件 
error_log logs/error.log notice; 
pid logs/nginx.pid; 

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 ..

#办事方式及连接数上限 
events { 
 use epoll; 
 worker_connections 1024; 

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 ../

#设定http服务器,利用它的反向代理成效提供负载均衡援救 
http { 
 #设定mime类型 
 include conf/mime.types; 
 default_type application/octet-stream; 

 

 #设定日志格式 
 log_format main '$remote_addr - $remote_user [$time_local] ' 
 '"$request" $status $bytes_sent ' 
 '"$http_referer" "$http_user_agent" ' 
 '"$gzip_ratio"'; 

   2、安装mysql-5.5.25a(编写翻译过的版本)

 log_format download '$remote_addr - $remote_user [$time_local] ' 
 '"$request" $status $bytes_sent ' 
 '"$http_referer" "$http_user_agent" ' 
 '"$http_range" "$sent_http_content_range"'; 

    

 #设定须要缓冲 
 client_header_buffer_size 1k; 
 large_client_header_buffers 4 4k; 

    安装在/usr/local/mysql下边,那样的话一些依靠关系都在,免去一些装置麻烦。

 #开启gzip模块 
 gzip on; 
 gzip_min_length 1100; 
 gzip_buffers 4 8k; 
 gzip_types text/plain; 

Shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql

 output_buffers 1 32k; 
 postpone_output 1460; 

#现身这么的标题Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

 #设定access log 
 access_log logs/access.log main; 

#解决措施:yum install libaio

 client_header_timeout 3m; 
 client_body_timeout 3m; 
 send_timeout 3m; 

shell> chown -R root .
shell> chown -R mysql data
# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &

 sendfile on; 
 tcp_nopush on; 
 tcp_nodelay on; 

# mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

 keepalive_timeout 65; 

#鸡犬不留办法查看/var/log/mysqld.log

 #设定负载均衡的劳动器列表 
 upstream mysvr { 
 #weigth参数表示权值,权值越高被分配到的可能率越大 
 #本机上的Squid开启3128端口 
 server 192.168.8.1:3128 weight=5; 
 server 192.168.8.2:80 weight=1; 
 server 192.168.8.3:80 weight=6; 
 } 

#Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)

 #设定设想主机 
 server { 
 listen 80; 
 server_name 192.168.0.1 www.test.com; 

#mkdir -p /var/run/mysqld

 charset gb2312; 

# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysqld

 #设定本设想主机的访问日志 
 #access_log logs/access.log main; 

shell> chkconfig --add mysqld

 #若果访谈 /img/*, /js/*, /css/* 财富,则间接取当和姑件,不经过squid 
 #倘诺这几个文件非常多,不推荐这种格局,因为经过squid的缓存效果更加好 
 location ~ ^/(img|js|css)/ { 
 root /home/web; 
 expires 24h; 
 } 

shell> chkconfig mysqld on

 #对 "/" 启用负载均衡 
 location / { 
 proxy_pass ; 

 

 proxy_redirect off; 
 proxy_set_header Host $host; 
 proxy_set_header X-Real-IP $remote_addr; 
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 client_max_body_size 10m; 
 client_body_buffer_size 128k; 
 proxy_connect_timeout 90; 
 proxy_send_timeout 90; 
 proxy_read_timeout 90; 
 proxy_buffer_size 4k; 
 proxy_buffers 4 32k; 
 proxy_busy_buffers_size 64k; 
 proxy_temp_file_write_size 64k; 
 } 

#mysq首鼠两端装了五遍,一最初三回九转非常,作者要好疑忌始于安装在此以前应当把/etc/my.cnf干掉,直接用/usr/local/mysql/my.cnf

 #设定查看Nginx状态的地址 
 location /NginxStatus { 
 stub_status on; 
 access_log on; 
 auth_basic "NginxStatus"; 
 auth_basic_user_file conf/htpasswd; 
 } 
 } 

进去到mysql command line 下,增多三个root权限的账户

 

GRANT ALL PRIVILEGES ON *.* TO 'carddev'@'localhost' IDENTIFIED BY 'carddev';
GRANT ALL PRIVILEGES ON *.* TO 'carddev'@'127.0.0.1' IDENTIFIED BY 'carddev';

3、编写翻译安装PHP(法斯特CGI格局卡塔尔国

运行以下命令检查测量检验配置文件是不是科学: 

  tar zxvf php-5.3.14.tar.gz

万风华正茂未有报错,那么就可以初步运行Nginx了,试行以下命令就可以: 
备考:conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生就能够,内容大概如下: 

  cd php-5.3.14

5.) 查看 Nginx 运转处境 

     

输入地方  

  陆十一位系统要做些软连接

Active connections: 328 
server accepts handled requests 
9309 8982 28890 
Reading: 1 Writing: 3 Waiting: 324 

      ln -s /usr/lib64/libldap* /usr/lib/

此间作者是用设想机做的测量试验,所以链接数比相当少. 
首先行代表前段时间活蹦活跳的接连几天数 
其三行的第多少个数字代表Nginx运营到眼下光阴接受到的总必要数,假设快达到了上限,就需求加大上限值了。 
top -b -nl 
翻开NGINX的进度号: 
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 

 

6.)配置扶助FCGI文件 
vi /usr/local/webserver/nginx/conf/fcgi.conf 

     32位系统:ln -s /usr/local/mysql/lib/libmysqlclient.so.18  /usr/lib/

输入以下内容: 

     64位系统:ln -s /usr/local/mysql/lib/libmysqlclient.so.18  /usr/lib64/

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; 

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

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; 

make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-development /usr/local/php
cd ../

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 only, required if PHP was built with --enable-force-cgi-redirect 
#fastcgi_param REDIRECT_STATUS 200; 

 安装php的时候,出现cannot stat `ext/phar/phar.phar': No such file or directory

7.)启动Nginx 

于是乎笔者又: cd  ext/phar/
ls -l
结果开掘未有phar.phar 那几个文件!!于是作者思疑是phar.php ,
cp ./phar.php  ./phar.phar
make install 

ulimit -SHn 51200 
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 

 4、编写翻译安装PHP5扩张模块

------------------------------------------------------------------------- 

本身将memcache server端和client端都设置在了少年老成台机械上,那样便于测量检验

8.)配置开机自动运维Nginx + PHP 

  1. 先是安装memcache server

vi /etc/rc.local 

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

在最后扩充以下内容: 

 

/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 250 -u www -f / 
usr/local/php/bin/php-cgi 
ulimit -SHn 51200 
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 

在这里个时候,不鲜明会编译通过,依然会现身:

二.) 安装MYSQL 
设置mysql-5.0.45.tar.gz, 上面是总体的编写翻译文件 

checking for libevent directory… configure: error: libevent is required. You can get it from
If it’s already installed, specify its path using –with-libevent=/dir/

  1. -static 13% 
     --with-client-ldflags=-all-static 
     --with-mysqld-ldflags=-all-static 
    静态链接进步13%属性 

  2. -pgcc 1% 
     CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc  
     CXXFLAGS="-O3 -mpentiumpro -mstack-align-double  
     -felide-constructors -fno-exceptions -fno-rtti" 
    如果是Inter处理器,使用pgcc提高1%性能 

  3. Unix Socket 7.5% 
     --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock 
    运用unix套接字链接提升7.5%特性,所以在windows下mysql品质明确比不上unix下面 

  4. --enable-assembler 
    同意利用汇编形式(优化质量) 

因为libevent 那些包是系统暗许安装的,未有设置相应的付出所用的头文件。
于是,还要接收如下命令来设置:

[root@localhost]#tar zxvf mysql-5.0.45.tar.gz 
[root@localhost]#./configure --prefix=/usr/local/mysql/ --without- 
debug --with-unix-socket-path=/tmp/mysql.sock --with-client-ldflags=- 
all-static --with-mysqld-ldflags=-all-static --enable-assembler --with- 
extra-charsets=gbk,gb2312,utf8 --with-pthread --enable-thread-safe- 
client 
[root@localhost]#make -j 50 && make install 
[root@localhost]#groupadd mysql 
[root@localhost]#useradd -g mysql mysql 
[root@localhost]#bin/mysql_install_db --user=mysql 
[root@localhost]#chown -R root . 
[root@localhost]#chown -R mysql data 
[root@localhost]#chgrp -R mysql . 
[root@localhost]#bin/mysqld_safe --user=mysql & 
[root@localhost]#cd bin 
[root@localhost]#/usr/local/mysql/share/mysql/mysql.server stop 
[root@localhost]#cp /usr/local/mysql/share/mysql/mysql.server /etc/ 
init.d/mysql 
[root@localhost]#chmod 755 /etc/init.d/mysql 
[root@localhost]#chkconfig --level 345 mysql on 

yum install libevent-devel


局地时候会报一些找不到lib包的warning,比方:

---------------------------------------------- 

*  找不到libevent-1.4.so.2*

三、)安装PHP 5.2.5(FastCGI模式) 
1、编写翻译安装PHP 5.2.5所需的支撑库: 

能够创建软连接.也能够用ldconfig来化解那一个题目,在/etc/ld.so.conf,增添些常用的lib库路线.

[root@localhost]#tar zxvf libiconv-1.11.tar.gz 
[root@localhost]#cd libiconv-1.11/ 
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/ 
libiconv 
[root@localhost]#make && make install 
[root@localhost]#cd ../ 

 

[root@localhost]#tar zxvf freetype-2.3.5.tar.gz 
[root@localhost]#cd freetype-2.3.5/ 
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/ 
freetype 
[root@localhost]#make && make install 
[root@localhost]#cd ../ 

  2. 安装memcache client端

[root@localhost]#tar zxvf libpng-1.2.20.tar.gz 
[root@localhost]#cd libpng-1.2.20/ 
[root@localhost]#./configure 
[root@localhost]#make && make install 
[root@localhost]#cd ../ 

    Memcached顾客端是基于libmemcached的,所以需先安装libmemcached。

[root@localhost]#tar zxvf jpegsrc.v6b.tar.gz 
[root@localhost]#cd jpeg-6b/ 
[root@localhost]#./configure --enable-static --enable-shared 
[root@localhost]#make && make install 
[root@localhost]#cd ../ 

    官网:

t[root@localhost]#ar zxvf gd-2.0.35.tar.gz 
[root@localhost]#cd gd-2.0.35/ 
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/gd -- 
with-freetype=/usr/local/webserver/lib/freetype --with-jpeg --with-png 
[root@localhost]#make 
[root@localhost]#make install 
[root@localhost]#cd ../ 

    下载最新版本,小编下载的是libmemcached-1.0.9

[root@localhost]#tar zxvf libxml2-sources-2.6.30.tar.gz 
[root@localhost]#cd libxml2-2.6.30/ 
[root@localhost]#./configure --prefix=/usr/local/webserver/lib/libxml 
[root@localhost]#make && make install 
[root@localhost]#cd ../ 

   cd libmemcached-1.0.9


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

---------------------------------- 
2、编写翻译安装PHP(FastCGI方式卡塔 尔(阿拉伯语:قطر‎ 

    make && make install

[root@localhost]#tar zxvf php-5.2.4.tar.gz 
[root@localhost]#cd php-5.2.4/ 
[root@localhost]#./configure --prefix=/usr/local/php --with-mysql=/usr/ 
local/mysql --enable-ftp --with-config-file-path=/usr/local/php -- 
enable-zip --with-zlib --with-curl --without-iconv --with-iconv=/usr/ 
local/lib --with-libxml-dir=/usr --enable-xml --with-xmlrpc --enable- 
mbregex-backtrack --with-gettext --with-gd=/usr/lib --enable-gd-native- 
ttf --with-ttf --enable-gd-jis-conv --with-jpeg-dir=/usr/local --with- 
png-dir=/usr/local --with-freetype-dir=/usr/local/php/lib/freetype -- 
with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi -- 
enable-force-cgi-redirect --enable-dom --enable-safe-mode --enable- 
discard-path --disable-debug --disable-rpath --enable-bcmath --enable- 
shmop --enable-sysvsem --with-ldap --enable-sockets --enable-soap -- 
enable-inline-optimization --enable-mbstring=all --with-ming=/usr -- 
with-pdo-sqlite --enable-pdo --with-pdo-mysql=/usr/local/mysql --with- 
mysqli=/usr/local/mysql/bin/mysql_config 

       

[root@localhost]#cp php.ini-dist /usr/local/php/etc/php.ini 
[root@localhost]#cd ../ 

   OK,以往设置PHP extension for interfacing with memcached via libmemcached library

3.修改php.ini文件 
  手工业改正:查找/usr/local/php/etc/php.ini中的extension_dir = "./" 
  修改为extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non- 
zts-20060613/" 
  并在这里行后扩展以下几行,然后保留: 
  extension = "memcache.so" 
  extension = "gd.so" 
4.活动矫正:若嫌手工业订正麻烦,可实践以下shell命令,自动实现对php.ini文件的改正: 
[root@localhost]sed -i 's#extension_dir = "./"#extension_dir = "/usr/ 
local/php/lib/php/extensions/no-debug-non-zts-20060613/"nextension = 
"memcache.so"nextension = "gd.so"n#' /usr/local/php/etc/php.ini 

         下载地址:


          tar zxvf memcached-2.0.1.tgz 

----- 

          cd memcached-2.0.1

5.附:编写翻译PHP之后,为PHP增加增添的措施。(本步骤可选卡塔尔国 

    /usr/local/php/bin/phpize

[root@localhost]#cd php-5.2.4/pcntl 
[root@localhost]#/usr/local/php/bin/phpize 
[root@localhost]#./configure --with-php-config=/usr/local/php/bin/php- 
config 
[root@localhost]#make && make install 
[root@localhost]#cd  

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

[root@localhost]#cd php-5.2.5/ext/gd/ 
[root@localhost]#/usr/local/php/bin/phpize 
[root@localhost]#./configure --with-jpeg-dir --with-png-dir --with- 
zlib-dir --with-ttf --with-freetype-dir --with-php-config=/usr/local/ 
php/bin/php-config 
[root@localhost]#make -j 50 
[root@localhost]#make install 

    make && make install

使用 Memcached 管理实时数据读写;MySQL是熏陶属性的最大瓶颈,能够用风姿洒脱台MySQL主库(只写卡塔 尔(英语:State of Qatar)+多台MySQL辅库(只读卡塔 尔(英语:State of Qatar)的主辅 
库集群来解决。其余,访问计数等实时性很强的东西用Memcache做缓存。 

           

[root@localhost]#tar zxvf memcache-2.2.1.tgz 
[root@localhost]#cd memcache-2.2.1/ 
[root@localhost]#/usr/local/php/bin/phpize 
[root@localhost]#./configure --with-php-config=/usr/local/php/bin/php- 
config 
[root@localhost]#make -j 50 
[root@localhost]#make install 

    

设置支撑MYSQL PDO驱动 

 

[root@localhost]#tar xzvf PDO-1[1].0.3.tgz 
[root@localhost]#cd PDO-1.0.3/ 
[root@localhost]#/usr/local/php/bin/phpize 
[root@localhost]#./configure --with-php-config=/usr/local/php/bin/php- 
config --with-pdo-mysql=/usr/local/mysql/ 
[root@localhost]#make -j 50 
[root@localhost]#make install 

 


 

---------------------------------- 

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

6.安装lighttpd中附带的spawn-fcgi,用来运维php-cgi 

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

 注:压缩包中的spawn-fcgi程序为早就编写翻译成二进制的版本。 

#make不经常出错了

[root@localhost]#cp spawn-fcgi /usr/local//php/bin 
[root@localhost]#chmod +x /usr/local/php/bin/spawn-fcgi 

#PDO_MYSQL make: *** [pdo_mysql.lo]

7、运行php-cgi进度,监听127.0.0.1的10080端口,进度数为250(即便服务器内部存款和储蓄器小于3GB,能够只开启二十二个进度卡塔 尔(阿拉伯语:قطر‎,客户为 
www: 

#减轻情势

/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 250 -u www -f / 
usr/local/php/bin/php-cgi 

# ln -s /usr/local/mysql/include/* /usr/local/include/
make install
cd ../

8.设定开机运转 

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

[root@localhost]#echo "/usr/local/mysql/share/mysql/mysql.server 
start" >> /etc/rc.local 
[root@localhost]#echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/ 
conf/nginx.conf" >> /etc/rc.local 
[root@localhost]#echo "/usr/local/php/bin/spawn-fcgi -a 127.0.0.1 -p 
10080 -C 250 -u www -f /usr/local/php/bin/php-cgi" >> /etc/rc.local 

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

四、优化Linux内核参数 

 5、修改php.ini文件

vi /etc/sysctl.conf 

  手工业修正:查找/usr/local/php/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"   

引用 
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 
net.ipv4.ip_local_port_range = 5000 65000 

  再查找; cgi.fix_pathinfo=0
  修改为cgi.fix_pathinfo=0,幸免Nginx文件类型错误深入深入分析漏洞。

  使配置立时生效: 

 6、配置eAccelerator加速PHP:

/sbin/sysctl -p 

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


  按shift+g键跳到计划文件的最末尾,加上以下配置音信:

-------------------------------------------- 

 

附:如今常常搞lighttpd+fastcgi+php或许nginx+fastcgi+php,时常被php的“No input file 
specified.”给郁闷了,把自个儿遇上的事态说一下 

[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"

率先php.ini的布局中 
cgi.fix_pathinfo=1 
doc_root= 

 

doc_root曾经被自个儿设置过一个门路,结果php老提醒“No input file specified.”,唯有多个设想机好使。改掉后就平常 
了。 

7、成立www客商和组

nginx中的配置有个别麻烦 

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

fastcgi_pass 127.0.0.1:1234; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 

chown -R www.www /var/www

每一个虚机要基于自身过不去的虚机设置无法的目录,要作保这些路子正确。 
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;不能在 
fastcgi_pass 127.0.0.1:1234;的前面。 

 

记得订正了php.ini要重启fastcgi服务。 

8、配置php-fpm.conf

本文由美高梅4858官方网站发布于美高梅4858官方网站,转载请注明出处:架构 Varnish+nginx+php(FastCGI)+MYS QL5+MenCache+MenCachedb

关键词: