2013
02
28
14:18

Freebsd8.2 32位ports安装php5.2+fpm+mysql5.1+nginx+Zend

一、安装软件前的准备:

系统的安装:让机房最小化安装32位freebsd8.2系统。

ports的安装:机房装好系统后,远程登录,自己在线安装ports

命令:

sysinstall->Configure->Distributions->ports->FTP->China->OK

修改系统密码:passwd回车

二、手动安装nginx+php

(1) 进入系统后,准备cvs更新:

1. cd /usr/ports/net/cvsup-without-gui

# make install clean

2. cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile

3. # ee /etc/ports-supfile

将其中的#*default host=CHANGE_THIS.FreeBSD.org一行改为:

*default host=cvsup4.FreeBSDchina.org

{也可以指定更新版本日期,例如加上:*default date=2009.10.05.00.00.00

(这个可以省略)

}

4. 更新ports

/usr/local/bin/cvsup -g -L 2 /etc/ports-supfile

2) 安装mysql

#cd /usr/ports/databases/mysql51-server

#make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean

#cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf ##mysql的优化参数,也可以手动修改

#rehash

# mysql_install_db –user=mysql ##初始化mysql

#/usr/local/bin/mysqld_safe & ##启动mysql

#/usr/local/bin/mysqladmin -u root password ‘newpass’

##设置root密码,newpass是你需要设置的密码

关闭mysql可以使用mysqladmin -uroot -p shutdown

mysqladmin -uroot -p password ‘新密码’ 回车后输入旧密码

mysql -uroot -p #登陆mysql monitor.

3) 安装php

# cd /usr/ports/lang/php52装的是5.2版本,后装php5-extensions的时候对应的要cd /usr/ports/lang/php52-extensions

#make config ##配置编译参数

[X] CLI Build CLI version

[X] CGI Build CGI version

[ ] APACHE Build Apache module

[ ] DEBUG Enable debug

[X] SUHOSIN Enable Suhosin protection system

[X] MULTIBYTE Enable zend multibyte support

[ ] IPV6 Enable ipv6 support

[ ] REDIRECT Enable force-cgi-redirect support (CGI only)

[ ] DISCARD Enable discard-path support (CGI only)

[X] FASTCGI Enable fastcgi support (CGI only)

[X] FPM Build FPM version //php5.2 FPM依赖FASTCGI

[X] PATHINFO Enable path-info-check support (CGI only)

#make install clean

# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

4)升级libtool

#cd /usr/ports/devel/libtool/ && make reinstall clean

 

5) 安装php52-extensions

#cd /usr/ports/lang/php52-extensions //5.2版本的php必须对应装5.2版本的扩展

#make config

Options for php5-extensions 1.1

————————————————-

[X] CURL CURL support

[ ] FTP FTP support//咱们不要

[X] GD e in

[X] GETTEXT

[X] MBSTRING multibyte string support

[X] MCRYPT Encryption support

[X] MYSQL

[X] MYSQLi

[ ] PCRE Perl Compatible Regular Expression support

[ ] POSIX //去掉.

[ ] SQLITE //去掉.

[X] ZIP ZIP support

[X] ZLIB

# make install clean

不同以前版本,安装完php52-extensions发现很多扩展并没有安装,手动挨个去安装吧,包括:mysql、mysqli、gd、mbsting、curl,其中,安装gd扩展耗时较长,下载依赖类库较多,多次弹出选择框。

# cd /usr/ports/databases/php52-mysql

# make install clean

# cd /usr/ports/databases/php52-mysqli

# make install clean

# cd /usr/ports/graphics/php52-gd

# make install clean

# cd /usr/ports/converters/php52-mbstring

# make install clean

# cd /usr/ports/ftp/php52-curl

# make install clean

 

6) 安装Zend Optimizer

 

#cd /usr/ports/devel/ZendOptimizer/

 

#make #不要安装,只需要下载解包

 

#cd /usr/ports/devel/ZendOptimizer/work/ZendOptimizer-*

 

#./install-tty ##会出现一个文字的安装界面,只是最后一步,不要选择apache就可以了

6)        安装nginx

#cd /usr/ports/www/nginx/

#make install

 

配置nginx

在index.html前面添加一个index.php

 

location / {

root   /usr/local/www/nginx; #虚拟目录名

index   index.html index.htm;

}

#location ~ \.php$ {

#    fastcgi_pass    127.0.0.1:9000;

#    fastcgi_index   index.php;

#   fastcgi_param     SCRIPT_FILENAME     /scripts$fastcgi_script.name;

#    include     fastcgi_params;

#}

将前面的#去掉,修改为

location ~ \.php$ {

fastcgi_pass    127.0.0.1:9000;

fastcgi_index   index.php;

fastcgi_param CRIPT_FILENAME     /usr/local/www/nginx$fastcgi_script_name;

include     fastcgi_params;

}

/usr/local/sbin/php-fpm  //手动启动php-fpm

/usr/local/sbin/nginx  // 手动启动nginx

7)添加开机自启动:

在/etc/rc.conf中加入下面三行内容:

mysql_enable=”YES”

nginx_enable=”YES”

php_fpm_enable=”YES”

2013
02
28
14:02

dedecms安全设置之php.ini设置

php.ini中修改参数:

disable_functions = system,exec,shell_exec,passthru,proc_open,proc_close,proc_get_status,checkdnsrr,getmxrr,

getservbyname,getservbyport,syslog,popen,show_source,highlight_file,dl,socket_listen,socket_create,

socket_bind,socket_accept,socket_connect,stream_socket_server,stream_socket_accept,

stream_socket_client,ftp_connect,ftp_login,ftp_pasv,ftp_get,sys_getloadavg,disk_total_space,

disk_free_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,

posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,

posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,

posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,

posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,fsockopen,pfsockopen

 

allow_url_include = Off

2013
02
28
11:55

启用gzip模块优化网页

Nginx

 

http

{

: include conf/mime.types;

: gzip on;

: gzip_min_length 1000;

: gzip_buffers 4 8k;

: gzip_http_version 1.1;

: gzip_types text/plain application/x-javascript text/css text/html application/xml;

}

重启nginx

IIS6

打开Internet信息服务(IIS)管理器,右击”网站”→“属性”,选择”服务”。在”HTTP压缩”框中选中”压缩应用程序文件”和”压缩静态文件”,按需要设置”临时目录”和”临时目录的最大限制”;

在Internet信息服务(IIS)管理器,右击”Web服务扩展”→“增加一个新的Web服务扩展…“,在”新建Web服务扩展”框中输入扩展 名”HTTPCompression”,添加”要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中”设置扩展状态为允许”;

使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),找到Location =”/LM/W3SVC/Filters/Compression/gzip”,如果需要压缩动态文件,则将 HcDoDynamicCompression设置为”TRUE”,并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名, 如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置 为”TRUE”,并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css 等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数字越小压缩率越低;

编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开”开始”→“管理工具”→“服务”,停止”IIS Admin Service”后,即可保存;

最后,重新启动IIS。

Apache

编辑httpd.conf

在最下面加上:

<IfModule mod_deflate.c>

SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/css application/x-javascript

</IfModule>

重启apache:

2013
02
28
09:17

关于FORCE_PKG_REGISTER

当你先已用ports安装过某一软件,再次安装同一项时,会出现类似:You may wish to “make deinstall” and install this port again

by “make reinstall” to upgrade it properly.

If you really wish to overwrite the old port of PORTS資料夾位置

without deleting it first, set the variable “FORCE_PKG_REGISTER”

in your environment or the “make install” command line.

的错误。

 

解决办法:只要在make install 时加上 FORCE_PKG_REGISTER=”yes” 就可以强制安裝

2013
02
21
09:43

Apache VirtualHost设定

通常在一台Web Server上,會有數個不一樣的網站要執行,這時候各個網站的domain name就必須靠VirtualHost設定

VirtualHost基本設定

#指定主機所有port 80所指定的虛擬主機

NameVirtualHost *:80

 

<Virtualhost *:80>

#DNS

ServerName wp.johnsonlu.org

 

#Web Root Path

DocumentRoot /var/www/test

 

#Alias可以將DocumentRoot底下的路徑對應成特定目錄路徑

Alias /doc/ /var/www/test/doc/

 

#控制目錄權限

<Directory “/usr/share/doc/”>

#Options可以透過+號或-號來控制目錄權限,例如關閉Index目錄

#FollowSymLinks是允許連到DocumentRoot以外的其他目錄、MultiViews是多國語言支援

Options -Indexes FollowSymLinks MultiViews

 

#AllowOverride是用來設定Override權限。None代表關閉.htaccess;FileInfo則是開啟

AllowOverride None

 

#Order負責控制Deny和Allow執行順序

Order Deny,Allow

#控制要拒絕的連線

Deny from all

#控制可以通過的連線

Allow from 127.0.0.0/255.0.0.0

</Directory>

 

#Log

ErrorLog /var/log/error_log

</Virtualhost>

Alias也可以透過正規表示法設定成pattern,可以參考mod_alias

Directory設定可以參考Directory Directive

Allow和Deny的部份可以參考mod_access_compat

 

 

另外也可以把VirtualHost設定成動態的pattern

(需要開啟mod_vhost_alias module)

<VirtualHost *:80>

ServerName api.johnsonlu.org

ServerAlias *.api.johnsonlu.org

VirtualDocumentRoot /home/johnsonlu/www/api/%0/public

</VirtualHost>

這樣一來,假設我有一個/home/johnsonlu/www/api/test.api.johnsonlu.org/public的路徑,就可以對應到test.api.johnsonlu.org

VirtualDocumentRoot的字串pattern可以參考 mod_vhost_alias

2013
02
21
09:40

Apache压力测试工具 ApacheBench

這是Apache內建的壓力測試工具

指令為(ab or ab2)

ab -k -c 10 -n 10 http://xxxx.com/

-k 是代表KeepAlive

-c concurrent 代表同時進行壓力測試的數量

-n request number 代表request的數量

2013
02
21
09:38

Apache mod_deflate(gzip)

在Apache中,可以啟用mod_deflate來壓縮網頁,傳送給client後再由client端解壓縮,可以大大節省頻寬的使用

開啟方法:

#先到apache的httpd.conf中把mod_deflate.so註解拿掉(如果預設有引入的話就代表已經有使用deflate壓縮囉)

LoadModule deflate_module libexec/apache22/mod_deflate.so

#Ubuntu可以使用指令開啟

a2enmod deflate

接著可以在Apache設定檔(httpd.conf)中自訂一些設定

<IfModule mod_deflate.c>

#壓縮等級1~9,等級越高壓縮效能越好

DeflateCompressionLevel 9

#設定要壓縮的類型

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-httpd-php

#自訂Log格式及存放位置

DeflateFilterNote ratio

LogFormat ‘”%r” %b (%{ratio}n) “%{User-agent}i”‘ deflate

CustomLog /var/log/deflate_log deflate

</IfModule>

其他更細部的操作,例如BrowserMatch等等,可以直接參考Apache mod_deflate的說明

設定完成後重新啟動Apache即可,可以透過這個網站測試

2013
02
21
09:27

FreeBSD防火墙Firewall(ipfw)

先將kernel複製出來

mkdir /usr/local/etc/FreeBSD

cd /usr/src/sys/i386/conf

cp GENERIC /usr/local/etc/FreeBSD/MYKERNEL

ln -s /usr/local/etc/FreeBSD/MYKERNEL

vi /usr/local/etc/FreeBSD/MYKERNEL

加入

options IPFIREWALL #firewall

options IPFIREWALL_VERBOSE #enable logging to syslogd(8)

options IPFIREWALL_FORWARD #packet destination changes

options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default

cd /usr/src;make kernel

完成後開始設定

vi /etc/rc.conf

加入

#firewall

firewall_enable=”YES”

firewall_logging=”YES”

firewall_script=”/etc/rc.firewall”

vi /etc/rc.firewall

將內容全部刪除改為

#!/bin/sh

fwcmd=”/sbin/ipfw”

Trust_IP1=”127.0.0.1″ #這裡要換成server本身的IP

Trust_IP2=”120.119.1.0/24″ #可通過的網段

UnTrust_IP1=”192.83.191.0/24″

Allowed_TCP_In_1=”22,25,53,80,443″

#you want to open port

Traceroute=”33433-33499″

Allowed_UDP_Out=”20,21,53,113″

Allowed_UDP_In=”20,21,53,113″

Allowed_UDP_ftp_Out=”65000-65500″

Allowed_UDP_ftp_In=”65000-65500″

Allowed_TCP_ftp_Out=”65000-65500″

Allowed_TCP_ftp_In=”65000-65500″

#ipfw [add/del/fwd] [serial] [allow/deny] [protocol] [from] [ports] to [destation] [ports]

$fwcmd -f flush

#flush ipfw tables

$fwcmd add 1 allow ipv6 from any to any

$fwcmd add 00010 allow tcp from me to any setup keep-state

$fwcmd add 00021 check-state

$fwcmd add 00030 allow ip from ${Trust_IP1} to any

$fwcmd add 00031 allow ip from ${Trust_IP2} to any

$fwcmd add 00060 allow icmp from any to any

$fwcmd add 00061 allow udp from any to any $Traceroute

$fwcmd add 00120 deny ip from ${UnTrust_IP1} to me

$fwcmd add 00121 deny tcp from ${UnTrust_IP1} to me 25

$fwcmd add 56000 allow tcp from any to any ${Allowed_TCP_In_1}

$fwcmd add 56003 allow udp from any ${Allowed_UDP_In} to any

$fwcmd add 56004 allow udp from any to any ${Allowed_UDP_ftp_Out}

$fwcmd add 56005 allow tcp from any to any ${Allowed_TCP_ftp_Out}

$fwcmd add 65534 deny log ip from any to any

#deny all ip

$fwcmd zero

#clean counter

sh /etc/rc.firewall &

reboot

2013
02
21
09:25

FreeBSD安裝sshguard-ipfw

請先完成ipfw設置

cd /usr/ports/security/sshguard-ipfw;make install clean

在/etc/syslog.conf 中

把

#auth.info;authpriv.info |exec /usr/local/sbin/sshguard

註解去掉

也可以自由設定鎖定時間

例如:

auth.info;authpriv.info |exec /usr/local/sbin/sshguard -a 5 -p 7200 -s 3600

(a:失敗多少次 p:被擋多久(秒) s:多少秒忘記攻擊)

最後/etc/rc.d/syslogd restart

接著你可以tail -f /var/log/auth.log,然後用putty連線,密碼請故意打錯四次,就會出現:

Jan 26 13:31:05 earth sshguard[40059]: Blocking 210.71.11.116:4 for >420secs: 4 failures over 2 seconds.

解除鎖定:

使用另一個IP登入

ipfw show

ipfw delete xxxxx

2013
02
21
09:11

FreeBSD安装pure-ftpd

cd /usr/ports/ftp/pure-ftpd

make install clean(選UTF-8)

cd /usr/local/etc

cp pure-ftpd.conf.sample pure-ftpd.conf

vi /etc/rc.conf

加入

pureftpd_enable=”YES”

ftp傳輸檔案時是有特定的port,

如果防火牆有擋port,可以自行設定ftp檔案傳輸的port

vi /usr/local/etc/pure-ftpd.conf

將PassivePortRange這行改成

PassivePortRange 65000 65500

啟用ftp

/usr/local/etc/rc.d/pure-ftpd start