上次我們說到安裝nginx和php,那麼不能少的就是mysql。以前是LAMP,後來是LNMP。現在,讓我們用FNMP構造強壯穩定的伺服器。
一、Mysql
讓我們重複以前的操作
#cd /usr/ports/
#find ./ -name "mysql*"
會出來不少路徑,資料庫,英文database,是以在結果中我們隻需要去databases下安裝就可以了。這個路徑下,除了mysql4.1,5.0,5.1,5.5之外,還有很多其他的mysql相關的工具程式。以下以mysql55為例。
請根據你的應用來選擇不同的版本,不過一般建議是5.0以上。那麼,FreeBSD把Mysql分成了兩部分,server和client,你可以隻安裝client,如果你這台伺服器隻是單純的php server,用來連接配接查詢其他的server,那麼僅安裝client就夠了,如果你希望把完整的資料庫安裝在這上面,那麼請進入mysql55-server裡面去執行make install。然後?喝茶去。不過注意一下,我這裡用的是make install,而不是make install clean。這是因為我們需要用到源碼中的配置檔案,也就是my.cnf。是以我們選擇編譯後不删除源碼。
#cd /usr/ports/databases/mysql55-server
#make install
然後執行以下指令
#cd /usr/ports/mysql55-server/work/mysql-5.5.17/support-files/
#mkdir /var/db/mysql
#cp my-innodb-heavy-4G.cnf.sh /var/db/mysql/my.cnf
打開/var/db/mysql/my.cnf
找到兩處@MYSQL_UNIX_ADDR@和@MYSQL_UNIX_ADDR@
修改為3306和/tmp/mysql.sock
@MYSQL_UNIX_ADDR@ ==> 3306
@MYSQL_UNIX_ADDR@ ==> /tmp/mysql.sock
儲存退出
打開/etc/rc.conf
加入mysql_enable="YES"
儲存退出,然後執行
#/usr/local/etc/rc.d/mysql_server start
啟動後可以用mysql指令進行連接配接,但是這時是沒有密碼的,請自行grant root密碼。至于參數優化,另開文章說,在這裡不做說明,這裡隻講解安裝步驟。
當然,你也可以用這個步驟安裝PostgreSQL。
二、Nosql
1.Redis
#cd /usr/ports/databases/redis
#make install clean
redis是我最喜歡的key-value資料庫,是以我把它放在了第一位,超快速的存取,友善的鍵值操作,用redis甚至可以做出非常友善的FIFO或FILO隊列。目前我已知使用redis的項目包括著名的github和新浪微網誌。且支援Master-Slave架構。
2.mongoDB
#cd /usr/ports/databases/mongodb
mongoDB是一個非常棒的文檔型資料庫,适合存儲大量的資料。自身帶分布式的檔案系統GridFS。
其他的資料庫的安裝都可以到/usr/ports/databases下找,就不一一寫出來了。
忘了一點,管理資料庫,推薦安裝phpMyAdmin,管理mysql很友善。
#cd /usr/ports/databases/phpmyadmin
然後到/usr/local/www下去尋找phpMyAdmin的php檔案,并通路url進行管理。
二、lighttpd
剩下的篇幅想介紹一下我很喜歡的一款webserver,在國内的知名度并不如apache和nginx高,但是就其性能而言,并不比nginx差,有些甚至比nginx還要好。以前做過一個測試,lighttpd在挂載php-fpm的情況下,性能要比nginx高出大約6-7%。這就已經很可觀了。lighttpd在國外有比較高的知名度,且據我所知有個大公司一直在使用,這個大公司在國内被屏蔽了,但是提起他的名字,國内的人不會陌生,很多人都努力×××在上這個網站,這個網站就是Youtube。
官方網站的詳細評測在http://www.lighttpd.net/benchmark,有興趣的可以看看。
安裝很簡單
#cd /usr/ports/www/lighttpd
#echo 'lighttpd_enable="YES" >> /etc/rc.conf'
#/usr/local/etc/rc.d/lighttpd start
安裝的時候,如無需要,不要選擇valgrind和spawn-cgi。
很多人都認為lighttpd是個單程序多路複用的server,其實并不是這樣的。lighttpd裡面有個隐藏的參數,是開啟多程序的。但是這個參數沒有預設寫在lighttpd.conf中,是以很多人不知道,以為lighttpd在linux下是單程序epoll方式,但其實不是這樣的。
我們來配置lighttpd,我不會把所有的配置都貼在這裡,隻摘出我認為比較重要的配置放出來
#cd /usr/local/etc/lighttpd/
#cp lighttpd.conf.sample lighttpd.conf
#vi lighttpd.conf
#找到
server.port=80
#在下面加一句
server.max-worker=4
#好了,多程序開啟了
#找到server.event-handler
#将後面改成freebsd-kqueue,如果是linux,我記得是linux-epoll
如果需要挂接php,執行以下步驟
#vi /usr/local/etc/lighttpd/modules.conf
#找fastcgi.conf,找到後,将include "conf.d/fastcgi.conf"前面的注釋去掉,儲存退出
#vi /usr/local/etc/lighttpd/conf.d/fastcgi.conf
改成下面這樣就可以了
fastcgi.server = ( ".php" =>
# ( "php-local" =>
# (
# "socket" => socket_dir + "/php-fastcgi-1.socket",
# "bin-path" => server_root + "/cgi-bin/php5",
# "max-procs" => 1,
# "broken-scriptfilename" => "enable",
# )
# ),
( "php-tcp" =>
(
"host" => "127.0.0.1",
"port" => 9000,
"check-local" => "disable",
"broken-scriptfilename" => "enable",
)
),
#
# ( "php-num-procs" =>
# "socket" => socket_dir + "/php-fastcgi-2.socket",
# "bin-environment" => (
# "PHP_FCGI_CHILDREN" => "16",
# "PHP_FCGI_MAX_REQUESTS" => "10000",
# ),
# "max-procs" => 5,
)
一般不推薦使用unix://這種方式,能夠承載的壓力比較小。還是用跟nginx一樣的方式比較好。而且現在php已經自帶fastcgi了,不再需要生成spawn-cgi了。然後去寫你的phpinfo()看看結果吧。