免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 57638 | 回复: 121
打印 上一主题 下一主题

[OpenBSD] OpenBSD.Nginx.MySQL.PHP环境搭建手册[第一版][原创] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-11 16:17 |只看该作者 |倒序浏览
本文来自个人博客,地址:http://onmp.cublog.cn,欢迎转载!

第二版手册已出,地址:http://blog.chinaunix.net/u2/81136/showart_1864687.html

所谓的O.N.M.P.是指OpenBSD、Nginx、MySQL、PHP(fastcgi),是利用OpenBSD及其软件包搭建的时下流行的MySQL+PHP应用环境,下面对主要的软件做下介绍:

OpenBSD:可能是这个星球最安全的操作系统了,在十几年的时间里面只被发现了两个远程安全漏洞。

Nginx:来自俄罗斯的HTTP软件,据说性能达到老牌的Apache十倍!并且极其节约资源,是单台服务器跑PHP应用的首选。官方文档声称能达到5W个并发连接,生产环境下单台双核2.33G服务器可以跑到3W个并发连接(仅运行Nginx+PHP-fastcgi)。

MySQL:老牌的开源数据库软件。

PHP:这个几乎无人不知,和MySQL一起构成了开源环境下最强的建站组合。

下面以OpenBSD 4.4为例进行讲解。按照惯例,root环境:

一、软件环境的搭建

OpenBSD的安装就不罗嗦了,重点是分区的部分,推荐/var/mysql、/var/log、/var/mail、/var/nginx这几个目录单独分区,并给予足够的空间。系统安装的最后询问是否默认启动Ssh服务时回答”n”。

安装必须的软件包:
  1. export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
  2. pkg_add wget mysql-server php5-fastcgi php5-gd-5.2.6-no_x11 php5-mysql phpMyAdmin lighttpd-1.4.19p3 nginx pecl-APC
复制代码
装完后按提示做连接并创建PHP工作目录:
  1. ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules
  2. ln -fs /var/www/conf/php5.sample/apc.ini /var/www/conf/php5/apc.ini
  3. ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/gd.ini
  4. ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini
  5. ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini
  6. ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini
  7. mkdir /var/www/tmp
  8. chmod 0777 /var/www/tmp
  9. mkdir /var/nginx/html/pma/
  10. cp -rf /var/www/phpMyAdmin/* /var/nginx/html/pma/
复制代码
  1. vi /etc/login.conf
复制代码
跳到最后,加入MySQL所需的修改:

mysql:\
        :openfiles-cur=2048:\
        :openfiles-max=4096:\
        :tc=daemon:


使修改生效:
  1. cap_mkdb /etc/login.conf
复制代码
安装数据库:
  1. /usr/local/bin/mysql_install_db
复制代码
二、修改各软件的配置文件

修改nginx的默认配置文件:
  1. vi /etc/nginx/nginx.conf
复制代码
增大nginx的并发连接数:

worker_connections  51200;


加入对.php文件的支持:

        location / {
            root   /var/nginx/html;
            index  index.php index.html index.htm;
        }


(加入index.php)

将下面这段前面的注释都去掉,改成:

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }


注意上面第五行,这个部分原来是/scripts,改成/var/nginx/html

其他的部分请酌情修改。

修改MySQL的配置文件(或从/usr/local/share/mysql目录中拷贝合适的文件为/etc/my.cnf)。

关于MySQL的配置和优化,网上有很多这方面的文章,可以自行Google,这里就不多讨论了。

贴下偶的(总内存512M,MySQL使用256M,在my-large.cnf的基础上修改):

在[mysqld]段增加或修改:

skip-innodb
skip-networking
max_connections = 600
skip-bdb
skip-name-resolve
wait_timeout= 5


保存退出。

修改phpMyAdmin的配置文件,使之可用:
  1. vi /var/nginx/html/pma/config.inc.php
复制代码
将下面这行修改成:

$cfg['blowfish_secret'] = 'a'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */


(仅是加入了字母a而已)

保存退出。

三、系统启动脚本的修改

修改系统启动脚本,使得MySQL、PHP(fastcgi)、Nginx可以在系统启动的时候自动启动,免去手动启动的麻烦。
  1. vi /etc/rc.local
复制代码
跳到最后,加入下面的部分:

rdate -n 210.72.145.44
# Start MySQL
if [ -x /usr/local/bin/mysqld_safe ] ; then
   echo -n 'Starting MySQL...'
  su -c mysql root -c '/usr/local/bin/mysqld_safe >/dev/null 2>&1 &'
   echo "DONE"
fi
# Start php-fastcgi
if [ -x /usr/local/bin/spawn-fcgi ] ; then
   echo -n 'Starting php-fastcgi...'
   /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www -f /usr/local/bin/php-fastcgi > /var/run/fcgi.pid
   echo "DONE"
fi
# Start nginx
if [ -x /usr/local/sbin/nginx ] ; then
   echo -n 'Starting nginx...'
   /usr/local/sbin/nginx
   echo "DONE"
fi


保存退出。

四、修改默认的SSH端口
  1. vi /etc/ssh/sshd_config
复制代码
在#PorT 22的下面新建一行,输入:

PorT 49813


使得Sshd监听49813端口,以避免黑客扫描22端口。
  1. vi /etc/rc.conf.local
复制代码
增加一行,输入:

sshd_flags=""


使得系统启动时启动Sshd服务。

保存退出。
  1. reboot
复制代码
等系统重启完毕,用top命令看下,O.N.M.P.环境已经搭建好了!



写在最后:

终于明白了OpenBSD官方力推packages的原因!看看吧,步骤多么简单,无须下载软件源码,无须长时间的make && make install,很短的时间就可以搭建起时兴的O.N.M.P.环境,而且安全性有很高的保障!

对MySQL的管理可以通过phpMyAdmin来完成,地址:http://xxx.xxx.xxx.xxx/pma/index.php(xxx.xxx.xxx.xxx为你服务器的IP地址)。默认情况下MySQL的root用户是没有密码的,请第一时间设置!

本文没有加入PF的部分,因为偶写了几个语句貌似执行起来都有问题,将偶挡在了外面,留待下一版手册中解决吧!

相关博文:

[原创]OpenBSD Current版本更新系统核心和已安装软件包的方法!

Nginx官方推荐:生产系统请使用0.6.34版!

在OpenBSD中安装和使用nginx的注意事项!!!

Nginx-0.7.17 configure参数详解

在OpenBSD 4.3环境下安装Nginx 0.7.17

++++++++++++++++++++++++++++++++++++++++++

对部分网友问题的解答:

15楼:

[quote]原帖由 OraBSD 于 2009-2-12 17:22 发表
开放,还是应该开放.建议LZ取消隐藏.谢谢!:)


设置隐藏主要有下面几个目的:

1.让长时间潜水的潜水艇上来换口气,提升本版的人气。

2.如果看到帖子中有什么错误或者有什么好的建议,可以顺便回复下。

3.看看有多少人对O.N.M.P.环境的搭建有兴趣,偶好有动力推出下一版。

第二版预告:

1.加入Packet Filter的内容,让O.N.M.P.更安全。目前基本的语句已经搞定,有关带宽控制的部分正在验证;

2.视进度加入Snort入侵检测与阻挡的内容。目前正在研究基本的与PF交互的东东;

3.修正第一版的错误,调整内容的编排,加入更多安全方面的设置内容,让本手册能真正的应用于生产系统;

4.其他。不一而足,如果您有什么好的建议,不妨也提出来,让我们共同完善。


PS.关于开放,偶也是OpenBSD初哥,希望有大牛可以贡献些安全和环境搭建方面的经验,大家共同提高![/quote]

18楼:

[quote]原帖由 啊泰 于 2009-2-12 19:42 发表
强看看不知道性能怎么样 关键是性能...................................

性能...................................性能...................................性能...................................性能.. ...


关于性能,就偶做的初步测试来看。

安装Discuz论坛,开启pecl-APC,默认首页执行时间平均为20毫秒,不开APC是110毫秒,不知道比起其他的系统差了多少?

CPU为Intel 45纳米 Core 2 Duo E7200。[/quote]

100楼:

[quote]原帖由 zhht 于 2009-2-17 22:39 发表
php的部分要是能用php-fpm那就更好了,不过的用源码安装了。还有nginx的I/O复用方法最好使用use kqueue;
附:php加入对php-fpm和mysql的支持
# tar zxvf php-5.2.6.tar.gz
# gzip -cd php-5.2.6-fpm-0.5.9.diff.gz | patch -d php-5.2.6 -p1
# cd php-5.2.6 && ./configure --enable-fastcgi --enable-fpm --with-mysql --with-mysqli
# make all install
#mg /usr/local/etc/php-fpm.conf
去掉<value name="user">nobody</value>和<value name="group">nobody</value>前的注释。
#mg /etc/rc.local
if [ -x /usr/local/sbin/php-fpm ]; then
   /usr/local/sbin/php-fpm start
   echo -n 'php-fastcgi '
fi

另:php-5.2.6-fpm-0.5.9.diff.gz的下载地址:http://php-fpm.anight.org/downloads/archive/php-5.2/


偶在网上看到,某日PV过千万的大站,反映说php-fpm有假死的现象,后来改用spawn-fcgi进行管理。

另:OpenBSD中的Nginx默认就已经是kqueue模式了,无须再设![/quote]

104楼:

[quote]原帖由 zhht 于 2009-2-18 10:34 发表
http://www.hiadmin.com/php-fpm%E6%B5%8B%E8%AF%95/


且看下面这个站长的总结文章,偶相信真实生产环境下的数据,测试仅可供参考而已。

另外,php-fpm这个补丁和suhosin不兼容,不能同时编译。

为了安全,偶一如既往的选择packages!

用一台1U服务器让phpwind承受1000万PV(实际营运)

臭现下,偶的网站已经经过1000万PV的考验了(百度统计结果)

1000万pv的实际论坛是很恐怖的,因为这样的论坛日发帖一般大于10万,会员数据超过200万,帖子总数超千万。

1、解决流量问题,1000w pv,我做过检测,每秒流量高达300M以上,我采用了多网卡来解决。用了4个网卡口子,每口100M,就可以承受400M流量了。1U服务器一般只有2 个网口,可以增加USB网卡,目前有几种芯片的USB网卡在linux下是自动识别的。1000M的端口机房是很贵的,10万以上每年。所以采用多网卡负荷分担是经济实用的。

2、解决mysql瓶颈问题,首先要学会mysql的配置优化my.cnf的优化,然后要对程序进行优化,目前的免费bbs程序,在负载上都是很垃圾的(pw和dz在程序上很少考虑大负载问题,VBB没有仔细关注过,可能vbb要好很多),需要实际中调试慢查询,优化sql语句,注意用子查询进行分页,不要简单的使用limite start,num ,某些频繁查询而又不是经常变化的sql尽量使用缓存技术,对访问频繁的页面,例如首页,必须对sql以及php的运算都进行优化,做到像访问html一样访问bbs首页。

3、使用memcache对mysql数据进行缓存,虽然有数据延迟,但可以很大的降低mysql的负荷。

4、使用nginx + eac 做web ,eac共享内存设置为60M即可,不能太大,nginx开10个线程。

5、使用lighttp的spawn-cgi + php-cgi 开启至少256个线程。不要使用php-fpm,这玩意儿在千万pv的大压力时,会出问题,频繁假死

6、解决搜索问题,选择使用中文全文索引

硬件配置:2个4核Xeon5405 + 12G RAM + 4x300G SAS raid0

臭现下,我不懂技术,甚至痛恨厌恶技术,但只要给我一个容纳日300W IP的硬件软件平台,我可以做到每日400wIP。才配置新服务器2周时间,我已经把流量从20万IP提升到30万IP。
[/quote]

112楼:

[quote]原帖由 nothing9 于 2009-2-26 17:58 发表
OpenBSD 默认不是安装Apache 1.3x 吗?


是的,而且用Apache、MySQL、PHP搭建环境更简单。

不过,如本帖开始所说:

Nginx:来自俄罗斯的HTTP软件,据说性能达到老牌的Apache十倍!并且极其节约资源,是单台服务器跑PHP应用的首选。官方文档声称能达到5W个并发连接,生产环境下单台双核2.33G服务器可以跑到3W个并发连接(仅运行Nginx+PHP-fastcgi)。


用Nginx的主要目的是为了提高并发访问数和获得更流畅的浏览体验。

对于WEB服务器来说,这些是比技术更重要的东西。

所以就把偶的一点经验整理出来,发表了,希望对大家有用![/quote]

[ 本帖最后由 young_king 于 2009-3-23 17:09 编辑 ]

评分

参与人数 1可用积分 +2 收起 理由
OraBSD + 2

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-02-12 01:38 |只看该作者
非常感谢,收藏着先:wink:

论坛徽章:
0
3 [报告]
发表于 2009-02-12 10:19 |只看该作者
学习一下:wink:

论坛徽章:
0
4 [报告]
发表于 2009-02-12 11:11 |只看该作者
顶啊,OpenBSD用起来好清爽!

论坛徽章:
0
5 [报告]
发表于 2009-02-12 12:32 |只看该作者
好好学习,好好学习!!!

论坛徽章:
0
6 [报告]
发表于 2009-02-12 12:39 |只看该作者
高手啊!太好了!我刚学openBSD,一直以为OopenBSD很安全就会很晦涩,没想到OpenBSD给我的感觉是那么的焕然一新,心明眼亮的。
cp -rf /var/www/phpMyAdmin/* /var/nginx/pma/
这行有错误,应为cp -rf /var/www/phpMyAdmin/* /var/nginx/html/pma/
另外,如我测试成功后,可能会将您的帖子转载?高手是否允许转载?

论坛徽章:
0
7 [报告]
发表于 2009-02-12 14:17 |只看该作者
原帖由 ruying 于 2009-2-12 12:39 发表
高手啊!太好了!我刚学openBSD,一直以为OopenBSD很安全就会很晦涩,没想到OpenBSD给我的感觉是那么的焕然一新,心明眼亮的。
cp -rf /var/www/phpMyAdmin/* /var/nginx/pma/
这行有错误,应为cp -rf /var/w ...


谢谢指正!

允许自由转载,保留作者信息即可!

论坛徽章:
0
8 [报告]
发表于 2009-02-12 14:19 |只看该作者
欣赏

论坛徽章:
0
9 [报告]
发表于 2009-02-12 14:48 |只看该作者
看看

论坛徽章:
0
10 [报告]
发表于 2009-02-12 15:04 |只看该作者
学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP