<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>温室小花.技术.博客 --纯粹的unix技术博客 &#187; www服务</title>
	<atom:link href="http://www.evanjiang.net.cn/archives/category/%e6%8a%80%e6%9c%af%e6%96%b9%e6%a1%88/www%e6%9c%8d%e5%8a%a1/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evanjiang.net.cn</link>
	<description>红颜弹指老，刹那芳华，与其天涯思君，恋恋不舍，莫若相忘于江湖！</description>
	<lastBuildDate>Sun, 05 Sep 2010 14:51:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>OpenBSD.Nginx.MySQL.PHP环境搭建手册(网上转摘）</title>
		<link>http://www.evanjiang.net.cn/archives/1176.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1176.html#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:32:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[openbsd unix]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[www服务]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1176</guid>
		<description><![CDATA[<p>


 <p>很久没弄过OPENBSD，而且，听说现在的NGINX很红，性能比传统的APACHE要好很多倍，因而，一直想弄个NGINX服务器环境。加上，俺也想熟悉回OPENBSD，就想着弄个OPENBSD，NGINX，MYSQL，PHP的环境。。弄来玩玩，就当复习一下技术。出于习惯，俺还是在网上找了这篇文档。初步看过，好像写得不错，，就先弄过来，暂没时间实操过，待俺忙过这段时间。就再次重点研究一下俺熟悉而喜欢的UNIX服务器与数据库技术。。。</p>
<p>本手册以在OpenBSD 4.4环境下搭建Nginx、MySQL、PHP环境为例进行讲解。按照惯例，root权限。</p>
<p>=====================================================</p>
<p>目录</p>
<p>一、OpenBSD的安装及注意事项
二、系统性能调优
Ⅰ、/etc/fstab调优
Ⅱ、/etc/sysctl.conf调优</p>
<p>三、O.N.M.P.软件环境的安装
四、Nginx配置
Ⅰ、Nginx配置文件的修改
Ⅱ、Nginx日志截断</p>
<p>五、MySQL与phpMyAdmin的配置
Ⅰ、MySQL的配置
Ⅱ、phpMyAdmin的配置</p>
<p>六、强化PHP的安全
七、强化SSH的安全
Ⅰ、SSH配置文件的修改
Ⅱ、使用KEY进行验证
Ⅲ、按需启动SSH
Ⅳ、一点安全小常识</p>
<p>八、启用Packet Filter防火墙
九、系统启动脚本的修改</p>
<p>=====================================================</p>
<p>一、OpenBSD的安装及注意事项</p>
<p>OpenBSD的安装这里就不多说了，主要是安装时系统组件的选择、分区和系统服务的部分。对于系统组件部分，作为生产系统来说，偶并不推荐安装comp44.tgz这个组件。因为comp44.tgz实际就是编译器，不装这个，可以在很大程度上避免安装一些非授权的软件，从而提高远程主机的安全性。如果真的需要安装什么软件，也可以在非重要的机器上进行编译，然后使用PSFTP等软件上传到远程主机上使用。关于PSFTP软件的使用，二楼有详细的介绍。</p>
<p>系统分区时，推荐将/usr、/usr/local、/var、/var/mysql、/var/mail、/var/log、/var/nginx等分区单独分出来，也就是说，进行比较细致的分区，防止某个目录中的文件膨胀占满整个分区导致的死锁等问题。假定你有一个80G的硬盘，一个分区示例在下面：</p>
<p>/	200M
(swap)	1G
/tmp	200M
/usr	500M
/usr/local	200M
/var	100M
/var/mysql	10G
/var/mail	100M
/var/log	5G~10G
/home	200M
/var/nginx	剩余空间</p>
<p>至于系统服务部分，建议所有的服务都选择“n”，亦即不随系统启动。

二、系统性能调优</p>
<p>对于多核的机器，使用bsd.mp这个核心。</p>
<p>[Copy to clipboard] [ - ]CODE:
mv /bsd /obsd
mv /bsd.mp /bsd</p>
<p>Ⅰ、/etc/fstab调优</p>
<p>[Copy to clipboard] [ - ]CODE:
vi /etc/fstab</p>
<p>在文件系统描述符部分，加入&#8221;noatime&#8221;和&#8221;softdep&#8221;。示例如下：</p>
<p>QUOTE:
/dev/wd0a / ffs rw,noatime,softdep 1 1
/dev/wd0l /home ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0e /usr ffs rw,nodev,noatime,softdep 1 2
/dev/wd0f /usr/local ffs rw,nodev,noatime,softdep 1 2
/dev/wd0g /var ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0i /var/log ffs rw,nodev,nosuid,noatime,softdep 1 2
/dev/wd0j /var/mail [...]]]></description>
			<content:encoded><![CDATA[<p style="float: left;margin: 4px;"><script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 160x600, 创建于 10-2-7 */
google_ad_slot = "8970910006";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p> <p>很久没弄过OPENBSD，而且，听说现在的NGINX很红，性能比传统的APACHE要好很多倍，因而，一直想弄个NGINX服务器环境。加上，俺也想熟悉回OPENBSD，就想着弄个OPENBSD，NGINX，MYSQL，PHP的环境。。弄来玩玩，就当复习一下技术。出于习惯，俺还是在网上找了这篇文档。初步看过，好像写得不错，，就先弄过来，暂没时间实操过，待俺忙过这段时间。就再次重点研究一下俺熟悉而喜欢的UNIX服务器与数据库技术。。。</p>
<p>本手册以在OpenBSD 4.4环境下搭建Nginx、MySQL、PHP环境为例进行讲解。按照惯例，root权限。</p>
<p>=====================================================</p>
<p>目录</p>
<p>一、OpenBSD的安装及注意事项<br />
二、系统性能调优<br />
Ⅰ、/etc/fstab调优<br />
Ⅱ、/etc/sysctl.conf调优</p>
<p>三、O.N.M.P.软件环境的安装<br />
四、Nginx配置<br />
Ⅰ、Nginx配置文件的修改<br />
Ⅱ、Nginx日志截断</p>
<p>五、MySQL与phpMyAdmin的配置<br />
Ⅰ、MySQL的配置<br />
Ⅱ、phpMyAdmin的配置</p>
<p>六、强化PHP的安全<br />
七、强化SSH的安全<br />
Ⅰ、SSH配置文件的修改<br />
Ⅱ、使用KEY进行验证<br />
Ⅲ、按需启动SSH<br />
Ⅳ、一点安全小常识</p>
<p>八、启用Packet Filter防火墙<br />
九、系统启动脚本的修改</p>
<p>=====================================================</p>
<p>一、OpenBSD的安装及注意事项</p>
<p>OpenBSD的安装这里就不多说了，主要是安装时系统组件的选择、分区和系统服务的部分。对于系统组件部分，作为生产系统来说，偶并不推荐安装comp44.tgz这个组件。因为comp44.tgz实际就是编译器，不装这个，可以在很大程度上避免安装一些非授权的软件，从而提高远程主机的安全性。如果真的需要安装什么软件，也可以在非重要的机器上进行编译，然后使用PSFTP等软件上传到远程主机上使用。关于PSFTP软件的使用，二楼有详细的介绍。</p>
<p>系统分区时，推荐将/usr、/usr/local、/var、/var/mysql、/var/mail、/var/log、/var/nginx等分区单独分出来，也就是说，进行比较细致的分区，防止某个目录中的文件膨胀占满整个分区导致的死锁等问题。假定你有一个80G的硬盘，一个分区示例在下面：</p>
<p>/	200M<br />
(swap)	1G<br />
/tmp	200M<br />
/usr	500M<br />
/usr/local	200M<br />
/var	100M<br />
/var/mysql	10G<br />
/var/mail	100M<br />
/var/log	5G~10G<br />
/home	200M<br />
/var/nginx	剩余空间</p>
<p>至于系统服务部分，建议所有的服务都选择“n”，亦即不随系统启动。<br />
<span id="more-1176"></span><br />
二、系统性能调优</p>
<p>对于多核的机器，使用bsd.mp这个核心。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
mv /bsd /obsd<br />
mv /bsd.mp /bsd</p>
<p>Ⅰ、/etc/fstab调优</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/fstab</p>
<p>在文件系统描述符部分，加入&#8221;noatime&#8221;和&#8221;softdep&#8221;。示例如下：</p>
<p>QUOTE:<br />
/dev/wd0a / ffs rw,noatime,softdep 1 1<br />
/dev/wd0l /home ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0e /usr ffs rw,nodev,noatime,softdep 1 2<br />
/dev/wd0f /usr/local ffs rw,nodev,noatime,softdep 1 2<br />
/dev/wd0g /var ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0i /var/log ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0j /var/mail ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0h /var/mysql ffs rw,nodev,nosuid,noatime,softdep 1 2<br />
/dev/wd0k /var/nginx ffs rw,nodev,nosuid,noatime,softdep 1 2</p>
<p>友情提醒：softdep是一种非同步的文件系统，意外掉电可能造成数据的遗失/损坏，生产系统请谨慎使用！</p>
<p>改完后保存退出，reboot，看能不能正常启动。</p>
<p>一般情况下是没有问题的，个别机器或虚拟机可能会因为兼容性的缘故，无法启动。那么就把根目录的softdep拿掉，其他目录保留，仍然会有作用。</p>
<p>更多关于OpenBSD环境下磁盘性能调优的内容，请参看偶博客的文章，地址在下面：</p>
<p>http://blog.chinaunix.net/u2/81136/showart_1841280.html</p>
<p>Ⅱ、/etc/sysctl.conf调优</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/sysctl.conf</p>
<p>跳到最后，加入下面的内容：</p>
<p>QUOTE:<br />
# 增大文件系统缓存到1M<br />
kern.maxvnodes=131072</p>
<p># 允许最多65536个进程<br />
kern.maxproc=65536</p>
<p># 同时最多打开65536个文件<br />
kern.maxfiles=65536</p>
<p># 并发连接最大65536<br />
kern.somaxconn=65536</p>
<p># 保留的最少连接数<br />
kern.sominconn=256<br />
kern.maxclusters=32768</p>
<p># 增大TCP接收/发送缓存到64K<br />
net.inet.tcp.recvspace=65536<br />
net.inet.tcp.sendspace=65536</p>
<p># 增大UDP接收/发送缓存到64K<br />
net.inet.udp.recvspace=65536<br />
net.inet.udp.sendspace=65536</p>
<p>注意：虚拟机测试只加最上面一行kern.maxvnodes=65536即可，其他的不必加了，否则会有各种问题。独立机器的可以加上。</p>
<p>保存退出，reboot。不能正常启动的就把除kern.maxvnodes以外的数字调小或者禁用再试。</p>
<p>三、OpenBSD.Nginx.MySQL.PHP软件环境的安装</p>
<p>OpenBSD环境下软件的安装是非常简单的，因为在官方的ftp中提供了已经编译好的二进制包，需要安装的软件都在ftp中，从ftp中安装即可。</p>
<p>小提示：如果你机器比较多，你可以把需要安装的软件包都down回来，其他机器再来这里安装，速度会非常快！</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/</p>
<p>pkg_add mysql-server php5-fastcgi php5-gd-5.2.6-no_x11 phpMyAdmin lighttpd-1.4.19p3 nginx pecl-APC</p>
<p>以偶的1M ADSL小水管为例，大约也就二十分钟左右就安装完毕了！真的是非常快！和其他系统的wget源码、./configure &amp;&amp; make &amp;&amp; make install&#8230;所需要的时间相比，效率是非常高！而且，由于OpenBSD默认采用比较高的安全策略，装上的环境安全性也比其他系统要高！</p>
<p>等所需的软件都安装完成后，按提示作链接并创建PHP临时工作目录：</p>
<p>QUOTE:<br />
ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules<br />
ln -fs /var/www/conf/php5.sample/apc.ini /var/www/conf/php5/apc.ini<br />
ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/gd.ini<br />
ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini<br />
ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini<br />
ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini<br />
mkdir /var/nginx/sesstmp<br />
chmod 0777 /var/nginx/sesstmp</p>
<p>pkg_info检查一下系统中安装了些什么软件包：</p>
<p>可以看到，所需的软件包和依赖的包都安装好了！</p>
<p>四、Nginx配置</p>
<p>Ⅰ、Nginx配置文件的修改</p>
<p>修改nginx的默认配置文件：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/nginx/nginx.conf</p>
<p>按下面的内容修改Nginx的配置文件。兰色表示需要手动修改的内容，红色表示增加的内容：</p>
<p>QUOTE:<br />
#user  nobody;</p>
<p># 指定子进程数，酌情修改<br />
worker_processes  4;</p>
<p>#error_log  logs/error.log;<br />
#error_log  logs/error.log  notice;<br />
#error_log  logs/error.log  info;</p>
<p>#pid        logs/nginx.pid;</p>
<p># 最多可打开文件数<br />
worker_rlimit_nofile 8196;</p>
<p>events {<br />
# 最大并发数<br />
worker_connections  1024;<br />
}</p>
<p>http {<br />
include       mime.types;<br />
default_type  application/octet-stream;</p>
<p># 关掉错误日志<br />
error_log       /dev/null  crit;<br />
# 如果需要错误日志，就用下面这行替换上面这行<br />
#error_log     /var/log/nginx/error.log  notice;</p>
<p># 定义日志格式，对日志使用缓存，避免频繁的磁盘I/O操作<br />
access_log   /var/log/nginx/access.log combined buffer=1m;</p>
<p>sendfile        on;<br />
tcp_nopush      on;<br />
tcp_nodelay     on;</p>
<p>keepalive_timeout  10;</p>
<p># 对静态文件和可压缩文件启用压缩，以节约网络带宽，提高访问速度<br />
gzip              on;<br />
gzip_min_length   1k;<br />
gzip_buffers      4 8k;<br />
gzip_http_version 1.1;<br />
gzip_comp_level   3;<br />
gzip_types        text/html text/css text/xml text/plain application/x-javascript application/xml application/pdf application/x-perl application/x-tcl application/msword application/rtf application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.wap.xhtml+xml image/x-ms-bmp;<br />
gzip_disable      &#8220;MSIE [1-6] \.&#8221;;<br />
gzip_vary         on;</p>
<p># 定义输出缓存大小<br />
output_buffers   4 32k;</p>
<p># 最大允许可上传文件大小<br />
client_max_body_size 20m;</p>
<p># 定义一个叫“myzone”的记录区，总容量为 10M<br />
# 和下面的limit_conn一起限制单个IP的并发连接数为10<br />
limit_zone myzone $binary_remote_addr  10m;</p>
<p>server {<br />
listen       80;<br />
server_name  localhost;</p>
<p>location / {<br />
root   /var/nginx/html;<br />
index  index.php index.html index.htm;<br />
limit_conn  myzone 10;<br />
}</p>
<p>error_page   500 502 503 504  /50x.html;</p>
<p>location = /50x.html {<br />
root   /var/nginx/html;<br />
}</p>
<p>location ~ \.php$ {<br />
root           html;<br />
fastcgi_pass   127.0.0.1:9000;<br />
fastcgi_index  index.php;<br />
fastcgi_param  SCRIPT_FILENAME  /var/nginx/html$fastcgi_script_name;<br />
include        fastcgi_params;<br />
}</p>
<p># 在浏览器本地暂存图片和静态文件，不记录日志，以节约机器资源<br />
location ~* \.(gif|png|jpg|jpeg|bmp|css|js|swf)$<br />
{<br />
root           /var/nginx/html;<br />
access_log off;<br />
expires max;<br />
}</p>
<p># 在浏览器中输入http://xxx.xxx.xxx/status可以看到Nginx的运行信息<br />
# 需要密码验证，不记录日志，限制IP访问<br />
location ~ /status<br />
{<br />
auth_basic  &#8220;O.N.M.P.&#8221;;<br />
auth_basic_user_file password;<br />
stub_status on;<br />
access_log   off;<br />
allow 192.168.0.0/24;<br />
deny all;<br />
}<br />
}</p>
<p>}</p>
<p>其他的部分请酌情修改。</p>
<p>运行下面的命令生成查看Nginx运行状态的密码文件：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
htpasswd -c /etc/nginx/password webadmin</p>
<p>按提示输入两遍密码即可。</p>
<p>在查看status的时候，输入用户名webadmin（见上面这行）和密码就能够看到Nginx的运行数据了。</p>
<p>Nginx能够流行和它的高负载能力是分不开的，在追求性能表现的场合，推荐使用Nginx+PHP-fastcgi的组合以获得强健的性能表现。而对于那些重视安全性的场合来说，可能OpenBSD内核集成的Apache更合适。OpenBSD下搭建Apache、MySQL、PHP环境的详细内容请参见偶的另篇博文，地址在下面：（博客速度可能较慢，四楼有转帖）</p>
<p>http://blog.chinaunix.net/u2/81136/showart_1860332.html</p>
<p>当然，你也可以利用Nginx内置的负载均衡功能，在前端分配访问流量，后端由Apache来运行PHP环境。Nginx负载均衡的配置可以去Nginx的主页参看相关内容，地址：http://wiki.nginx.org/Main。</p>
<p>下面为一个Nginx负载均衡的示例：</p>
<p>QUOTE:<br />
http {<br />
upstream myproject {<br />
ip_hash;<br />
server 192.168.1.1:80;<br />
server 192.168.1.2:80;<br />
server 192.168.1.3:80;<br />
server 192.168.1.4:80;<br />
}</p>
<p>server {<br />
listen 80;<br />
server_name www.domain.com;<br />
location / {<br />
proxy_pass http://myproject;<br />
}<br />
}<br />
}</p>
<p>网络拓扑示意图如下：</p>
<p>Ⅱ、Nginx日志截断</p>
<p>OpenBSD默认每天00:00会执行/etc/daily.local脚本中的内容，我们只需要把Nginx日志截断的命令加入到这个文件中即可。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/daily.local</p>
<p>加入下面的内容：</p>
<p>QUOTE:<br />
#!/bin/sh<br />
# 对Nginx日志进行截断和压缩，以节约log分区空间<br />
# 在张宴的基础上修改，感谢！<br />
mkdir -p /var/log/nginx/$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/<br />
mv /var/log/nginx/access.log /var/log/nginx/$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/access.$(date -d &#8220;yesterday&#8221; +&#8221;%Y%m%d&#8221;).log<br />
kill -USR1 `cat /var/run/nginx.pid`<br />
sleep 1<br />
gzip /var/log/nginx/$(date -d &#8220;yesterday&#8221; +&#8221;%Y&#8221;)/$(date -d &#8220;yesterday&#8221; +&#8221;%m&#8221;)/access.$(date -d &#8220;yesterday&#8221; +&#8221;%Y%m%d&#8221;).log</p>
<p>保存退出，为/etc/daily.local加上执行权限：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
chmod 0755 /etc/daily.local</p>
<p>其他需要每天运行的命令也都可以加在这个脚本里面，各位自行处理。</p>
<p>五、MySQL与phpMyAdmin的配置</p>
<p>Ⅰ、MySQL的配置</p>
<p>安全起见，MySQL需要运行在自己的daemon下：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/login.conf</p>
<p>跳到最后，加入MySQL所需的修改：</p>
<p>QUOTE:<br />
mysql:\<br />
 <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> penfiles-cur=2048:\<br />
 <img src='http://www.evanjiang.net.cn/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> penfiles-max=4096:\<br />
:tc=daemon:</p>
<p>使修改生效：<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
[Copy to clipboard] [ - ]CODE:<br />
cap_mkdb /etc/login.conf</p>
<p>初始化MySQL数据库：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
/usr/local/bin/mysql_install_db</p>
<p>MySQL自带了几个配置文件，在/usr/local/share/mysql目录中，可以拷贝为/etc/my.cnf使用。关于MySQL的配置和优化等内容，可以自行Google，这里不再赘述。<br />
MySQL安全须知<br />
不要用root身份运行数据库或PHP应用。并且，最好是数据库名和数据库用户名不同，以提高安全性。</p>
<p>例如，域名为example.net，则数据库名设为abcxyz，数据库用户名设为xyzabc。总之，关联度越低越好，数据库名和数据库用户名越复杂越难猜测越好。</p>
<p>控制权限的分配，PHP应用仅给予必要的权限。</p>
<p>例如，安装/升级Discuz!和PHPWind论坛程序，仅需要下图所示的权限即可：</p>
<p>在安装/升级完毕后，还可以把CREATE、ALTER、DROP权限去掉，不会影响论坛程序的运行，而且提高了安全性！<br />
Ⅱ、phpMyAdmin的配置</p>
<p>由于OpenBSD中的phpMyAdmin默认是安装在/var/www/phpMyAdmin目录中的，直接使用Nginx是无法访问的，我们需要把它拷贝到Nginx目录下，这样就可以通过浏览器来管理MySQL数据库了。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
mkdir /var/nginx/html/pma/<br />
cp -rf /var/www/phpMyAdmin/* /var/nginx/html/pma/</p>
<p>修改phpMyAdmin的配置文件，使之可用。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi +17 /var/nginx/html/pma/config.inc.php</p>
<p>将下面这行修改成：</p>
<p>QUOTE:<br />
$cfg['blowfish_secret'] = &#8216;a&#8217;; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */</p>
<p>（仅是加入了字母a而已）</p>
<p>保存退出。<br />
小提示：<br />
上面新建了/var/nginx/html/pma目录来保存phpMyAdmin的文件，目录名很简单。你可以用一个更复杂的目录名来代替，例如：pma2YAY5jRpfFfLXQVm这样的目录名，以防止黑客利用字典攻击等方法渗透你的phpMyAdmin！</p>
<p>你还可以在Nginx的配置文件中，将/var/nginx/html/pma配置成某个虚拟主机的根目录，并限定可以访问这个虚拟主机的IP。这样，就可以在很大程度上提高数据库的安全性了！一个配置示例在下面：</p>
<p>QUOTE:<br />
location / {<br />
allow   192.168.0.0/24;<br />
deny    all;<br />
}</p>
<p>假如平时只是偶尔用到phpMyAdmin，你还可以在用完后删除/var/nginx/html/pma目录，需要用的时候再拷贝过去。</p>
<p>你还可以将以上方法结合起来灵活使用，既建立一个无法被猜测的目录名，又限制IP访问，这样你的系统被黑的机会就会小了很多！<br />
六、强化PHP的安全</p>
<p>OpenBSD软件包中的PHP已经自带了suhosin这个补丁，可以在很大程度上提高PHP脚本的安全。本节主要讨论在php.ini文件中进行相关的设置，进一步提升安全性。具体来说，就是禁用某些危险函数和启用PHP安全模式。</p>
<p>偶一般是把对PHP的所有修改都放在一个单独的文件中进行，包括对PHP参数以及扩展模块的修改，都放在这个文件中一并处理，这样查找、修改和管理会方便许多：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /var/www/conf/php5/addphp.ini</p>
<p>加入下面的内容：</p>
<p>QUOTE:<br />
; 禁止动态加载模块<br />
enable_dl = Off</p>
<p>; 隐藏PHP信息<br />
expose_php = Off</p>
<p>; 限定可访问目录<br />
open_basedir = /var/nginx/html/</p>
<p>;设定session暂存目录<br />
session.save_path=/var/nginx/sesstmp</p>
<p>; 设定PHP上传文件的临时目录<br />
upload_tmp_dir=/var/nginx/tmp</p>
<p>; 禁用危险函数（注意下面的内容应该是一行，编排的原因分成了多行）<br />
disable_functions = phpinfo,com,shell,exec,system,passthru,error_log,<br />
stream_socket_server,putenv,ini_alter,ini_restore,ini_set,dl,openlog,<br />
syslog,readlink,symlink,link,leak,fsockopen,pfsockopen,proc_open,<br />
popepassthru,escapeshellcmd,escapeshellarg,chroot,scandir,<br />
chgrp,chown,shell_exec,proc_get_status,popen,shmop_close,<br />
shmop_delete,shmop_open,shmop_read,shmop_size,shmop_write</p>
<p>; 启用PHP的安全模式<br />
; PHP在安全模式下运行是用性能换安全。据简单测试，性能下降到50%左右，各位请酌情使用<br />
; 启用安全模式后，某些程序可能受到影响。例如，Discuz!将无法上传附件<br />
safe_mode = On</p>
<p>; pecl-APC只使用16M的共享内存用以加速PHP程序的运行<br />
apc.shm_size=16M</p>
<p>保存退出。<br />
七、强化SSH的安全<br />
Ⅰ、SSH配置文件的修改</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/ssh/sshd_config</p>
<p>跳到最后，加入下面的部分：</p>
<p>QUOTE:<br />
# 使用高位端口，防止黑客扫描22端口。可选范围1024~65535，推荐32768~65535。<br />
Port 58937</p>
<p># 登录时间控制在30秒内<br />
LoginGraceTime 30</p>
<p># 不允许root远程直接登录<br />
PermitRootLogin no<br />
StrictModes yes</p>
<p># 最多允许三次错误<br />
MaxAuthTries 3</p>
<p># 最多允许三个SSH线程<br />
MaxSessions 3</p>
<p># 使用SSH协议2<br />
Protocol 2</p>
<p># 不使用密码认证<br />
PasswordAuthentication no</p>
<p># 使用KEY的方式认证<br />
PubkeyAuthentication yes</p>
<p># KEY文件存放位置<br />
AuthorizedKeysFile      .ssh/authorized_keys</p>
<p>Ⅱ、使用KEY进行验证</p>
<p>下面以Windows环境下PuTTY为例讲解使用KEY验证的方法，Linux/UNIX下与此类似。</p>
<p>首先，从下面的网址下载PuTTY的安装包（Windows）：</p>
<p>http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe</p>
<p>下完后双击安装，不再赘述。这个软件包自带了下面几个非常实用的软件：</p>
<p>QUOTE:<br />
PuTTYgen:生成KEY；</p>
<p>Pageant:管理KEY；</p>
<p>PuTTY:SSH客户端；</p>
<p>PSFTP:使用SSH上传/下载文件。</p>
<p>下面就来实例讲解用PuTTY的这几个软件对远程主机进行KEY认证和管理的方法。假设我们要在192.168.0.132这个远程主机上使用young_king这个用户名进行KEY认证和登录。<br />
1.生成KEY</p>
<p>启动PuTTYgen，如下图：</p>
<p>在密钥长度栏输入想要的密钥长度，越大越安全。这里以最大的2048位为例，然后点“Generate”按钮，会开始生成KEY，生成过程中需要在下面的空白部分移动鼠标来生成随机数。</p>
<p>KEY生成完毕后，你可以输入一些标识信息，如下图：</p>
<p>还可以在下面的passphrase框内输入“保护码”，注意要输入两遍。“保护码”也就是密码的意思，用来保密私钥的，一定要记住这个哦！</p>
<p>都输入完毕后，点击下面的“Save public key”按钮保存公钥，如下图所示：</p>
<p>然后点击“Save private key”按钮保存私钥，如下图：</p>
<p>这个私钥最好不要保存在电脑上，我们把它拷贝到U盘上，随身带着，这就是我们的“KEY盘”。</p>
<p>要养成每月更换“保护码”的好习惯，更换“保护码”仍然要用到PuTTYgen这个软件，启动后点击“Load”，载入私钥，重新输入“保护码”，再确认一遍，然后点击“Save private key”保存即可！</p>
<p>2.启用KEY</p>
<p>上面生成了公钥和私钥，我们需要把公钥上传到远程主机的用户目录中，就要用到PSFTP这个软件了。启动它，如下图：</p>
<p>输入命令：open 192.168.0.132</p>
<p>接下来，PSFTP会列出远程主机上的RSA指纹以供识别，如下图：</p>
<p>这个指纹可以在远程主机上输入下面的命令查看：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key</p>
<p>请把这个指纹记在纸上，随身携带，和远程主机连接的时候就拿出来对比一下（这么做主要是为了防止连接被人劫持和指纹被伪造）。</p>
<p>如果上面PSFTP显示的指纹和远程主机上的不一致，那么毫无疑问是伪造的了，直接回车断开连接。如果相符，你可以输入“y”来保存这个指纹到本地计算机上（不推荐），或输入“n”只是这次连接使用。</p>
<p>随后PSFTP会让你输入登录用户名和密码，并自动进入该用户的根目录，如下图（以root为例）：</p>
<p>现在我们要把第一步生成的公钥上传到远程主机上（请把这个公钥复制到C:\Documents and Settings\Administrator目录先，如果你的Windows不是用Administrtor登录的，就替换成你登录用的用户名）。输入命令：put young_king，可以看到，公钥已经上传到/root目录了，见下图：</p>
<p>PuTTY生成的KEY并不能直接使用，需要转换一下。用PuTTY登录（此时上面修改的端口尚未启用，还是默认的22端口），以root身份执行：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
ssh-keygen -X -f /root/young_king &gt; /home/young_king/.ssh/authorized_keys</p>
<p>这就把公钥成功导入到young_king的目录中了，就可以被young_king这个用户使用了！</p>
<p>导入成功后，要删除多余的公钥：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
rm /root/young_king</p>
<p>下面介绍几个PSFTP常用的命令：</p>
<p>QUOTE:<br />
open xxx.xxx.xxx.xxx：打开远程主机（xxx.xxx.xxx.xxx为IP或域名）；</p>
<p>put xxxxxxxx：向远程主机上传文件（该文件需要事先拷贝到C:\Documents and Settings\Administrator目录）；</p>
<p>get xxxxxxxx：从远程主机下载文件（下载后保存在C:\Documents and Settings\Administrator目录）；</p>
<p>cd xxxxxx:进入远程主机的相应目录；</p>
<p>exit：退出PSFTP（也可以点右上角的叉关闭，不过不推荐这样做）。</p>
<p>更多的命令可以参看PuTTY的帮助文件，这个帮助写得不错。</p>
<p>3.使用KEY登录</p>
<p>我们上面虽然修改了SSH的配置文件（/etc/ssh/sshd_config），但还没有启用。输入下面的命令启用新的SSH配置，以便我们用KEY登录：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
kill -HUP `cat /var/run/sshd.pid`</p>
<p>PuTTY提供了一个KEY的管理程序，上面已经提到，是Pageant，我们使用这个程序来进行KEY登录。</p>
<p>启动Pageant，它会自动缩小到任务栏的通知区域，右键单击，选择“Add key”，会弹出个对话框让我们选择。插入上面制作好的“KEY盘”，并选择保存的私钥，会弹出个对话框让我们输入“保护码”，如下图：</p>
<p>如果安装PuTTY时选择了让Pageant关联.ppk文件，则双击私钥可以自动启动Pageant。</p>
<p>输入在生成KEY时输入的“保护码”，私钥就被导入到Pageant中了。再右键单击任务栏通知区的Pageant图标，选择第一项“New session”，Pageant会自动启动PuTTY，等待输入远程主机的相关信息，如下图：</p>
<p>输入IP（或域名）和端口号，点击最下面的“Open”按钮，PuTTY就会登录远程主机了。和PSFTP类似，会弹出个对话框让你确认远程主机的RSA指纹，如下图。同理，指纹不同就表示连接被劫持或指纹被伪造，点“取消”断开连接；指纹相同就点“否”，不保存主机公钥到本地计算机。</p>
<p>随后会让你输入用户名，输入“young_king”，看看，自动就登录上去了！</p>
<p>前面更改SSH配置的时候，已经禁用了root远程登录和使用密码登录，只能使用KEY才能登录进系统。想要维护系统的时候，就用这个KEY登录，再su成root。而且，需要上传/下载文件的时候，就用PSFTP，所有的操作都在SSH连接下进行，还有KEY的保护，安全性不知道提升了多少倍！黑客想要破解真是难于上青天！<br />
Ⅲ、按需启动SSH</p>
<p>我们只在必要的时候启动sshd服务，用完即停止，不给黑客扫描的机会。输入下面的命令：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
crontab -e</p>
<p>跳到最后，输入下面的内容（中间的空白部分为Tab）：</p>
<p>QUOTE:<br />
# 每天的10:30启动sshd服务<br />
30      10      *       *       *       /usr/sbin/sshd</p>
<p># 10:35即停止sshd服务，也就是说，你只有五分钟的时间可以登录进系统<br />
35      10      *       *       *       kill `cat /var/run/sshd.pid`</p>
<p>保存退出。</p>
<p>上面的时间请酌情修改。sshd服务启动的时间尽量不要太长，5~10分钟应该够了！</p>
<p>Ⅳ、一点安全小常识<br />
私钥请一定保存在安全的地方，不要保存在本地计算机上，并加上足够强度的“保护码”；</p>
<p>本地计算机不要保存远程主机的“指纹”，用一次确认一次（远程主机的指纹保存在注册表的HKEY_CURRENT_USER\Software\SimonTatham\PuTTY项下，可以手动删除）；</p>
<p>不要使用DSA密钥，据说有漏洞的；</p>
<p>不要在公用计算机上连接远程主机，有键盘记录器、木马什么的就麻烦了；</p>
<p>多个远程主机不要使用相同的公钥，最好是使用各自的公钥、私钥；</p>
<p>少用，最好是不用无线网络，加密强度太差，容易被破解；</p>
<p>M$系统下的病毒、木马太多了，推荐客户端转换到Linux/UNIX环境，安全性更高，而且仍然有PuTTY及工具可用；</p>
<p>注意清除本地机器上不必要保留的文件（例如私钥、公钥、主机RSA指纹、C:\Documents and Settings\Administrator目录下的文件等等）。</p>
<p>八、启用Packet Filter防火墙</p>
<p>Packet Filter是非常优秀的包过滤防火墙，OpenBSD核心已经集成了Packet Filter防火墙，不过默认并没有启用，下面我们来启用Packet Filter的强大功能！</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/pf.conf</p>
<p>跳到最后，加入下面的内容：</p>
<p>QUOTE:<br />
# 宏定义<br />
# 请把下面的fxp0换成你自己用的外网网卡，不知道的可以输入ifconfig查看<br />
ext_if=&#8221;fxp0&#8243;</p>
<p># 指定可以使用SSH登录的IP，支持CIDR<br />
admin_add=&#8221;192.168.0.0/24&#8243;</p>
<p># 指定SSH端口。<br />
# 注意，如果在/etc/ssh/sshd_config文件中更改了SSH端口号，这里的也需要同样修改。否则连不上了不要怪偶没有提醒！<br />
ssh_port=&#8221;58937&#8243;</p>
<p># 维持一个持久的表，里面存放的是对本机发动DDoS攻击的IP<br />
table  persist</p>
<p># 选项设定<br />
set require-order yes<br />
set block-policy drop<br />
set optimization aggressive<br />
set loginterface none<br />
set skip on lo0</p>
<p># TCP参数设定<br />
set timeout {interval 3,frag 10}<br />
set timeout {tcp.first 10,tcp.opening 2,tcp.established 600,tcp.closing 20,tcp.finwait 10,tcp.closed 10}</p>
<p># UDP、ICMP及其它参数设定<br />
set timeout {udp.first 20,udp.single 10,udp.multiple 10}<br />
set timeout {icmp.first 10,icmp.error 5}<br />
set timeout {other.first 20,other.single 10,other.multiple 20}<br />
set timeout {adaptive.start 0,adaptive.end 0}</p>
<p># 允许最多有65536个连接<br />
set limit { states 65535, frags 200, src-nodes 65536, tables 65536, table-entries 1048576 }</p>
<p># 包整形<br />
scrub in all<br />
scrub out all</p>
<p># 阻止所有不匹配的包和从DDoS主机来的包<br />
block quick from<br />
block return<br />
block in all<br />
block out all</p>
<p># 防止IP欺骗<br />
antispoof quick for {lo0,$ext_if}</p>
<p># 允许本机访问其他机器<br />
pass out quick on $ext_if inet from $ext_if to any flags S/SA keep state</p>
<p># 允许IPv4地址的客户机访问本地80（www）端口，发起过快连接（DDoS）的主机加入阻止列表。注意是一行，下同<br />
pass in quick on $ext_if inet proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload  flush global )</p>
<p># 允许IPv6地址的客户机访问本地80（www）端口，发起过快连接（DDoS）的主机加入阻止列表<br />
pass in quick on $ext_if inet6 proto tcp from any to $ext_if port 80 flags S/SA synproxy state (source-track rule,max-src-nodes 200,max-src-states 100,max-src-conn 100,max-src-conn-rate 1000/10,overload  flush global )</p>
<p># 允许管理IP远程连接本机SSH端口<br />
pass in quick on $ext_if inet proto tcp from $admin_add to $ext_if port $ssh_port flags S/SA synproxy state</p>
<p>保存退出。</p>
<p>修改系统配置，使得开机启用PF防火墙：</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/rc.conf.local</p>
<p>跳到最后，加入下面这行：</p>
<p>QUOTE:<br />
pf=YES<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
保存退出。</p>
<p>九、系统启动脚本的修改</p>
<p>修改系统启动脚本，使得MySQL、PHP(fastcgi)、Nginx可以在系统启动的时候自动启动，免去手动启动的麻烦。</p>
<p>[Copy to clipboard] [ - ]CODE:<br />
vi /etc/rc.local</p>
<p>跳到最后，加入下面的内容：</p>
<p>QUOTE:<br />
# 启动时校时。这行也可以加在/etc/daily.local文件的最前面，每天零点自动校时<br />
rdate -n 210.72.145.44<br />
# Start MySQL<br />
if [ -x /usr/local/bin/mysqld_safe ] ; then<br />
echo -n &#8216;Starting MySQL&#8230;&#8217;<br />
su -c mysql root -c &#8216;/usr/local/bin/mysqld_safe &gt;/dev/null 2&gt;&amp;1 &amp;&#8217;<br />
echo &#8220;DONE&#8221;<br />
fi<br />
# Start php-fastcgi<br />
if [ -x /usr/local/bin/spawn-fcgi ] ; then<br />
echo -n &#8216;Starting php-fastcgi&#8230;&#8217;<br />
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u www -f /usr/local/bin/php-fastcgi &gt; /var/run/fcgi.pid<br />
echo &#8220;DONE&#8221;<br />
fi<br />
# Start nginx<br />
if [ -x /usr/local/sbin/nginx ] ; then<br />
echo -n &#8216;Starting nginx&#8230;&#8217;<br />
/usr/local/sbin/nginx<br />
echo &#8220;DONE&#8221;<br />
fi</p>
<p>保存退出。</p>
<p>reboot重启，启动后输入top看看，O.N.M.P.环境已经搭建好！</p>
<p>系统启动后，还要把MySQL自带的测试数据库和匿名用户删除，防止被黑客利用。</p>
<p>默认情况下，新安装的MySQL数据库，root密码为空！同样需要第一时间进行设置，方法见下图：</p>
<p>好了，至此，O.N.M.P.环境的搭建已经结束，剩下的就看各位自行发挥了！</p>
<p>写在最后</p>
<p>其实，系统的安全是个整体工程，并不是用上了OpenBSD这个最安全的操作系统就算万事OK，还有很多事情要做。</p>
<p>更多的是需要在日常工作中积累经验，多分析系统整体的运行情况，多关注网络安全方面的内容，这样才能尽可能的打造安全的运维环境。</p>
<p>本手册只是起到抛砖引玉的作用，希望能吸引更多的人来关注系统安全，希望有更多的人能用上OpenBSD这个主动安全的操作系统，希望能推动OpenBSD在国内的更多普及。如此，则幸甚！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1176.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lamp/Famp .服务器建设方案</title>
		<link>http://www.evanjiang.net.cn/archives/1131.html</link>
		<comments>http://www.evanjiang.net.cn/archives/1131.html#comments</comments>
		<pubDate>Wed, 27 May 2009 07:02:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[www服务]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=1131</guid>
		<description><![CDATA[<p style="float: right;margin: 4px;">


</p> <p>L A M P &#8212;&#8212;LINUX APACHE MYSQL P HP</p>
<p>FAMP &#8212;&#8212;FREEBSD APACHE MYSQL P HP</p>
<p>或许还有</p>
<p>WAMP &#8212;&#8212;WINDOWS APACHE MYSQL P HP</p>
<p>why F reeBSD? why LINUX?</p>
<p>如果真要比较哪个更出色,那只有那些真正运行过大访问量及大规模的网站才会给出一个结果.</p>
<p>不过通过搜索本公司发现,大家所熟知的很多大网站,如BAIDU,YAHOO,163,SOHU,XINNET,QQ,TOM,GOV.CN,GOOGLE都在采用UNIX做为服务器系统.</p>
<p>为什么不是LINUX?本公司还没有机会建立让亿万网友次访问的系统,无法从性能上给出一个数据来解释原因.下面从一点个人的分析上来向大家说明一下,为什么要用UNIX而不是LINUX?</p>
<p>从发展方向来看,UNIX一直以来是以服务器为发展核心,它的发展全部针对于服务器的应用,而你所知道的,LINUX不论从宣传还是培 训来看,几乎对X功能[图形界面]重视之高,甚至提出要取代WINDOWS[客户机]这样的口号,那么,从开发的角度来看,LINUX不但要与UNIX竞争,还要与WINDOWS竞争?你会说我们应该同情它吗?不,本公司只能说LINUX的定位有问题.</p>
<p>其一,为什么要代替掉WINDOWS作为客户机的地位?有这个可能吗?WINDOWS除服务器版外的定位是小型工作系统,而不是服务器,不论图形还是软 件兼容方面已经做的比较完善,用LINUX来代替WINDOWS最大的可能是实现与WINDOWS一样的功能[事实上现在还达不到],怎么会成功,两个产品具备差不多性能的情况下没有人愿意去更换的,IE与FIREFOX的竞争就是这个道理,如果两者功能差距不大,后者不可能把前者代替的.因此LINUX代替WINDOWS成为主流客户机系统的可能性非常小,而相比之下应用成本又非常高,所以你看到的,LINUX还是被更多的用在服务器上.不是说LINUX图形界面系统是失败的,只是说从把LINUX做为服务器系统的角度来看,图形系统根本没有必要.</p>
<p>其二,加入了图形系统后,一个服务器系统并不是简单的被认为增加了图形模块这么简单,在系统中图形模块与其它模块有关联,这样在运行服务器时一定会加重服务器的负担,当然你会说不安装图形界面不就好点吗?是的,可是有哪个LINUX服务器只用文字界面?这些管理员都是LINUX培训出来的,全都知道图形界面更简单,哪个不用呢?

其三,大家来分析,为什么LINUX比WINDOWS服务器更安全?这里面有一般用户对系统的熟悉程度的原因,也有相关的软 件与服务器系统兼容的问题,在WINDOWS下可以找到非常之多可以修改系统[事实上是修改系统软 件的工作方式]的工具,而LINUX下呢,当前这样的工具是比较少的,因为不兼容.而且LINUX可以定制内核,而WINDOWS是不会让你看到源代码的,全世界的WINDOWS服务器都是一个样的内核,所以在WINDOWS服务器之间传播病毒是很容易的,而LINUX则不同.尽管如此,图形界面化的LINUX也要同WINDOWS一样执行图形命令,要把命令打包,而打包好的命令就会被其它工具可利用,随着LINUX的发展,运行在LINUX上病毒已经出现,随着用户对LINUX的更加了解,LINUX与WINDOWS在操作习惯上还会有什么不同?那么LINUX版的病毒会少吗?








不知道下这样的结论是否准确:并不是说开发WINDOWS的程序员/工程师就比开发LINUX的程序员/工程师笨,而是说一个系统中元素越多,系统的潜在问题就多.大家来看下这三个系统:</p>
<p>WINDOWS=服务功能+图形功能</p>
<p>LINUX=服务功能+图形功能+内核定制</p>
<p>UNIX(BSD)=服务功能+内核定制</p>
<p>区别很明显.商业的宣传通常并不是给用户最好的,而是给用户最愿意付出金钱的东西.</p>
<p>对于服务器系统来讲,大家需要的是什么呢?只是服务器系统就已经足够.需要X界面吗?只是为了操作的所谓简单就增加这个庞大的东西?没必要,在本空间的其它内容你可以看到,纯文字界面的系统配置并没有想象的复杂.而LINUX推动者所宣传的无非是LINUX更容易学习,或者是所谓的社区支持者多,事实上了解到UNIX系统的技术工程师都知道UNIX(BSD)的的升级及更新速度,以及PORTS下软件开发者的活跃程度.</p>
<p>REDHAT到来,是为何而来,赚钱.是给中国最好的技术吗?鬼才相信.就象PHP是世界是最流行的开发语言而在中国很多地方鲜有人知一样,一个技术的发展与应用的确需要推动的,要推动就要有利益,如果让恒德来选择,恒德更愿意找到一个平衡点,在获得利益的同时给用户最好的产品.








说了这么多,各位看官也只是听说,听说有什么用呢?没有自己的实践谁说的都不一定准确.那么恒德的想法是希望大家在建立开发环境的时候,尤其是开源软件的开发环境的时候更多的考虑采用UNIX(BSD),它的表现或许并不是你想象的那么难以接受.看到PHP在中国的发展是令人鼓舞的,PHP的易用性给了WEB开发人员很好的帮助,并不是人们想象的简单就不值得掌握和应用.而UNIX(BSD)在服务器系统方面给你的支持也会让你更加轻松自如的.</p>
<p>当你看到,听到或者想到LAMP时是不是会想起FAMP或者UAMP?</p>
]]></description>
			<content:encoded><![CDATA[<p>L A M P &#8212;&#8212;LINUX APACHE MYSQL P HP</p>
<p>FAMP &#8212;&#8212;FREEBSD APACHE MYSQL P HP</p>
<p>或许还有</p>
<p>WAMP &#8212;&#8212;WINDOWS APACHE MYSQL P HP</p>
<p>why F reeBSD? why LINUX?</p>
<p>如果真要比较哪个更出色,那只有那些真正运行过大访问量及大规模的网站才会给出一个结果.</p>
<p>不过通过搜索本公司发现,大家所熟知的很多大网站,如BAIDU,YAHOO,163,SOHU,XINNET,QQ,TOM,GOV.CN,GOOGLE都在采用UNIX做为服务器系统.</p>
<p>为什么不是LINUX?本公司还没有机会建立让亿万网友次访问的系统,无法从性能上给出一个数据来解释原因.下面从一点个人的分析上来向大家说明一下,为什么要用UNIX而不是LINUX?</p>
<p>从发展方向来看,UNIX一直以来是以服务器为发展核心,它的发展全部针对于服务器的应用,而你所知道的,LINUX不论从宣传还是培 训来看,几乎对X功能[图形界面]重视之高,甚至提出要取代WINDOWS[客户机]这样的口号,那么,从开发的角度来看,LINUX不但要与UNIX竞争,还要与WINDOWS竞争?你会说我们应该同情它吗?不,本公司只能说LINUX的定位有问题.</p>
<p>其一,为什么要代替掉WINDOWS作为客户机的地位?有这个可能吗?WINDOWS除服务器版外的定位是小型工作系统,而不是服务器,不论图形还是软 件兼容方面已经做的比较完善,用LINUX来代替WINDOWS最大的可能是实现与WINDOWS一样的功能[事实上现在还达不到],怎么会成功,两个产品具备差不多性能的情况下没有人愿意去更换的,IE与FIREFOX的竞争就是这个道理,如果两者功能差距不大,后者不可能把前者代替的.因此LINUX代替WINDOWS成为主流客户机系统的可能性非常小,而相比之下应用成本又非常高,所以你看到的,LINUX还是被更多的用在服务器上.不是说LINUX图形界面系统是失败的,只是说从把LINUX做为服务器系统的角度来看,图形系统根本没有必要.</p>
<p>其二,加入了图形系统后,一个服务器系统并不是简单的被认为增加了图形模块这么简单,在系统中图形模块与其它模块有关联,这样在运行服务器时一定会加重服务器的负担,当然你会说不安装图形界面不就好点吗?是的,可是有哪个LINUX服务器只用文字界面?这些管理员都是LINUX培训出来的,全都知道图形界面更简单,哪个不用呢?<br />
<span id="more-1131"></span><br />
其三,大家来分析,为什么LINUX比WINDOWS服务器更安全?这里面有一般用户对系统的熟悉程度的原因,也有相关的软 件与服务器系统兼容的问题,在WINDOWS下可以找到非常之多可以修改系统[事实上是修改系统软 件的工作方式]的工具,而LINUX下呢,当前这样的工具是比较少的,因为不兼容.而且LINUX可以定制内核,而WINDOWS是不会让你看到源代码的,全世界的WINDOWS服务器都是一个样的内核,所以在WINDOWS服务器之间传播病毒是很容易的,而LINUX则不同.尽管如此,图形界面化的LINUX也要同WINDOWS一样执行图形命令,要把命令打包,而打包好的命令就会被其它工具可利用,随着LINUX的发展,运行在LINUX上病毒已经出现,随着用户对LINUX的更加了解,LINUX与WINDOWS在操作习惯上还会有什么不同?那么LINUX版的病毒会少吗?<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
不知道下这样的结论是否准确:并不是说开发WINDOWS的程序员/工程师就比开发LINUX的程序员/工程师笨,而是说一个系统中元素越多,系统的潜在问题就多.大家来看下这三个系统:</p>
<p>WINDOWS=服务功能+图形功能</p>
<p>LINUX=服务功能+图形功能+内核定制</p>
<p>UNIX(BSD)=服务功能+内核定制</p>
<p>区别很明显.商业的宣传通常并不是给用户最好的,而是给用户最愿意付出金钱的东西.</p>
<p>对于服务器系统来讲,大家需要的是什么呢?只是服务器系统就已经足够.需要X界面吗?只是为了操作的所谓简单就增加这个庞大的东西?没必要,在本空间的其它内容你可以看到,纯文字界面的系统配置并没有想象的复杂.而LINUX推动者所宣传的无非是LINUX更容易学习,或者是所谓的社区支持者多,事实上了解到UNIX系统的技术工程师都知道UNIX(BSD)的的升级及更新速度,以及PORTS下软件开发者的活跃程度.</p>
<p>REDHAT到来,是为何而来,赚钱.是给中国最好的技术吗?鬼才相信.就象PHP是世界是最流行的开发语言而在中国很多地方鲜有人知一样,一个技术的发展与应用的确需要推动的,要推动就要有利益,如果让恒德来选择,恒德更愿意找到一个平衡点,在获得利益的同时给用户最好的产品.<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
说了这么多,各位看官也只是听说,听说有什么用呢?没有自己的实践谁说的都不一定准确.那么恒德的想法是希望大家在建立开发环境的时候,尤其是开源软件的开发环境的时候更多的考虑采用UNIX(BSD),它的表现或许并不是你想象的那么难以接受.看到PHP在中国的发展是令人鼓舞的,PHP的易用性给了WEB开发人员很好的帮助,并不是人们想象的简单就不值得掌握和应用.而UNIX(BSD)在服务器系统方面给你的支持也会让你更加轻松自如的.</p>
<p>当你看到,听到或者想到LAMP时是不是会想起FAMP或者UAMP?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/1131.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
