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…