天天看點

FreeBSD從零開始---Web伺服器搭建(二)

上次我們說到安裝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()看看結果吧。