天天看点

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()看看结果吧。