FreeBSD下NGINX 1.8+PHP5.6 +PERL 5.20 +Mysql 5.6+FTP 环境搭建与优化

FreeBSD下NGINX 1.8+PHP5.6 +PERL 5.20 +Mysql 5.6+FTP 环境搭建与优化

为什么选择FreeBSD做为os,这里不再讲,具体可以看这里《Free BSD,Linux之比较》

附件提供了已做了优化后的配置文件,下载直接可以使用。

#安装perl 支持
--------------------------------------
cd /usr/ports/lang/perl5.20 && make config

#安装完以后发现新版本的5.20的perl改变了目录,这里做个链接。
ln -s /usr/local/bin/perl /usr/bin/perl

#安装perl支持组件(perl on nginx)
cd /usr/ports/databases/rrdtool && make install clean
cd /usr/ports/databases/p5-DBD-mysql && make install clean
cd /usr/ports/devel/p5-File-Tail && make install clean
cd /usr/ports/devel/p5-Time-HiRes && make install clean
cd /usr/ports/graphics/p5-GD && make install clean
cd /usr/ports/sysutils/p5-Unix-Syslog && make install clean
cd /usr/ports/www/p5-LWP-UserAgent-WithCache && make install clean
cd /usr/ports/dns/p5-Net-DNS && make install clean
cd /usr/ports/security/p5-Digest-HMAC && make install clean
cd /usr/ports/security/p5-Digest-MD5 && make install clean
cd /usr/ports/security/p5-Digest-Perl-MD5 && make install clean
cd /usr/ports/security/p5-Digest-SHA1 && make install clean
cd /usr/ports/net-mgmt/p5-Net-IP && make install clean
cd /usr/ports/lang/p5-ExtUtils-F77 && make install clean
cd /usr/ports/www/p5-FCGI && make install clean
cd /usr/ports/www/p5-FCGI-ProcManager && make install clean
--------------------------------------

#安装nginx(组件根据自已需要勾选)
--------------------------------------
cd /usr/ports/www/nginx && make config

#安装php 5.6 on nginx(组件根据自已需要勾选)
cd /usr/ports/lang/php56 && make config

#安装php 5.6的扩展库(组件根据自已需要勾选)
cd /usr/ports/lang/php56-extensions && make config

#安装php常用的支持库
cd /usr/ports/databases/php5-redis && make install clean
cd /usr/ports/databases/pecl-memcache && make install clean
cd /usr/ports/graphics/ImageMagick && make install clean
cd /usr/ports/graphics/pecl-imagick && make install clean
cd /usr/ports/graphics/php-magickwand && make install clean

#安装常用的缓存及数据服务
cd /usr/ports/databases/redis && make install clean
cd /usr/ports/databases/memcached && make install clean
cd /usr/ports/www/xcache && make install clean
cd /usr/ports/databases/mysql56-client && make install clean
--------------------------------------

#将服务加入开机启动项
--------------------------------------
vi /etc/rc.conf

#############################
sendmail_enable=”NO”
sendmail_submit_enable=”NO”
sendmail_outbound_enable=”NO”
sendmail_msp_queue_enable=”NO”
############################
mysql_enable=”YES”
memcached_enable=”YES”
redis_enable=”YES”
############################
php_fpm_enable=”YES”
perl_fcgi_enable=”YES”
nginx_enable=”YES”
############################
pureftpd_enable=”YES”

#先启动redis和memcached服务,这两个无需配置,默认即可。
/usr/local/etc/rc.d/redis restart
/usr/local/etc/rc.d/memcached restart
--------------------------------------

#配置nginx
--------------------------------------
#下载配置脚本:附件 nginx-config.zip
#解压后获取文件(vhosts_params、nginx.conf、mime.types、fastcgi_params、domain.com)

目录结构

nginx /

|—— vhosts_params
|—— nginx.conf
|—— mime.types
|—— fastcgi_params
|——……..
|——vhosts
|——domain.com
|——……

#将 vhosts_params、nginx.conf、mime.types、fastcgi_params 文件移动到如下目录
mv vhosts_params /usr/local/etc/nginx/
mv fastcgi_params /usr/local/etc/nginx/
mv nginx.conf /usr/local/etc/nginx/
mv mime.types /usr/local/etc/nginx/

#然后进入nginx下建立 vhosts 目录
#vhosts目录以后放置 虚拟站点的配置文件
cd /usr/local/etc/nginx/
mkdir vhosts

#将 domain.com 移动到 /usr/local/etc/nginx/vhosts/ 目下
mv domain.com /usr/local/etc/nginx/vhosts/

#有关domain.com 的配置说明
server
{
listen 80;
#server_name _; #这个是所有域名均可访问
server_name abc.domain.com; #这个是指定域名访问

index index.html index.htm index.php index.cgi;
root /usr/local/www/abc.domain.com; #网站文件的目录位置

include vhosts_params;
}

#有关 vhosts_params文件的说明
#vhosts_params 文件是我建立的一个配置文件,主要方便后面做多个虚拟主机时可以快速的引用。

location ~* ^.+.gzjs$ { #支持对js、css等脚本的压缩
add_header Content-Encoding gzip;
gzip off;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #将图片文件本地缓存30天
expires 30d;
}

location ~ .*\.(js|css)?$ { #将js css文件本地缓存30天
expires 1h;
}

location ~ \.php$ { #php-fcgi的配置,支持php文件
gzip off;
fastcgi_pass unix:/var/run/php-fcgi.sock;
fastcgi_index index.php;
include fastcgi_params;
# fastcgi_cache ngx_fcgi_cache;
# fastcgi_cache_key $scheme$request_method$host$request_uri;
}

location ~ .*\.(pl|cgi)?$ { #perl-fcgi的配置,支持cgi pl文件
gzip off;
fastcgi_pass unix:/var/tmp/perl-fcgi.sock;
fastcgi_index index.cgi;
include fastcgi_params;
# fastcgi_cache ngx_fcgi_cache;
# fastcgi_cache_key $scheme$request_method$host$request_uri;
}

location ~ ^/nginxstatus/ { #打开nginxstatus状态显示
stub_status on;
}

error_page 404 = /404/; #定义404错误的信息

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

#配置nginx支持 php
--------------------------------------
#下载配置脚本:附件 php-config.zip
#替换原有的配置文件
mv php-fpm.conf /usr/local/etc/
mv php.ini /usr/local/etc/

#启动nginx和php-fpm
/usr/local/etc/rc.d/php-fpm restart
/usr/local/etc/rc.d/nginx restart

vi /usr/local/www/domain.com/phptest.php

#访问查看php情况:http://domain.com/phptest.php

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

#配置xcache php 缓存
--------------------------------------
#下载配置脚本:附件 xcache.ini.zip
#修改xcache.ini里的管理帐号密码
xcache.admin.user = “admin”
xcache.admin.pass = “11a885b207496d7460635c274ffa9da0″

#生成mud5加密密码在这里
#http://xcache.lighttpd.net/demo/cacher/mkpassword.php

#将xcache.ini放到php扩展目录下,php启动时会自动加载
mv xcache.ini /usr/local/etc/php/

#生成Xcache缓存文件
touch /var/tmp/xcache
chmod 777 /var/tmp/xcache

#xcache管理界面安装
cp -R /usr/local/share/examples/xcache/htdocs /usr/local/www/domain.com/

#访问以下地址,输入xcache配置的帐号密码进入。
http://doamin.com/xcache

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

#配置memcached 及 web状态监控界面
--------------------------------------
#memcached在php安装时已经勾选默认下php支持
#下载配置脚本:附件 memcache.php.zip
#修改memcache.php里的管理帐号密码

define(‘ADMIN_USERNAME’,’memcache’); // Admin Username
define(‘ADMIN_PASSWORD’,’password’); // Admin Password

#将memcache.php放到web目录下
mv memcache.php /usr/local/www/domain.com/

#访问memcached状态监控界面
http://domain.com/memcache.php

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

#配置安装perl的支持脚本(让nginx支持cgi pl)
--------------------------------------
#启动脚本 在/etc/rc.conf 增加 perl_fcgi_enable=“YES” 开机自动启动。
chmod 777 /usr/local/etc/rc.d/perl-fcgi
/usr/local/etc/rc.d/perl-fcgi

# nginx调用的fastcgi_perl解析脚本。
chmod 777 /usr/local/etc/perl-fcgi.pl
/usr/local/etc/perl-fcgi.pl

vi /usr/local/www/domain.com/perltest.cgi

#以下是代码:

#!/usr/bin/perl
print “Content-type: text/html\n\n”;

use strict;
use ExtUtils::Installed;

my $inst= ExtUtils::Installed->new();

my @modules = $inst->modules();

foreach(@modules)

{

my $ver = $inst->version($_) || “???”;

printf(“%-12s — %s\n”, $_, $ver);
printf(“”);

}

exit ;

#启动perl-fcgi服务
/usr/local/etc/rc.d/perl-fcgi restart

#访问查看perl已安装模块情况:http://domain.com/perltest.cgi

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

#安装mysql数据服务
--------------------------------------
cd /usr/ports/databases/mysql56-server
make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci PTHREAD_LIBS=-lthr WITHOUT_INNODB=yes WITH_OPENSSL=yes BUILD_OPTIMIZED=yes install clean

#启动mysql 自动会进行初始化
/usr/local/etc/rc.d/mysql-server start

mysql 5.6在初始化以后会在/usr/local/下生成my.cnf ,使用附件优化过的my.cnf替换它。
#下载配置脚本:附件 my.cnf.zip
mv my.cnf /usr/local/my.cnf

#重启启动mysql 应用新配置
/usr/local/etc/rc.d/mysql-server restart

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

#安装ftp服务器
--------------------------------------
cd /usr/ports/ftp/pure-ftpd && make install clean

#下载配置脚本:附件 pure-ftpd.zip

#pure-ftpd主配置文件
/usr/local/etc/pure-ftpd.conf

#pure-ftpd mysql配置文件
/usr/local/etc/pureftpd-mysql.conf

#修改pureftpd mysql配置文件,修改为自己的mysql配置信息
vi /usr/local/etc/pureftpd-mysql.conf

#pure-ftpd mysql数据库脚本,导入数据库
ftpadmin/extra/script.mysql

#pure-ftpd的web管理界面ftpadmin
mv ftpadmin /usr/local/www/domain.com

#配置pure-ftpd的web管理系统,修改为自己的mysql配置信息
vi /usr/local/www/domain.com/ftpadmin/config.php

访问pureftpd web管理界面
http://domain.com/ftpadmin

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

#检查开机启动的配置
--------------------------------------
vi /etc/rc.conf

#############################
sendmail_enable=”NO”
sendmail_submit_enable=”NO”
sendmail_outbound_enable=”NO”
sendmail_msp_queue_enable=”NO”
############################
mysql_enable=”YES”
memcached_enable=”YES”
redis_enable=”YES”
############################
php_fpm_enable=”YES”
perl_fcgi_enable=”YES”
nginx_enable=”YES”
############################
pureftpd_enable=”YES”
--------------------------------------

#启动服务
--------------------------------------
/usr/local/etc/rc.d/nginx restart
/usr/local/etc/rc.d/redis restart
/usr/local/etc/rc.d/memcached restart
/usr/local/etc/rc.d/perl-fcgi restart
/usr/local/etc/rc.d/php-fpm restart
/usr/local/etc/rc.d/pure-ftpd restart
/usr/local/etc/rc.d/mysql-server restart
--------------------------------------

#其它问题:
--------------------------------------
@@@ @@@ @@@ @@@ @@@ @@@ @@@
[FreeBSD] PHP 5.3.4 “Segmentation fault (core dumped)”
Starting php_fpm.
Segmentation fault (core dumped)
./php-fpm: WARNING: failed to start php_fpm

php -info 正常运行。
php -v 显示错误,并产生 php.core 文件

最后找到,原来在扩展中启用了 recode
原因是MySQLi扩展模块与recode扩展模块共同使用的时候,可能会造成PHP的崩溃和启动时出现问题。

在 extension.ini 中关掉
;extension=recode.so .

正常运行.

@@@ @@@ @@@ @@@ @@@ @@@ @@@
有关 Zend OPcache 和 xcache 和 memcache 共存效率问题

当同时配置Zend Opcache与XCache之后存在的问题:
XCache会非常有效,但是Zend Opcache的Cache hits非常少,命中率而且非常低,基本上Zend Opcache就无效了。
会出现HTTPD耗尽内存,而使得HTTPD“琐事”现象,网站无法访问,但是用free命令查看内存并没有用完(实在不清楚什么原因)。
之后去掉XCache,只留Zend Opcache,测试发现cache hits正常了,并且命中率很高。查看情况,可以用phpinfo()查看,也可以使用Opcache Control Panel查看缓存、命中率等情况。

这里需说明下,这并不是XCache效率不高,只是不适合两者同时使用。

所以建议使用 PHP 5.6 自带的 Zend Opcache,在XCache配置内关闭了 PHP 缓存器 xcache.size,只开使用 VAR 缓存器

注:php的优化器有两种,一种是php加速器(缓存php编译代码,提升php的执行效率),一种是php缓存扩展(将数据变量缓存,降低数据库的访问)。

 

以下文章点击率最高

Loading…

发表评论