2013年2月

一、安装软件前的准备:

系统的安装:让机房最小化安装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"

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

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:

当你先已用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" 就可以强制安裝

通常在一台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