顯示具有 FreeBSD 標籤的文章。 顯示所有文章
顯示具有 FreeBSD 標籤的文章。 顯示所有文章

2012年11月12日 星期一

====== FreeBSD + Nginx + php + MySQL ======

====== FreeBSD + Nginx + php + MySQL ======

資料來源:http://www.mgt.ncu.edu.tw/~jerry54010/doku/data/pages/freebsd/8.1_nginx_php_mysql.txt


我個人是直接把apache直接換成Nginx \\

其他只是多安裝一些模組而已,因此換起來還好, \\

不過還是稍微會寫一些安裝上的順序。 \\



==== 安装MySQL ====

(此部份是[[freebsd:8.1安裝紀錄
此篇文章]]直接複製過來,MySQL server的安裝步驟其實都一樣)



*安裝mysql server

設定編碼為utf8



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

# make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_unicode_ci BUILD_OPTIMIZED=yes install clean



*安裝資料庫



#rehash

#sudo mysql_install_db (記得需要用root權限)



*複製設定檔

#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

*變更mysql資料庫權限

#sudo chown -R mysql:mysql /var/db/mysql

*初始啟動

#sudo mysqld_safe &



*新增使用者root

#sudo mysqladmin -u root -p password 'Your_password'

也可以是這樣

#sudo mysqladmin -u root passowrd 'Your_password'



前者會出現"Enter Password", 就當做是confirm就好了



*進入MySQL

#sudo mysql -u root



輸入剛剛設定的密碼即可



==== 安裝PHP ====



*安裝php



# cd /usr/ports/lang/php5

# make config install clean





將下面的模組勾一勾,沒有的選項就不管他了~



[X] CLI Build CLI version

[X] CGI Build CGI version

[X] FPM 必勾!!! Nginx處理php時是要交給他處理

[X] 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] PATHINFO Enable path-info-check support (CGI only)



*安裝php5-entensions



# cd /usr/ports/lang/php5-extensions/

# make config install clean



勾選需要的extension,下面必裝,其餘隨意。



[X] FTP FTP support

[X] GD

[X] GETTEXT

[X] MBSTRING

[X] MYSQL

[ ] POSIX //去掉.

[ ] SQLITE //去掉.

[X] ZLIB



*修改PHP設定檔



# cd /usr/local/etc

# cp php.ini-development php.ini





==== 安裝nginx ====



#cd /usr/ports/www/nginx/

#make install clean



安裝nginx就是這麼簡單~



設定nginx的部份:

編輯/usr/local/etc/nginx/nginx.conf



將#user nobody;

改成:user www;



找到下面的部份:



location / {

root /usr/local/www/nginx; //網頁目錄可以換,看你網頁放哪 (ex./home/www)

index index.html index.htm; //記得加入 index.php 等等

}





下面是給FPM處理PHP的部份,記得先將前面的#註解刪掉, \\

然後將fastcgi_param的/scripts$fastcgi_script.name \\

更改為:/你的網頁目錄$fastcgi_script.name \\

例如:/home/www$fastcgi_script.name \\



#location ~ \.php$ {

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script.name;

# include fastcgi_params;

#}





安裝完後



記得編輯 /etc/rc.conf

加入



mysql_enable="YES"

nginx_enable="YES"

php_fpm_enable="YES"



這樣就可以啦~~~



如果有phpmyadmin的話,可以將該資料夾整個複製到網頁根目錄底下,就可以操作了~~

2012年11月11日 星期日

Freebsd6.1+AMP手工整合指南

來源:http://www.linuxdiyf.com/viewarticle.php?id=25784


Freebsd6.1+Apache2.2.3+Mysql5.0.26+PHP5.1.6+phpMyAdmin2.9.0.2手工整合指南


swallow發佈於 2006-11-09 


經過一晚上的操作,終於成功整合.寫一篇文章和大家交流一下經驗,什麼問題可以聯繫我. 我使用的操作系統是FreeBSD最新版本6.1,如果是別的操作系統安裝方法有少許不一樣,請作適當處理.
說明:本文檔系alone原創,經過辛勤實驗,努力編輯而成,轉載無妨,請不要修改任何內容。參考不少前輩文章,不一一列舉,謹表感謝!如有錯誤,敬請好手斧正!費話少說,進入正題.

首先安裝整合的工具必不可少.我整個過程用的到工具如下:
Freebsd6.1
下載地址:http://www.freebsd.org
Apache2.2.3
下載地址: http://www.apache.org
Mysql5.0.26 for freebsd
下載地址: http://dev.mysql.com/downloads/
Php5.1.6
下載地址: http://www.php.net/downloads.php
libxml2-2.6.19
下載地址:
http://ftp.gnome.org/pub/GNOME/s ... bxml2-2.6.19.tar.gz
libiconv-1.9.1
下載地址: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
Phpmyadmin2.9.0.2 for nix
下載地址: http://www.mycodes.net/soft/6369.htm


一、 Freebsd的安裝
安裝FreeBSD就不講了,熟悉linux的很容易上手,只要稍微定製一下就可以了,過程我就不說了。建議新手選擇ALL安裝方式。

二、 安裝Apache 

安裝Apache要簡單點,我這裡安裝的Apache版本是 httpd-2.2.3,下載回來的包叫做 httpd-2.2.3.tar.gz 我們放在 /usr/local/src目錄下。如果沒有該目錄,就自己建一個。
首先進入目錄後解壓縮: 
# cd /usr/local/src 
# tar -zxvf httpd-2.0.50.tar.gz 
然後就會得到 httpd-2.0.50目錄,我們進入目錄 
# cd httpd-2.0.50 
首先配置: 
# ./configure --prefix=/usr/local/apache \--enable-module=so 
\*--prefix指定我們要把Apache安裝在那個目錄,我們這裡裝在 /usr/local/apache下*\
\*--enable-module=so必設,不然後面配置php時要出問題*\
執行上面的命令,如果沒有錯誤信息,證明配置成功,然後進行編譯: 
# make 
一兩分鐘就編譯完了,然後進行安裝: 
# make install 
安裝完成後,Apache就存放在 /usr/local/apache目錄下了, bin是執行文件的目錄,conf是配置文件目錄,htdocs是網頁的主目錄,logs是日誌目錄. 
Apache通過 bin/apachectl或者bin/httpd來控制啟動或者停止. 

# /usr/local/apache/bin/httpd -k start #啟動apache 
# /usr/local/apache/bin/httpd -k stop #停止apache 
# /usr/local/apache/bin/httpd -k restart #重啟apache 

然後你可以通過 http://IP來測試apache是否安裝成功,如果出現apache的頁面則安裝成功,否則請檢查上面的步驟.

三、 安裝MySQL 

我使用的的Mysql是5.0.26二進製版,不需要編譯。 
把它下到/usr/local/src目錄下,下載回來的包名字叫 mysql-5.0.26.tar.gz,然後我們把它解壓出來: 

# tar -zxvf mysql-5.0.26.tar.gz 

解壓後生成/usr/local/mysql目錄,我們進入該目錄: 

# cd mysql

#pw groupadd mysql #建立mysql組
#pw useradd –g mysql mysql #建立mysql用戶並且加入到mysql組中
#scripts/mysql_install_db --user=mysql #初試化表並且規定用mysql用戶來訪問
#chown -R root . #然後設置權限
#chown -R mysql data
#chgrp -R mysql .
設置完成後,基本上就裝好了,好了,我們運行一下我們的mysql: 

# /usr/local/mysql/bin/mysqld_safe --user=mysql & 

如果沒有問題的話,應該會出現類似這樣的提示: 
[1] 42264 # Starting mysqld daemon with databases from /usr/local/mysql/var 
這就證明你安裝成功了,如果出現: 

[1] 42264 
# Starting mysqld daemon with databases from /usr/local/mysql/var 
062110 01:53:45 mysqld ended 

則證明你的mysql運行不來,請查看錯誤日誌: /usr/local/mysql/var/*.err 然後確定安裝是否成功,如果沒有成功,請檢查上面的步驟是否正確 


安裝完成後,能夠通過 /usr/local/mysql/bin/mysql 來連接mysql進行管理,如果你裝了apache並且能夠解析php的話,也能使用phpMyadmin來管 

理你的mysql,記得裝完後使用mysql或者mysqladmin來修改root的密碼,這裡我們就不說了,請參考相關的文章. 

四、 安裝php5腳本支持 
去以下地址下載源代碼包到/usr/local/src/下, 
接著,安裝libxml2 (安裝php5必須,我們先不裝,測試一下效果): 
#cd /usr/local/src 
#tar –zxvf php-5.1.6.tar.gz 
#cd php-5.1.6 
#./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-libxml-dir=/usr/local/libxml2 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte 
有關於zend 的參數 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
可見php內建對php加速軟件zend的支持
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
configure: error: xml2-config not found. Please check your libxml2 installation.
出錯啦 
現在來裝libxml2
#tar –zxvf libxml2-sources-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure
#make;make install 
再來配置:
# cd /usr/local/src/php-5.1.6
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
顯示:

configure: error: Please specify the install prefix of iconv with --with-iconv= ;

--with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI.
xmlrpc-epi is an implementation of the xmlrpc protocol in C. It provides an easy to use API for developers to serialize RPC requests to and from XML.

# cd /usr/ports/converters/iconv
# make all
# make install
===>; Installing for iconv-2.0_3
===>; iconv-2.0_3 depends on file: /usr/local/bin/perl5.8.5 - found
===>; Generating temporary packing list
===>; Checking if converters/iconv already installed
pkg_info: package bsdpan-DBD-mysql-2.9007 has no origin recorded
pkg_info: package bsdpan-DBI-1.48 has no origin recorded
===>; lib
install -C -o root -g wheel -m 444 libbiconv.a /usr/local/lib
install -C -o root -g wheel -m 444 libbiconv_p.a /usr/local/lib
install -s -o root -g wheel -m 444 libbiconv.so.2 /usr/local/lib
ln -fs libbiconv.so.2 /usr/local/lib/libbiconv.so
install -C -o root -g wheel -m 444 biconv.h /usr/local/include
install -o root -g wheel -m 444 biconv.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_open.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_close.3.gz /usr/local/man/man3
===>; ccs
cd /usr/ports/converters/iconv/work/iconv-2.0/ccs; install -o root -g wheel -m 444 big5.cct cns11643-plane1.cct cns11643-plane2.cct cns11643-plane14.cct cp775.cct cp850.cct cp852.cct cp855.cct cp866.cct gb_2312-80.cct iso-8859-1.cct iso-8859-2.cct iso-8859-4.cct iso-8859-5.cct iso-8859-15.cct jis_x0201.cct jis_x0208-1983.cct jis_x0212-1990.cct koi8-r.cct koi8-u.cct ksx1001.cct shift_jis.cct /usr/local/share/iconv; install -o root -g wheel -m 555 iconv_mktbl /usr/local/bin
===>; ces
cd /usr/ports/converters/iconv/work/iconv-2.0/ces && install -o root -g wheel -m 444 euc-jp.so euc-kr.so euc-tw.so gb2312.so iso-10646-ucs-2.so iso-10646-ucs-4.so ucs-2-internal.so utf-16.so /usr/local/libexec/iconv
===>; util
install -s -o root -g wheel -m 555 biconv /usr/local/bin
install -o root -g wheel -m 444 biconv.1.gz /usr/local/man/man1
{ echo "# BEGIN iconv"; cat /usr/ports/converters/iconv/work/iconv-2.0/ccs/charset.aliases /usr/ports/converters/iconv/work/iconv-2.0/ces/charset.aliases | /usr/ports/converters/iconv/work/iconv-2.0/iconv_builtin -n us-ascii utf-8 ucs-4-internal; echo "# END iconv"; } >; /usr/local/share/iconv/charset.aliases
===>; Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>; Registering installation for iconv-2.0_3

再裝libiconv-1.9.1.tar.gz,把libiconv-1.9.1.tar.gz放到/usr/local/src/下
# tar -zvxf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure
#make;make install
# cd /php-5.0.4
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte 
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+

到此php5成功配置完成. Thanks : )
#make
#make test
#make install
# cp /usr/local/src/php-5.0.4/php.ini-dist /usr/local/lib/php.ini

配置php.ini請參考手冊

五、 phpMyAdmin的安裝 
phpMyAdmin是比較好的通過web訪問方式來管理數據庫的免費程序。
下載該程序後,通過flashfxp上傳到/usr/local/apache/htdocs/目錄下,執行如下命令: 
#cd /usr/local/apache/htdocs 
#tar –zvxf phpMyAdmin-2.9.0.2.tar.gz 
mv –fi phpMyAdmin-2.9.0.2 phpmyadmin 
www# cd phpmyadmin 
www#cp config..simple.inc.php config.inc.php
修改config.inc.php文件如下: 
(1)查找$cfg['PmaAbsoluteUri'] = ''; ,將該行內容更改為$cfg['PmaAbsoluteUri'] = 'http://IP/phpmyadmin/'; 
執行:wq!命令保存退出,在IE瀏覽器裡輸入http://IP/phpmyadmin/就可以訪問了。 
請注意其中的紅色文字,默認的mysql數據庫用戶名root是沒有密碼的,這是一個安全漏洞,所以我們要修改數據庫的密碼,請執行如下步驟: 
首先點「權限」,進入另一個頁面 
在新頁面中,勾選三個用戶,只剩下一個用戶名為root、主機為localhost的用戶,然後點「執行」來刪除那三個勾選的用戶,
只 剩下一個root用戶了,勾選它,點「編輯」, 再點擊「更改密碼」下面的「密碼」前的圓圈,選擇它,然後敲入你的mysql數據庫密碼(比如789),再點「執行」。這樣mysql的數據庫密碼就改變 了。當然了,我們也可以通過phpmyadmin來創建新的mysql數據庫名,用戶名等等,這些功能就要你自己去探索了。我們再點IE瀏覽器裡的「刷 新」來刷新該頁面,就會出現無法訪問的情況。 
出現上面的情況後,也不要著急,我們可以修改phpmyadmin的配置文件config.inc.php來解決這個問題,執行如下命令: 
www#vi config.inc.php 
更改內容如下: 
(2)查找$cfg['Servers'][$i]['auth_type'] = 'config'; 
更改為$cfg['Servers'][$i]['auth_type'] = 'http'; 
$cfg['Servers'][$i]['controluser'] = '你的用戶名'; 
$cfg['Servers'][$i]['controlpass'] = '你的密碼'; 
然後重新在IE瀏覽器裡輸入http://IP/phpmyadmin/ 訪問,敲入用戶名「root」和密碼後,點「確定」,就可以重新進入到phpmyadmin管理頁面,至此,phpmyadmin安裝完畢。


到些,整個過程完畢.你可以上傳php網站程序、修改apache的httpd.conf文件配置一台高性能的web服務器,當然也不要忘了mysql數據庫對數據庫、用戶相應的增減。在這裡我就不說了。現在已經是凌晨3點,累就一個字。呼呼去咯……



後話:當然你也可以直接選擇ports安裝,更方便快捷。
附過程:
# cd /usr/ports/www/apache2
# make install clean

# cd /usr/ports/databases/mysql5X-server
# make install clean
# source ~/.cshrc
# mysql_install_db --user=mysql

# cd /usr/ports/lang/php5
# make install clean
在出現的界面中選中apache2, 如果要用zend,不要選debug

cp /usr/local/etc/php.ini-dist php.ini
vi /usr/local/etc/apache2/httpd.conf
添加
AddType application/x-http-php .php
AddType application/x-http-php-source .phps
在 DirectoryIndex 後加一個 index.php

# cd /usr/ports/lang/php5-extensions
# make config
在出現的界面中選種想要的
# make install clean

如果要裝zend,去www.zend.com 下載相應的包,解壓縮
# ./install.sh

就這麼簡單。
如果php要裝GD libxml2 libxslt 等支持,源碼都要自己裝,用ports只要選一下就ok了~而且以後方便升級和維護。


2012年3月26日 星期一

FreeBSD 6.2+APACHE+PHP+MYSQL WEB服務器入門級安裝與配置全教程


FreeBSD 6.2+APACHE+PHP+MYSQL WEB服務器入門級安裝與配置全教程 (2007-11-18 15:17)
分類: BSD WWW服務器架設


設置DNS
===========================================
ee /etc/resolv.conf
修改
           nameserver         10.0.xx.xx
           nameserver         10.0.xx.xx

#設置cvsup
#目前已經改用/usr/bin/csup 安裝FreeBSD時,已經安裝完成
#===========================================
#ee /usr/share/examples/cvsup/standard-supfile
#ee /usr/share/examples/cvsup/ports-supfile
#           *default host=cvsup.freebsd.org
#cvsup -L 2 -h cvsup.freebsd.org /usr/share/examples/cvsup/standard-supfile
#rehash
#cvsup -L 2 -h cvsup.freebsd.org /usr/share/examples/cvsup/ports-supfile
#rehash

網絡優化
===========================================
ee /etc/sysctl.conf
net.inet.ip.check_interface=1
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.tcp.recvspace=65535
net.inet.tcp.sendspace=65535
kern.ipc.somaxconn=32768
kern.ipc.maxsockbuf=2097152
net.inet.ip.redirect=0
net.inet.icmp.icmplim=100
net.inet.tcp.always_keepalive=1
net.inet.tcp.delayed_ack=1
net.inet.udp.maxdgram=65535
net.local.stream.sendspace=65535
net.local.stream.recvspace=65535
kern.maxfiles=65536
kern.maxfilesperproc=65536
net.inet.udp.checksum=1
net.inet.tcp.msl=7500
net.inet.tcp.syncookies=1
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
kern.securelevel=0

安裝多線程下載工具axel
===========================================
cd /usr/ports/ftp/axel
make install clean
rehash

ee /etc/make.conf

FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=

DISABLE_SIZE=yes
SUPFILE=        /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE=   /usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=     /usr/share/examples/cvsup/doc-supfile
# ..... FreeBSD distfiles mirror ..
SUP_UPDATE=     yes
#SUP=            /usr/local/bin/cvsup
SUP=            /usr/bin/csup
SUPFLAGS=       -g -L 2

MASTER_SITE_BACKUP?=    \
    ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
    ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=  ${MASTER_SITE_BACKUP}


配置中文環境
===========================================
ee /.cshrc
set prompt = "%{^[[1m%}[%n@%m %{^[[33m%}%c%{^[[37m%}]%{^[[0m%} "
setenv  LSCOLORS "gxfxcxdxbxegedabagacad"
alias date 'date "+%Y-%m-%d  %H:%M:%S"'


setenv           EDITOR             ee
setenv           LC_ALL             zh_TW.Big5
setenv           LANG               zh_TW.Big5
setenv           LC_CTYPE           en_US.ISO8859-1

#big5cce - 繁體中文 Console 環境
# cd /usr/ports/outta-port/big5cce
# make install clean

安裝perl
===========================================
# cd /usr/ports/lang/perl5.8
# make install clean ; rehash

安裝openssl
===========================================
# cd /usr/ports/security/openssl
# make install clean ; rehash

安裝Ports檢查更新工具
===========================================
# cd /usr/ports/sysutils/portupgrade (找不到這個目錄,沒裝)
# make install clean ; rehash

安裝mysql
===========================================
cd /usr/ports/databases/mysql50-server/
make WITH_CHARSET=big5 WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean

ee /etc/my.cnf
[mysqld]
skip-networking
skip-innodb
skip-bdb
skip-name-resolve
skip-locking
#log-bin
# 2g server
key_buffer=512M
max_allowed_packet=4M
table_cache=1024
thread_cache=64
join_buffer_size=32M
sort_buffer=32M
record_buffer=32M
max_connections=512
wait_timeout=120
interactive_timeout=120
max_connect_errors=30000
long_query_time=1
max_heap_table_size=256M
tmp_table_size=128M
thread_concurrency=8
myisam_sort_buffer_size=128M

# cp /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql.sh
# ee /etc/rc.conf
mysql_enable="YES"

/usr/local/etc/rc.d/mysql-server start

安裝apache22
===========================================
cd /usr/ports/www/apache22/
make WITH_MPM=worker WITHOUT_IPV6=yes WITH_THREADS=yes WITHOUT_SSL=yes install clean
安裝過程中,取消ipv6

apache隨系統啟動
# ee /etc/rc.conf
apache22_enable="YES"

啟動apache
/usr/local/etc/rc.d/apache22 start


安裝php
===========================================
cd /usr/ports/lang/php5
make WITHOUT_X11="YES" WITH_APACHE22=yes install clean
安裝過程中,選擇apache,取消ipv6

安裝php擴展
===========================================
cd /usr/ports/lang/php5-extensions
make install clean ; rehash
可以選擇
CALENDAR
CTYPE
GD
ICONV
MBSTRING
MYSQL
PCRE
SESSION
SOCKETS
ZIP
ZLIB

配置php
===========================================
# cd /usr/local/etc
# cp php.ini-recommended php.ini
# ee php.ini
disable_functions = passthru, exec, phpinfo, system, ini_alter, readlink, symlink, leak, proc_open, popepassthru, chroot, scandir, chgrp, chown, escapeshellcmd, escapeshellarg, shell_exec, proc_get_status

配置apache
===========================================
具體選項參考http://lamp.linux.gov.cn/Apache/ApacheMenu/index.html
cd /usr/local/etc/apache22/
cp httpd.conf httpd.conf.bak
ee /usr/local/etc/apache22/httpd.conf
DocumentRoot "/usr/www"           # 網站主目錄
          # 網站主目錄
Options FollowSymLinks

DirectoryIndex index.html index.php index.htm


AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

AddDefaultCharset big5
ServerTokens Prod
ServerSignature Email
          # 優化針對BSD的網絡支持
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000


安裝ZendOptimizer
===========================================
ZendOptimizer屬於商業軟件,所以不能通過ports編譯安裝,只能下載安裝
# ln -s /lib/libm.so.3 /lib/libm.so.2
# mount /cdrom
# cp -R /cdrom/Zend /usr/ports/devel/Zend
# cd /usr/ports/devel/zend
# ./install
一路默認

2012年1月16日 星期一

如何修改mysql數據文件存儲位置


FreeBSD主機上的mysql安裝的時候數據庫文件放在/var/db/mysql下,在Linux主機上的默認存儲位置是/var/lib/mysql/下。

如果想更換mysql的數據文件的存儲位置,則:
FreeBSD下:
# /usr/local/etc/rc.d/mysql-server stop(停止mysql) 
# mkdir /other/db(建立新的數據文件目錄,也可以直接移動過來) 
# mv /var/db/mysql /other/db(移動數據文件) 
# ln -s /other/db/mysql /var/db/mysql(建立數據文件的軟鏈接) 
# /usr/local/etc/rc.d/mysql-server start(啟動mysql)
OK!
Linux下:
(linux下經過測試,可以不用停止mysql而直接操作,不過如果是經常更新的數據庫還是先停止的好,停止的方法在此就不介紹了!)
# mkdir /data/database(建立新的數據文件目錄,也可以直接移動過來) 
# mv /var/lib/mysql /data/database/(移動數據文件) 
# ln -s /data/database/mysql /var/lib/mysql(建立數據文件的軟鏈接)
如果您的操作用戶不是mysql,例如root用戶操作,那可能mysql對新建立的數據文件夾沒有讀取權限,還有chown,或者是chgrp,chmod才可以!

2012年1月8日 星期日

clientmqueue過多,造成inode爆滿

clientmqueue過多,造成inode爆滿


Squid 不能正常啟動,messages裏出現錯誤: /bsd: uid 25 on /var: out of inodes


於是我懷疑文件太多爆滿了,當時沒用命令 df -i 查看,就直接用命令「 du -hs /var/* 」查找哪個文件過多了,發現/var/spool/clientmqueue/ 佔了2G錯。裏面很多文件。於是動手刪除,直接用rm,會出現Argument list too long

想到用xargs ,

# cd /var/spool/clientmqueue

# ls
xargs rm -rf

找了/var/spool/clientmqueue/ 裏的一文件一看,內容全是crontab產生的通知信息。

解決辦法:

將crontab裏面的命令後面加上 > /dev/null 2>&1 。

或者crontab裏面的命令後面加上 > /dev/null 。

2011年5月24日 星期二

Freebsd 7.0 安裝cacti手冊

Freebsd 7.0 安裝cacti手冊


原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://5ydycm.blog.51cto.com/115934/113305
[背景]公司的監控平台大部分都是freebsd,為了以後安裝方便寫了個這個手冊,供以後用.
[內容]
注意:在安裝apache後,就開一個測試頁,裝了php,就一直用phpinfo來檢測改變!  記住要用apachectl graceful
(1)安裝apache
cd /usr/ports/www/apache22
make config
選擇mysql
make install clean
ee rc.conf
apache22_enable="YES"
(2)安裝php
cd /usr/ports/lang/php5
make config
選擇apache
make install clean
修改httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
(3)安裝mysql
cd /usr/ports/database/mysql50-server
make install clean
/usr/local/bin/mysql_install_db --user=mysql
/usr/local/bin/mysqld_safe --user=mysql&
ee rc.conf
mysql_enable="YES"
(4)安裝php-extensions
cd /usr/ports/lang/php5-extensions
make config
選擇mysql
make install clean
[測試php連接mysql]
db.inc
$host="localhost";
$user="root";
$pwd="badboy";
?>
index.php
require_once "db.inc";
$db=mysql_pconnect($host,$user,$pwd);
if ($db){
echo "connect!";
}
?>
(5)安裝zend
cd /usr/local/devel/ZendOptimizer
make install clean
add
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613/ZendExtensionManager_TS.so"
[注意]
上面的路徑中"20060613"這個是變量,不是固定的.
解決一個[問題]
Failed loading /usr/local/lib/php/20060613/ZendExtensionManager.so:  Shared object "libm.so.4" not found, required by "ZendExtensionManager.so"
報錯
解決辦法:ln -s /lib/libm.so.5 /usr/lib/libm.so.4即可。
(6)安裝rrdtool
cd /usr/ports/database/rrdtool
make install clean
(7)安裝net-snmp
cd /usr/ports/net-mgmt/net-snmp
make install clean
自動的會將snmp support加入到php的擴展功能中,所以在php擴展模塊選擇上面沒有選擇snmp
ee /etc/snmpd.conf
###################################################################
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):
#       sec.name  source          community
com2sec notConfigUser  default  passwd

####
# Second, map the security names into group names:
#               sec.model  sec.name
group   notConfigGroup v1           notConfigUser
group   notConfigGroup   v2c           notConfigUser
####
# Third, create a view for us to let the groups have rights to:
#           incl/excl subtree                          mask
view all    included  .1                               80
####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:
#                context sec.model sec.level match  read   write  notif
access notConfigGroup ""      any       noauth    exact  all    none   none
#############################################################################
(8)安裝cacti
cd /usr/ports/net-mgmt/cacti
make config
選擇擴展插件
make install clean

[注意]
每一款軟件安裝最後,都會有相應的提示,如snmp安裝後,cacti安裝後......有些可能是配置說明文檔
本文出自 「壞男孩」 博客,請務必保留此出處http://5ydycm.blog.51cto.com/115934/113305

*可參閱CACTI 流量監控工具 (此文以FreeBSD 5.4 Release為範例,有些ports路徑有更改,請小心!!

2011年5月16日 星期一

FreeBSD指令整理

FreeBSD學習筆記整理
1、查看CPU:
sysctl hw.model hw.ncpu
dmesg | grep 「CPU:」
2、查看內存:
dmesg | grep 「real memory」 | awk -F 『[( )]『 『{print $2,$4,$7,$8}』
查看swap:
top | grep 「Swap:」 | awk 『{print $1,$2}』
3、查看硬盤:
diskinfo -vt /dev/ad0
disklable /dev/ad0s2 #查看分區信息
看硬盤大小:
dmesg | grep 「sector」 | awk 『{print $1,$2}』
diskinfo -v /dev/da0 | grep 「in bytes」 | awk -F'[()]『 『{print $2}』
4、查看服務器品牌:
dmesg | grep 「ACPI APIC」
5、掛載文件系統:
fat32:mount_msdosfs -L zh_CN.eucCN /dev/ad0s1 /mnt
ntfs:mount_ntfs -C eucCn /dev/ad0s1 /mnt
cdrom:mount_cd9660 /dev/acd0 /mnt
註:ntfs在FreeBSD中只能讀無法寫入
6、給文件添加或禁用系統禁刪標誌(目錄不適用):
chflags sunlink file1
chflags nosunlink file1
7、初始化磁盤:
fdisk -BI ad1
8、建立FreeBSD分區:
disklabel -B -w -r ad1s1 auto
9、建立邏輯分區:
disklabel -e ad1s1
10、格式化分區,創建文件系統:
newfs /dev/ad1s1e
11、顯示PCI硬件信息:
pciconf -lv
12、開啟Linux 二進制兼容支持(啟用這一功能最簡單的方法是載入 linux KLD 模塊):
kldload linux
讓Linux兼容在系統初始化時自動啟用,在/etc/rc.conf中中入:
linux_enable=」YES」
13、檢查KLD模塊是否加載:
kldstat
14、在內核中靜態鏈接進Linux二進制兼容模式,在內核配置文件裡面加入:
options COMPAT_LINUX
15、設置網卡em0的IP地址:
ifconfig em0 inet 192.0.2.10 netmask 255.255.255.0
16、給網卡em0設置添加一個別名IP地址:
ifconfig em0 inet 192.168.51.45/24 add
17、刪除網卡的別名IP地址:
ifconfig em0 inet 192.168.51.45 -alias
18、設置網卡em0的工作模式為100baseTX全雙式:
ifconfig em0 media 100baseTX mediaopt full-duplex
19、當/usr/local/etc/rc.d下的腳本無法自動啟動時,可嘗試在/etc/rc.conf中加入一行:
local_startup=」/usr/local/etc/rc.d」
20、在ports中尋找需要的軟件,進入/usr/ports目錄執行:
make search name=lsof 或 echo /usr/ports/*/*lsof* 或 whereis lsof
make search key=關鍵字 # 在名字、註釋、描述中搜索關鍵字
21、使用package方式安裝管理軟件,使用以下命令:
pkg_add lsof-4.56.4.tgz # 安裝軟件包
pkg_info  # 列出已安裝所有軟件包
pkg_version  # 統計所有安裝的軟件版本,比較本地package的版本與ports目錄中的當前版本是否一致
pkg_delete lsof-4.56.4 # 刪除軟件包,需提供完整包名
22、使用CVSup協議更新本地ports:(將cvsup.FreeBSD.org改為離得較近的CVSup服務器)
csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
23、一些shell會緩存環境變量PATH中指定的目錄裡的可執行文件,以加快查找速度,這會造成一些新安裝的命令無法運行,執行以下命令,然後才能運行新安裝的那些命令:
rehash 或 hash -r
24、當不是所有時間都能上網時,可在/usr/ports下執行以下命令,所有需要的文件都將被下載:(此命令可以在下級目錄中執行,如/usr/ports/comms/nmp)
make fetch # 只下載所需要文件,不下載依賴包
make fetch-recursive # 連同依賴包一起下載
25、改變默認的Ports目錄:
make WRKDIRPREFIX=/usr/home/example/ports install # 在/usr/home/example/ports中編譯port,安裝到/usr/local
make PREFIX=/usr/home/example/local install # 在/usr/ports中編譯port,安裝到/usr/home/example/local
make WRKDIRPREFIX=../ports PREFIX=../local install # 在../ports中編譯port,安裝到../local
26、使用portsclean工具清除臨時目錄和distfiles目錄:
portsclean -C # 清除安裝時的臨時目錄
portsclean -D # 清除distfiles目錄下所有port都不引用的文件
portsclean -DD # 刪除目前安裝的port沒有使用的源碼包文件
27、強制手動檢測SCSI設備,SCSI總線掃瞄:
camcontrol rescan all
28、顯示SCSI設備列表:
camcontrol devlist
29、利用管道修改用戶密碼:
echo 「password」 | pw usermod root -h 0
30、sed插入行:
sed -i -E 『/service port/a \\
apex port : 18306\\
『 /home/xiyou/config
31、用freebsd的MBR覆蓋現有的MBR:
fdisk -B -b /boot/boot0 device
32、根據一個新的文件重新構建用戶列表:
pwd_mkdb -p /etc/master.passwd.new # -p即為生成新的/etc/passwd
33、取時間:
date -v -1d +%Y%m%d # Freebsd取昨天日期方法
date -v -1w +%Y%m%d # Freebsd取上週今日方法
date -v -1m +%Y%m%d # Freebsd取上個月今日方法
date -v -1y +%Y%m%d # Freebsd取去年今日的方法
34、以xiyou用戶身份執行命令或腳本:
su – xiyou -c 「cd /home/xiyou/script; ./start_apex.sh &」
35、tar打包時排除某個子目錄:
tar zcvf Apex09010702.tgz –exclude=ApexItemServer/hook_log ApexItemServer
註:上例是使用GUN版本的tar程序格式,否則–exclude參數應放在最後
36、鎖住終端:
lock -np #-n 永不超時,-p 使用系統密碼作為開啟終端的密匙
37、顯示ATA設備列表:
atacontrol list
38、查看網絡流量:
systat -if 1 #1表示1秒刷新屏幕一次,Traffic 流量 peak 峰值 average 平均值
netstat 1
39、查看硬盤詳細分區實時讀寫狀況:
gstat
40、進單用戶模式也需要密碼:
a. vi /etc/ttys 找到when going to single-user mode
b. 修改console none unknown off後面的secure,改為insecure
c. 存盤退出
41、在FreeBSD5.X以上加載,卸載ISO文件:
mount:
mdconfig -a -t vnode -f myisofile.iso #屏幕輸出md0或者類似的設備名
mount -t cd9660 /dev/md0 /mnt
umount:
umount /mnt
mdconfig -d -u 0 #-u後面的數字和前面的md?中的數字一致
mdconfig -l #可以列出關於配置md?設備的信息
42、更新配置文件,比如編輯了.cshrc等文件,就需要用source命令:
source .cshrc
43、修復UFS文件系統分區:
fsck_ufs /dev/ad1
44、pf防火牆
pfctl -e                 # 啟動pf防火牆
pfctl -d                 # 停止pf防火牆
pfctl -sa | grep Status  #查看狀態
pfctl -f /etc/pf.conf    # 載入 pf.conf 文件
pfctl -nf /etc/pf.conf   # 檢查配置文件錯誤,但不載入
pfctl -Nf /etc/pf.conf   # 只載入文件中的NAT規則
pfctl -Rf /etc/pf.conf   # 只載入文件中的過濾規則
pfctl -sn    # 顯示當前的NAT規則
pfctl -sr    # 顯示當前的過濾規則
pfctl -ss    # 顯示當前的狀態表
pfctl -si    # 顯示過濾狀態和計數
pfctl -sa    # 顯示任何可顯示的
pfctl -t http_table -T show               #查看動態表
pfctl -t http_table -T add 192.168.1.X    #添加一個IP到表
pfctl -t http_table -T del 192.168.1.X    #從表中刪除IP
45、系統優化+防止ddos
加載文件修改
# vi /boot/loader.conf #加入如下文本
kern.dfldsiz=」2147483648〞             # Set the initial data size limit
kern.maxdsiz=」2147483648〞             # Set the max data size
kern.ipc.nmbclusters=」0〞             # Set the number of mbuf clusters
kern.ipc.nsfbufs=」66560〞              # Set the number of sendfile(2) bufs
##解釋:
a.   第一,第二行主要是為了突破1G內存設置的
b.   第三行其實是bsd的一個bug,當系統並發達到一個數量級的時候,系統會crash,這個是非常糟糕的事情,所幸更改了這個參數後,在高並發的時候,基本可以沒有類似情況,當然非常bt的情況,還得進一步想辦法
c.   第四行是讀取的文件數,如果你下載的文件比較大,且比較多,加大這個參數,是非常爽的
Sysctl修改
#vi /etc/rc.local
sysctl kern.ipc.maxsockets=100000    ##增加並發的socket,對於ddos很有用
sysctl kern.ipc.somaxconn=65535      ##打開文件數
sysctl net.inet.tcp.msl=2500         ##timeout時間
加速ports安裝
#vi /etc/make.conf     ##加入如下
MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=http://ports.cn.freebsd.org/${DIST_SUBDIR}/
Freebsd顏色顯示
secureCRT設置:仿真:終端->linux>勾選ANSI顏色–>確定
#vi /etc/csh.cshrc ##加入如下
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
#cd /usr/ports/edit/vim;make install
#echo 「syntax on」>/root/.vimrc
#echo 「alias vi        vim」 >>/root/.cshrc
##顏色主要是靠vim來顯示的,因此需要安裝vim,然後把vi alias成vim就可以了
46、查看系統狀態
fstat     #報告系統中打開文件的信息
pstat -T   #顯示這幾個系統表的狀態,包括當前使用的和可以利用的系統表空間,因此可以用來檢查系統在當前負載下是使用多大的系統表,幫助進行優化系統性能
systat    #缺省情況下systat是報告處理器的使用率,包括總利用狀態、空閒使用率和各個進程的使用率
通過指定參數,systat也能進行I/O的統計、虛存的統計、網絡的統計等,這些參數包括-iostat, -vmstat, -mbufs, -netstat, -ip, -icmp, -tcp, -swap等
kldstat -v  #顯示內核加載的模塊
klsdstat -m ipfilter   #顯示指定模塊
pnpinfo    #即插即用設備
devinfo -u  #顯示設備佔用的IRQ和內存地址
原文鏈接:http://blog.chinaunix.net/u3/112017/showart_2213285.html
轉載請註明文章轉載自:FreeBSD技術文摘 [http://www.bsdart.org]

2011年3月28日 星期一

FreeBSD DHCP服務安裝筆記

一、編譯內核
device bpf
bpf設備是DHCP服務必需的,FreeBSD系統默認的GENERIC內核已經包含此設備,如果您的系統內核是經過修改的,請注意此設備是否已經添加。
二、安裝DHCP Server
# cd /usr/ports/net/isc-dhcp31-server 
# make install clean
三、配置DHCP服務
# vi /usr/local/etc/dhcpd.conf
option domain-name "example.com";  //這個選項指定了提供給客戶機作為默認搜索域的域名。 
option domain-name-servers 192.168.0.100;  //這個選項用於指定一組客戶機使用的DNS服務器,它們之間以逗號分隔。 
option subnet-mask 255.255.255.0;  //提供給客戶機的子網掩碼。
default-lease-time 3600;  //客戶機可以請求租約的有效期,而如果沒有,則服務器將指定一個租約有效期,也就是這個值(單位是秒)。 
max-lease-time 86400;  //這是服務器允許租出地址的最大時長。如果客戶機請求了更長的租期,則它將得到一個地址,但其租期僅限於max-lease-time秒。 
ddns-update-style none;  //這個選項用於指定DHCP服務器在一個地址被接受或釋放時是否應對應嘗試更新DNS。在ISC實現中,這一選項是必須指定的。
subnet 192.168.0.0 netmask 255.255.255.0 {  //配置DHCP地址池 
  range 192.168.0.120 192.168.0.250;  //指定地址池中可以用來分配給客戶機的IP地址範圍。在這個範圍之間,以及其邊界的IP地址將分配給客戶機。 
  option routers 192.168.0.1;  //定義客戶機的默認網關。 
}
host mailhost.example.com {  //分配靜態IP地址 
  hardware ethernet 02:03:04:05:06:07;  //主機的硬件MAC地址(這樣DHCP服務器就能夠在接到請求時知道請求的主機身份)。 
  fixed-address 192.168.0.150;  //指定固定IP地址 
}
四、啟動DHCP服務
# vi /etc/rc.conf
dhcpd_enable="YES" 
dhcpd_ifaces="dc0"  //dc0為DHCP服務器需要監聽DHCP客戶端請求的接口
# /usr/local/etc/rc.d/isc-dhcpd start
轉載請註明文章轉載自:FreeBSD技術文摘 [http://www.bsdart.org]