#==============================================================================
#=== 半自动 web server 安装脚本
#=== 2010年7月30日
#=== Ghost
#=== 此脚本在 CentOS 5.5 x64 上测试通过
#==============================================================================
#===安装需要的软件
#==============================================================================
yum install vsftpd gcc g-c++ gcc-c++ libtool \
openssl-devel ncurses-devel pam-devel python-devel libxml2-devel -y
#==============================================================================
#===下载需要的软件, 假设下载的目录为 /down/websoft/
#==============================================================================
softpath="/down/websoft/"
mkdir ${softpath} -p
cd ${softpath}
#=== Apache 2.2.16
#=== URL: http://labs.renren.com/apache-mirror/httpd/
wget http://labs.renren.com/apache-mirror/httpd/httpd-2.2.16.tar.gz
#=== PHP 5.3.3
#=== URL: http://cn2.php.net/get/php-5.3.3.tar.gz/from/a/mirror
wget http://cn2.php.net/get/php-5.3.3.tar.gz/from/cn.php.net/mirror
#=== libxml2-2.7.7
#=== URL: ftp://xmlsoft.org/libxml2/
wget ftp://xmlsoft.org/libxml2/libxml2-2.7.7.tar.gz
#=== libxslt 1.1.22
#=== URL: http://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/
wget http://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/libxslt-1.1.22.tar.gz
#=== MCrypt
#=== URL: http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/
wget http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
#=== libmcrypt
#=== URL: http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/
wget http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
#=== mhash
#=== URL: http://nchc.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/
wget http://nchc.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
#=== libiconv
#=== URL: http://ftp.gnu.org/pub/gnu/libiconv/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
#=== curl
#=== URL: http://curl.haxx.se/download.html
wget http://curl.haxx.se/download/curl-7.21.0.tar.gz
#=== zlib
#=== URL: http://zlib.net/
wget http://zlib.net/zlib-1.2.5.tar.gz
#=== freetype
#=== URL: http://nchc.dl.sourceforge.net/project/freetype/freetype2/
wget http://nchc.dl.sourceforge.net/project/freetype/freetype2/2.4.1/freetype-2.4.1.tar.gz
#=== fontconfig
#=== URL: http://www.fontconfig.org/release/
wget http://www.fontconfig.org/release/fontconfig-2.8.0.tar.gz
#=== GD2
#=== URL: http://www.libgd.org/releases/
wget http://www.libgd.org/releases/gd-2.0.36RC1.tar.gz
#=== libpng
#=== URL: http://nchc.dl.sourceforge.net/p ... bpng-stable/1.2.42/
wget http://nchc.dl.sourceforge.net/project/libpng/00-libpng-stable/1.2.42/libpng-1.2.42.tar.gz
#==== Devl URL: http://nchc.dl.sourceforge.net/project/libpng/02-libpng-devel/
#wget http://nchc.dl.sourceforge.net/p ... -1.5.0beta16.tar.gz
#=== libjpeg v6b
#=== URL: http://nchc.dl.sourceforge.net/project/libjpeg/libjpeg/6b/
wget http://nchc.dl.sourceforge.net/project/libjpeg/libjpeg/6b/jpegsrc.v6b.tar.gz
#=== libgif
#=== URL: http://sourceforge.net/projects/giflib/files/
wget http://sourceforge.net/projects/giflib/files/giflib%204.x/giflib-4.1.6/giflib-4.1.6.tar.gz/download
#=== MySQL
#=== URL: http://www.mysql.com/downloads/mysql/#downloads
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.49.tar.gz/from/http://mysql.ntu.edu.tw/
#=== PAM-Mysql
#=== URL: http://pam-mysql.sourceforge.net/
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
#=== cronolog
#=== URL: http://cronolog.org/
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
#=== Xcache
#=== URL: http://xcache.lighttpd.net/
wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gz
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install zlib
#==============================================================================
# Make dir
#--------
mkdir /usr/local/zlib -p
cd ${softpath}
tar zxvf zlib-1.2.5.tar.gz
cd ${softpath}/zlib-1.2.5
./configure --prefix=/usr/local/zlib
make && make install
echo "/usr/local/zlib/lib" >> /etc/ld.so.conf
ldconfig
chcon -t textrel_shlib_t /usr/local/zlib/lib/libz.so*
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install freetype2
#==============================================================================
# Make dir
#--------
mkdir /usr/local/freetype2 -p
cd ${softpath}
tar zxvf freetype-2.4.1.tar.gz
cd ${softpath}/freetype-2.4.1
./configure --prefix=/usr/local/freetype2
make && make install
echo "/usr/local/freetype2/lib" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install jpeg
#==============================================================================
# Make dir
#--------
mkdir /usr/local/jpeg6
mkdir /usr/local/jpeg6/include
mkdir /usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/bin
mkdir /usr/local/jpeg6/man/man1/ -p
cd ${softpath}
tar zxvf ${softpath}/jpegsrc.v6b.tar.gz
cd ${softpath}/jpeg-6b
#需要安装 libtool, 如果没有安装,可以通过 yum install libtool -y 来安装
#把已经安装好的 libtool 配置覆盖掉jqeg 下的配置
\cp -f /usr/share/libtool/config.sub ./
\cp -f /usr/share/libtool/config.guess ./
./configure --prefix=/usr/local/jpeg6 --enable-shared --enable-static
make
make install-lib
make install
echo "/usr/local/jpeg6/lib" >> /etc/ld.so.conf
ldconfig
#libtool --finish /usr/local/jpeg6/lib
#==============================================================================
#==============================================================================
#==============================================================================
#=== Insatall libpng
#==============================================================================
# Make dir
#--------
mkdir /usr/local/libpng2
cd ${softpath}
tar zxvf ${softpath}/libpng-1.2.42.tar.gz
cd ${softpath}/libpng-1.2.42/
#添加环境变量
export LDFLAGS=-L/usr/local/zlib/lib
export CFLAGS=-I/usr/local/zlib/include
./configure --prefix=/usr/local/libpng2
make
make install
echo "/usr/local/libpng2/lib" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install libiconv
#==============================================================================
# Make dir
#--------
mkdir /usr/local/libiconv
cd ${softpath}
tar zxvf ${softpath}/libiconv-1.13.1.tar.gz
cd ${softpath}/libiconv-1.13.1
./configure --prefix=/usr/local/libiconv
make
make install
echo "/usr/local/libiconv/lib" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install libxml
#==============================================================================
# Make dir
#--------
#
# 你可能需要安装 python-devel
#
mkdir /usr/local/libxml2
cd ${softpath}
tar zxvf ${softpath}/libxml2-2.7.7.tar.gz
cd ${softpath}/libxml2-2.7.7
./configure --prefix=/usr/local/libxml2 --with-python
make
make install
# 这里的路径,要看 python 安装的版本是 2.6,还是 2.4
# 查看 python 的版本 python -V
LD_LIBRARY_PATH=/usr/local/lib
LD_LIBRARY_PATH=/usr/local/libxml2/lib
LD_LIBRARY_PATH=/usr/lib/python2.4/site-packages
echo "/usr/local/libxml2/lib" >> /etc/ld.so.conf
echo "/usr/lib/python2.4/site-packages" >> /etc/ld.so.conf
ldconfig
#===========================================================================
#==============================================================================
#==============================================================================
#=== Install libxslt
#==============================================================================
# Make dir
#--------
mkdir /usr/local/libxslt
cd ${softpath}
tar zxvf ${softpath}libxslt-1.1.22.tar.gz
cd ${softpath}libxslt-1.1.22
./configure --prefix=/usr/local/libxslt \
--with-libxml-prefix=/usr/local/libxml2/
make
make install
echo "/usr/local/libxslt/lib" >> /etc/ld.so.conf
# 这里的路径,要看 python 安装的版本是 2.6,还是 2.4
echo "/usr/local/libxslt/lib/python2.4/site-packages" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install fontconfig
#==============================================================================
mkdir /usr/local/fontconfig
cd ${softpath}
tar zxvf ${softpath}fontconfig-2.8.0.tar.gz
cd ${softpath}fontconfig-2.8.0/
export PKG_CONFIG_PATH=/usr/local/libxml2/lib/pkgconfig:$PKG_CONFIG_PATH
cp -r /usr/local/libxml2/include/libxml2/libxml/ /usr/include/
./configure --prefix=/usr/local/fontconfig \
--with-freetype-config=/usr/local/freetype2/bin/freetype-config
make
make install
echo "/usr/local/fontconfig/lib" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install gd
#==============================================================================
mkdir /usr/local/gd2
cd ${softpath}
tar zxvf ${softpath}gd-2.0.36RC1.tar.gz
cd ${softpath}gd-2.0.36RC1
cp /usr/local/libpng2/include/pngconf.h ${softpath}gd-2.0.36RC1
./configure --prefix=/usr/local/gd2 \
--with-zlib=/usr/local/zlib \
--with-jpeg=/usr/local/jpeg6 \
--with-freetype=/usr/local/freetype2 \
--with-xml=/usr/local/libxml2 \
--with-png=/usr/local/libpng2 \
--with-fontconfig=/usr/local/fontconfig \
--with-slt=/usr/local/libxslt
make
make install
echo "/usr/local/gd2/lib" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install libmcrypt
#==============================================================================
mkdir /usr/local/libmcrypt
cd ${softpath}/
tar zxvf ${softpath}/libmcrypt-2.5.8.tar.gz
cd ${softpath}/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make
make install
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
cd ${softpath}/libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make
make install
ln -s /usr/local/libmcrypt/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/libmcrypt/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/libmcrypt/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/libmcrypt/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
cp /usr/local/libmcrypt/bin/libmcrypt-config /usr/bin/libmcrypt-config
cp /usr/local/libmcrypt/lib/libmcrypt.* /usr/lib
echo "/usr/local/libmcrypt/lib" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install mhash 如果自定义目录,mcrypt 可能无法找到 mhash, 建议还是不要修改目录.
#==============================================================================
cd ${softpath}/
tar zxvf ${softpath}/mhash-0.9.9.9.tar.gz
cd ${softpath}/mhash-0.9.9.9
./configure
make
make install
echo "/usr/local/lib" >> /etc/ld.so.conf
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install mcrypt 唉.经常找不到 libmhash
#==============================================================================
mkdir /usr/local/mcrypt
cd ${softpath}/
tar zxvf ${softpath}/mcrypt-2.6.8.tar.gz
cd ${softpath}/mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/lib \
./configure --prefix=/usr/local/mcrypt \
--with-libmcrypt-prefix=/usr/local/libmcrypt \
--with-libiconv-prefix=/usr/local/libiconv
make
make install
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install apache
#==============================================================================
#
# apache 的头标识,可以在 include/ap_release.h 中修改
#
mkdir -p /web/apache/
mkdir -p /web/logs/
mkdir -p /web/wwwroot/
cd ${softpath}/
tar zxvf ${softpath}/httpd-2.2.16.tar.gz
cd ${softpath}/httpd-2.2.16
./configure --prefix=/web/apache --enable-modules=so \
--enable-rewrite --enable-mods-shared=all \
--enable-cache --enable-disk-cache --enable-mem-cache \
--enable-file-cache \
--with-mpm=worker --enable-ssl \
--enable-suexec --with-suexec-caller=daemon \
--with-z=/usr/local/zlib
#
# 如果提示 configure: error: ...No recognized SSL/TLS toolkit detected
# 是因为没有安装 openssl-devel
# 用 yum install openssl-devel -y 安装就可以了
#
make
make install
echo "/web/apache/lib" >> /etc/ld.so.conf
ldconfig
cp ${softpath}/httpd-2.2.16/support/apachectl /etc/rc.d/init.d/httpd
#vim /etc/rc.d/init.d/httpd
# 添加:
# Startup script for the Apache Web Server
# chkconfig: 2345 85 15
# description: Apache is a World Wide Web server .It is used to server
# HTML files and CGI.
# processname: httpd
# pidfile: /web/apache/log/httpd.pid
# config: /web/apache/conf/httpd.conf
#===============================
chkconfig --add httpd
chmod 755 /etc/rc.d/init.d/httpd
chkconfig --level 345 httpd on
#如果是SElinux启用,允许加载下面文件:
chcon -t textrel_shlib_t /web/apache/modules/*.so
groupadd apache
useradd apache -g apache -s /sbin/nologin
chown apache.apache /web/wwwroot/ -R
chmod 777 /web/wwwroot/ -R
echo "<?php phpinfo(); ?>" > /web/wwwroot/phpinfo.php
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install mysql
#==============================================================================
#
# 如果安装了 ncurses-devel-xxx, 就不用加下面这句参数了
#--with-named-curses-libs=/usr/lib/libncursesw.so.5 \
#
# 安装 ncurses-devel, yum install ncurses-devel -y
#
cd ${softpath}/
mkdir /web/mysql/
tar zxvf ${softpath}/mysql-5.1.49.tar.gz
cd ${softpath}/mysql-5.1.49
./configure \
--prefix=/web/mysql --sysconfdir=/web/mysql \
--without-debug --enable-assembler \
--with-mysqld-ldflags=-all-static \
--with-client-ldflags=-all-static \
--with-unix-socket-path=/tmp/mysql.sock \
--with-mysqld-user=mysql \
--with-extra-charsets=utf8,gbk,gb2312 \
--with-innodb \
--with-mysqld-user=mysql \
--with-charset=utf8 --with-collation=utf8_unicode_ci
make
make install
echo "/web/mysql/lib/mysql" >> /etc/ld.so.conf
echo "/web/mysql/lib/mysql/plugin" >> /etc/ld.so.conf
ldconfig
cp ${softpath}/mysql-5.1.49/support-files/my-medium.cnf /etc/my.cnf
cp ${softpath}/mysql-5.1.49/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chmod 755 /etc/init.d/mysqld
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
#修改 /etc/init.d/mysqld
#vim /etc/init.d/mysqld
cp -r ${softpath}/mysql-5.1.49/sql/share/english/ /web/mysql/share/
cp ${softpath}/mysql-5.1.49/scripts/fill_help_tables.sql /web/mysql/share/
cp ${softpath}/mysql-5.1.49/scripts/mysql_system_tables.sql /web/mysql/share/
cp ${softpath}/mysql-5.1.49/scripts/mysql_system_tables_data.sql /web/mysql/share/
mkdir /web/mysql/data/mysql/english/ -p
cp ${softpath}mysql-5.1.49/sql/share/english/errmsg.sys /web/mysql/data/mysql/english/
# 把原来的mysql 备份
# 如果已经安装了 mysql 客户端的话.
mv /usr/bin/mysql /usr/bin/mysql.bak
ln -s /web/mysql/bin/mysql /usr/bin/mysql
${softpath}/mysql-5.1.49/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/web/mysql --user=mysql
chown mysql.mysql -R /web/mysql/
# 启动mysql服务
service mysqld start
#在这里输入密码 (假设密码为123456,当然,这个密码是非常的不安全)
/web/mysql/bin/mysql_secure_installation
#
# 同时,在这里删除 anonymous(匿名用户),数据库 test(测试) 并且不允许 root 的远程登录
# 最后,再刷新权限表
#
chown mysql.mysql -R /web/mysql/
chmod 700 -R /web/mysql/
#/web/mysql/bin/mysqladmin -u root password 123456
#
# 输入密码
# 测试是否显示数据库
# show databases;
# 退出
# quit;
#
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install cURL
#==============================================================================
cd ${softpath}/
tar zxvf ${softpath}/curl-7.21.0.tar.gz
cd ${softpath}/curl-7.21.0
./configure
make
make install
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install php
#==============================================================================
# 需要安装 libxml2-devel
cd ${softpath}
mkdir /web/php/
tar zxvf ${softpath}/php-5.3.3.tar.gz
cd ${softpath}/php-5.3.3/
LD_LIBRARY_PATH=/usr/local/lib
LD_LIBRARY_PATH=/usr/local/libxml2/lib
LD_LIBRARY_PATH=/usr/lib/python2.4/site-packages
LD_LIBRARY_PATH=/usr/local/zlib/lib
LD_LIBRARY_PATH=/usr/local/zlib/include
LD_LIBRARY_PATH=/usr/local/libmcrypt/lib
export LIBXML2_LIBS=-L/usr/local/libxml2/lib
export LIBXML2_CFLAGS=-I/usr/local/libxml2/lib/include
export LIBXML2_LIBS=-L/usr/local/gd2/lib
export LIBXML2_CFLAGS=-I/usr/local/gd2/lib/include
ldconfig
./configure \
--prefix=/web/php --with-apxs2=/web/apache/bin/apxs \
--with-gd=/usr/local/gd2 \
--with-jpeg-dir=/usr/local/jpeg6 --with-png-dir=/usr/local/libpng2 \
--enable-gd-native-ttf --with-zlib-dir=/usr/local/zlib \
--with-freetype-dir=/usr/local/freetype2 \
--enable-zip --with-libxml-dir=/usr/local/libxml2 \
--with-mysql=/web/mysql --with-curl \
--with-mcrypt=/usr/local/libmcrypt/ \
--enable-mbstring=all \
--with-mhash --enable-gd-native-ttf \
--enable-ftp --disable-ipv6 \
--with-iconv
make
make test
make install
# 复制 php.ini
cp ${softpath}/php-5.3.3/php.ini-development /web/php/lib/php.ini
#vim /web/apache/conf/httpd.conf
#查找<IfModule mime_module>
#在此范围添加 (差不多在 365 行)
# AddType application/x-httpd-php .php
#
# 修改: DirectoryIndex index.html (差不多在 224 行)
# 为: DirectoryIndex index.php index.htm index.html
#
#
# 修改: DocumentRoot "/web/apache/htdocs" (差不多在 162 行)
# 为: DocumentRoot "/web/wwwroot"
#
#
# 修改: <Directory "/web/apache/htdocs"> (差不多在 189 行)
# 为: <Directory "/web/wwwroot">
#
# 禁止Apache 列出目录
# 修改 Options Indexes FollowSymLinks (差不多在 202 行)
# 去掉 Indexes即可
#
# 修改 apache 运行的用户
# 修改 User 和 Group 的值为 apache (差不多在 123 行)
#
# 修改 apache服务名称 的值为 ServerName * (差不多在 155 行)
#
# 添加 虚拟主机支持(vhosts) (差不多在 448 行)
# NameVirtualHost *:80
#
# Include conf/vhosts/*.conf
#
#<VirtualHost *:80>
# ServerName *
# ServerAlias *
# DocumentRoot "/web/wwwroot/null"
# ErrorDocument 404 "/404.htm"
# php_admin_value open_basedir "/web/wwwroot/null"
#</VirtualHost>
#
# 为了让apache返回头部的信息尽可能少.可以添加 ServerTokens Prod
#
#
mkdir /web/apache/conf/vhosts/
mkdir /web/wwwroot/null/
chmod 777 /web/wwwroot/ -R
chown apache.apache /web/wwwroot/ -R
#如果是SElinux启用,允许加载下面文件:
chcon -t textrel_shlib_t /web/apache/modules/libphp5.so
#chcon -t textrel_shlib_t /web/apache/modules/*.so
# 需要修改PHP的时区.
# 可以修改 /web/php/lib/php.ini 的第 996 行左右 date.timezone = PRC
#
#
# 当然,Apache,PHP,Mysql 还有很多要配置要修改
# 比如,Apache 的 vhost 支持, 禁用文件列表等等
#
# 假如很不幸,你的主机是在天朝,
# 那么,由于某些不可理喻的"龟腚".
# 您必需过滤掉所有的,未备案的,DNS又指向你服务器的域名!
# (是不是看得很纠结? 我也有这种感觉.)
#
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install vsftpd
#==============================================================================
# Vsftpd 以安全著称. 我也感觉它挺安全的,
# 嗯,那么,直接用 yum 来安装吧. 省时省力.
yum install vsftpd -y
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install pam-mysql
#==============================================================================
# 需要用到 pam 的开发模块
# 如果没有安装, 用 yum install pam-devel -y 安装就可以了.
cd ${softpath}/
tar zxvf ${softpath}/pam_mysql-0.7RC1.tar.gz
cd ${softpath}/pam_mysql-0.7RC1
./configure --with-mysql=/web/mysql
make
make install
chcon -t textrel_shlib_t /lib/security/pam_mysql.so
echo "/lib/security" >> /etc/ld.so.conf
ldconfig
#==============================================================================
#==============================================================================
#==============================================================================
#=== 配置 vsftpd ,支持虚拟用户
#==============================================================================
# 修改 /etc/vsftpd.conf
#---------------------------------------------------------------------------
# 下面是 Vsftpd 配置文件
#---------------------------------------------------------------------------
#匿名用户登录:
anonymous_enable=NO
#匿名用户上传
anon_upload_enable=NO
#更改匿名用户上传文件属性
anon_umask=000
#匿名用户新建目录
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#允许本地用户登陆
local_enable=YES
#本地用户文件上传后的属性
local_umask=0666
#可写文件(上传)
#全局配置可写
write_enable=YES
#当使用者转换目录,则会显示该目录下的.message信息
dirmessage_enable=NO
#限制用户在自己的主目录
chroot_local_user=YES
#是否更改上传文件属性
#chown_uploads=YES
#更改文件属主为apache
#chown_username=apache
#文件属性
file_open_mode=0770
#记录使用者所有上传下载信息
xferlog_enable=YES
#将上传下载信息记录到/www/logs/vsftpd.log中
xferlog_file=/www/log/vsftpd.log
#日志使用标准xferlog格式
#xferlog_std_format=YES
#客户端超过600S没有动作就自动被服务器踢出
idle_session_timeout=600
#数据传输时超过120S没有动作被服务器踢出
data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#FTP欢迎信息
ftpd_banner=Welcome X.
#banned_email_file=/etc/vsftpd.banned_emails
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
#监听
#listen_port=21
listen=YES
connect_from_port_20=YES
#使用虚拟用户
guest_enable=YES
#虚拟用户名
guest_username=apache
#pam认证文件
pam_service_name=vsftpd
#用户控制文件目录
user_config_dir=/etc/vsftpd/vuconf
#---------------------------------------------------------------------------
# Vsftpd 的配置文件结束
#---------------------------------------------------------------------------
mkdir /etc/vsftpd/vuconf
#---------------------------------------------------------------------------
# 虚拟用户的配置文件 /etc/vsftpd/vuconf/test
#---------------------------------------------------------------------------
#允许虚拟用户上传文件
write_enable=YES
anon_upload_enable=YES
#允许虚拟用户修改文件名和删除文件
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#设置上传文件属性,由2组成,具体什么情况我也不是太清楚
#现在上传后是777
#当修改file_open_mode时,跟着这个属性走。(不动anon_umask时)
#暂时OK了!
anon_umask=0000
file_open_mode=0777
#这个好像没用
local_umask=0666
#虚拟用户登录路径
local_root=/web/wwwroot
#---------------------------------------------------------------------------
# 虚拟用户的配置文件结束
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Pma 认证模板配置 /etc/pam.d/vsftpd
#---------------------------------------------------------------------------
#%PAM-1.0
#auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required /lib/security/pam_unix.so shadow nullok
#auth required /lib/security/pam_shells.so
#account required /lib/security/pam_unix.so
#session required /lib/security/pam_unix.so
auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpdpasswd host=127.0.0.1 db=vsftpd table=user usercolumn=user passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpdpasswd host=127.0.0.1 db=vsftpd table=user usercolumn=user passedcolumn=passwd crypt=0
#---------------------------------------------------------------------------
# Pma 认证模板配置 结束
# crypt=0, 为不加密, crypt=1, 用Msyql自带的加密函数加密
#---------------------------------------------------------------------------
#
# 如果开启了 SELinux 的话.
# 需要设置一下. 不然会出错 530 错误
#
setsebool -P ftpd_disable_trans 1
chcon -t textrel_shlib_t /lib/security/pam_mysql.so
# 登录mysql
mysql -uroot -p
#---------------------------------------------------------------------------
# 下面SQL 是在 Mysql 中创建数据库等...
#---------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- 创建数据库 `vsftpd`
--
CREATE DATABASE `vsftpd` ;
-------------------------------------------------------------------------------
-- 创建表 `user`
-- 包含两个字段: `user`(主键,唯一值), `passwd`,
--
use vsftpd;
CREATE TABLE IF NOT EXISTS `user`
(
`user` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`passwd` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-------------------------------------------------------------------------------
-- 插入新记录
-- 用户名: test, 密码: test
--
INSERT INTO `vsftpd`.`user`
(`user` ,`passwd`)
VALUES
('test', 'test');
-------------------------------------------------------------------------------
-- 创建Mysql数据库用户
-- vsftpd, 登录IP: 127.0.0.1, 密码:vsftpdpasswd
--
CREATE USER 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'vsftpdpasswd';
GRANT USAGE ON * . * TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'vsftpdpasswd' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT ALL PRIVILEGES ON `vsftpd` . * TO 'vsftpd'@'127.0.0.1';
-------------------------------------------------------------------------------
#---------------------------------------------------------------------------
# SQL 结束 quit
#---------------------------------------------------------------------------
#同时,需要把 apache 用户的主目录设置为 /web/wwwroot
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install cronolog 用来分割 Apache 日志
#==============================================================================
cd ${softpath}/
tar zxvf ${softpath}/cronolog-1.6.2.tar.gz
cd ${softpath}/cronolog-1.6.2
./configure
make
make install
#==============================================================================
#==============================================================================
#==============================================================================
#=== Install Xcache
#==============================================================================
cd ${softpath}/
tar zxvf ${softpath}/xcache-1.3.0.tar.gz
cd ${softpath}/xcache-1.3.0
/web/php/bin/phpize
./configure --with-php-config=/web/php/bin/php-config --enable-xcache --enable-xcache-optimizer
make
make test
make install
#/web/php/lib/php/extensions/no-debug-zts-20090626/
#编辑 php.ini
vim /web/php/lib/php.ini
#==============================================================================
#添加如下xcache配置信息
#---------------------------------------------------------------------------
[xcache-common]
zend_extension = /web/php/lib/php/extensions/no-debug-zts-20090626/xcache.so
[xcache.admin]
xcache.admin.user = "admin"
;密码是由md5计算出来的.
xcache.admin.pass = "21232f297a57a5a743894a0e4a801fc3"
[xcache]
;缓存大小,视服务内存而定
xcache.size = 256M
xcache.shm_scheme = "mmap"
; 建议设置为 cpu 数 (cat /proc/cpuinfo |grep -c processor)
xcache.count = 2
xcache.slots = 8K
; 缓存项目的 ttl(time to live), 0=永久
xcache.ttl = 86400
; 扫描过期项目的时间间隔, 0=不扫描, 其他值以秒为单位
xcache.gc_interval = 3600
xcache.mmap_path = "/tmp/xcache"
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = On
xcache.coveragedump_directory = ""
[xcache.var]
; 同上, 只是针对变量缓存设置
xcache.var_size = 200M
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 1800
#==============================================================================
# 如果开启了 SELinux 的话.
#
chcon -t textrel_shlib_t /web/php/lib/php/extensions/no-debug-zts-20090626/xcache.so
# 拷贝xcache管理工具
cp -r ${softpath}/xcache-1.3.0/admin/ /web/wwwroot/xcachecp
# 重启 apache 服务
service httpd restart
#==============================================================================
#
# OK, 剩下来的只是对Apache/Mysql等配置的调整和优化了.
#
#==============================================================================
[查看全文]
该贴已经同步到 nekor的微博
一、对于一个站长而言不仅要做好网站内容外,还需要对网站做优化,如果速度访问很慢的,没有人下次再访问你的站点,目前国内使用php的网站不计其数,这里用我的博客为例:http://blog.mgcrazy.com 以加速我的wordpress站点。
二、安装apc配置:首先下载好需要的安装包:前提是你的网站已经运行于php,也就是有php安装环境。
cd /usr/src && tar xzf APC-3.1.7.tgz &&cd APC-3.1.7 && /usr/local/php5/bin/phpize && ./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php5/bin/php-config &&make&& make install
安装完后会生成一个apc.so在/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/里面。【目前APC最新版本为3.1.7】
三、安装memcached,使fastcGI支持memcached
首先安装libevent,
cd /usr/src && tar xzf libevent-1.4.12-stable.tar.gz && cd libevent-1.4.12-stable && ./configure –prefix=/usr/local/libevent &&make && make install
然后安装memcached
tar xzf memcache-2.2.5.tar.gz && cd memcache-2.2.5 && /usr/local/php5/bin/phpize && ./configure –prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --with-php-config=/usr/local/php5/bin/php-config &&make &&make install
安装完后,会在/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/里生成一个memcache.so 这个模块:
四、接下来修改php.ini
默认的php.ini在/usr/local/php5/lib/php.ini 你也可以指定:
extension_dir = "./"
修改为
extension_dir="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626"
把下面这些添加到最后:
extension = apc.so
extension=memcache.so
[APC]
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64M
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl = 3600
apc.cache_by_default = on
要使wordpress使用memcache,还得下载wordpress-cache缓存配置文件,我这里提供参考下载:
http://blog.mgcrazy.com/download/object-cache.php.tar.gz
下载文件解压放在网站 */wp-content/目录下即可,然后修改里面默认ip 127.0.0.1 为你的memcache服务器的ip和端口。
然后重启相关服务即可!查看memcache加速是否生效,可以用 netstat -an |grep ESTABLISHED 查看转发的memcache端口,最直观的就是访问一下你的网站就知道了!默认是11211端口。
[查看全文]
该贴已经同步到 nekor的微博
原帖地址:瘾科技中国http://cn.engadget.com/2011/06/22/bluestacks-android-windows-7/
在使用计算机时,许多人脑海中总会不禁浮现一种想法:为什么切换操作系统如此麻烦?不过这种念头总是一闪而逝,因为以个人计算机的层级来说,不能互通的应用程序是相当稀有的。但是到了行动通讯年代后,我们可以发现越来越多应用程序如雨后春笋般冒出,甚至是只有在特定平台上才有的服务,对于惯用特定应用程序的用户而言,能不能在熟悉的平台上使用就成为相当重要的关键。
「如果说过去十年是PC的时代,那么未来十年就应该称为手机的时代,」BlueStacksSystem资深副总裁ApuKumar如此认为,「要拓展现代使用者的观念与想法,就需要提供一套能够快速、有效且稳定的平台交换方式,对他们来说才是最重要的。」现在有许多应用软件是只有在Android或是iOS上出现,而也有越来越多人习惯使用手机更胜于使用计算机,如此要有什么方式可以让他们不管是透过手机或利用计算机都可以使用同一份应用程序呢?
目前唯一也是最佳的解决方案就是利用软件虚拟化的方式,让Android平台能够在计算机上执行。虚拟化是一切的基础由于操作系统的特性,过去如果要切换操作系统,都必须要关机重新让操作系统侦测并挑选最适当的驱动程序及软件,才能够让第二套操作系统正常启动,这个过程不但麻烦也耗费相当多时间。
但是在目前分秒必争的状态下,如果每次切换都重新启动,对使用者而言是相当不便且没有效益的方式,因此BlueStacks在研发时,为了解决平台、多重硬件、不同驱动程序与韧体的各种可能状况,便是以虚拟化方案为主,利用Windows为主要平
台,藉由Windows丰富且完整的驱动程序库建构良好的多重操作系统架构。
「过去的多重系统都必须要重新启动才能切换,现在利用虚拟化方式后最大的效益即是不需要重新启动,」ApuKumar表示,「之所以采用Windows做为主平台,除了因为Windows是目前市占率最高的PC端操作系统外,其拥有相当完整的驱动程序与韧体数据,也是让虚拟化更加快速与容易的关键。」
快速切换,立即启动让效益加倍BlueStacks的产品拥有快速切换的优势,就在现场操作的过程中,我们可以看到切换到Andorid系统就跟点选应用程序一样,不但启动相当快速,同时也可以侦测屏幕分辨率,自动切换到最佳画面尺寸。
「有许多优异的应用程序只有在Android上才能使用,但是手机画面过小是影响操作的关键,」ApuKumar如此认为,「藉由BlueStacks的自动化侦测与变更尺寸的技术,可让Android上特有的应用程序,得以在大尺寸屏幕上使用,并且不会破坏原有
的美观与操作感,成为未来多系统应用的最佳范例。」
个人观点:其实系统的统一运用是大流,目前各个小流迟早都要合流的!只是时间的问题,希望世界末日别来的太快吧!
[查看全文]
#RadiationTeam IT#在使用计算机时,许多人脑海中总会不禁浮现一种想法:为什么切换操作系统如此麻烦?不过这种念头总是一闪而逝,因为以个人计算机的层级来说,不能互通的应用程序是相当稀有的。但是到了行动通讯年代后,我们可以发现越来越多应用程序如雨后春笋般冒出,甚至是只有在特定平台上才有的服务,对于惯用特定应用程序的用户而言,能不能在熟悉的平台上使用就成为相当重要的关键。
「如果说过去十年是PC的时代,那么未来十年就应该称为手机的时代,」BlueStacksSystem资深副总裁ApuKumar如此认为,「要拓展现代使用者的观念与想法,就需要提供一套能够快速、有效且稳定的平台交换方式,对他们来说才是最重要的。」现在有许多应用软件是只有在Android或是iOS上出现,而也有越来越多人习惯使用手机更胜于使用计算机,如此要有什么方式可以让他们不管是透过手机或利用计算机都可以使用同一份应用程序呢?
目前唯一也是最佳的解决方案就是利用软件虚拟化的方式,让Android平台能够在计算机上执行。虚拟化是一切的基础由于操作系统的特性,过去如果要切换操作系统,都必须要关机重新让操作系统侦测并挑选最适当的驱动程序及软件,才能够让第二套操作系统正常启动,这个过程不但麻烦也耗费相当多时间。
但是在目前分秒必争的状态下,如果每次切换都重新启动,对使用者而言是相当不便且没有效益的方式,因此BlueStacks在研发时,为了解决平台、多重硬件、不同驱动程序与韧体的各种可能状况,便是以虚拟化方案为主,利用Windows为主要平
台,藉由Windows丰富且完整的驱动程序库建构良好的多重操作系统架构。
「过去的多重系统都必须要重新启动才能切换,现在利用虚拟化方式后最大的效益即是不需要重新启动,」ApuKumar表示,「之所以采用Windows做为主平台,除了因为Windows是目前市占率最高的PC端操作系统外,其拥有相当完整的驱动程序与韧体数据,也是让虚拟化更加快速与容易的关键。」
快速切换,立即启动让效益加倍BlueStacks的产品拥有快速切换的优势,就在现场操作的过程中,我们可以看到切换到Andorid系统就跟点选应用程序一样,不但启动相当快速,同时也可以侦测屏幕分辨率,自动切换到最佳画面尺寸。
「有许多优异的应用程序只有在Android上才能使用,但是手机画面过小是影响操作的关键,」ApuKumar如此认为,「藉由BlueStacks的自动化侦测与变更尺寸的技术,可让Android上特有的应用程序,得以在大尺寸屏幕上使用,并且不会破坏原有
的美观与操作感,成为未来多系统应用的最佳范例。」
如果今天仅需要执行特定应用程序,我们也不需要切换到Android平台才执行该应用程序。我们可以将该应用程序设定为快速启动,简单地点选之后就可以像是执行Windows上的应用程序,直接进入Android平台并启动,整个过程不会超过3秒钟。目前的Alpha版本仅支持以Windows操作系统为主平台,但在第三季时将会推出以Android为主平台的新版本,让BlueStacks的可用性与拓展性更高,让Android系统也可以执行Windows应用程序。
[查看全文]
该贴已经同步到 RadiationTeam的微博
2009年10月份,硅谷创业公司Tilera发布了全球第一款100核心处理器“TILE-Gx100”,让整个业界为之震动。虽然后续研发和上市进程不是很顺利,但是TILEra一直在努力将其众核心产品推向更广泛的领域,今天就发布了针对云数据中心优化的“TILE-Gx 3000”系列和针对网络应用优化的“TILE-Gx 8000”系列,都有最多100个核心。Tilera宣称,TILE-Gx 3000系列的每瓦特性能(能耗比)是Intel Sandy Bridge家族的十倍(当年也说是Westmere的十倍),能将系统搭建成本减少大约50%。TILE-Gx 3000系列号称能够满足云数据中心服务器应用对高性能和低功耗的需求,适用范围包括需要高吞吐量处理能力和低延迟的Web应用,NoSQL、内存数据库 等需要高内存吞吐量和存储能力的数据中心应用,Hadoop等需要高磁盘吞吐量和数据处理能力的数据挖掘,以及视频转码等等,支持最新的Linux 2.6.36系统内核和各种工具链、编程语言(ANSI/C/C++/Java/PHP/Perl/Python)、编程框架、管理协议。TILE-Gx 3000系列基于64-bit VLIW超长指令字架构并支持64位指令集和40位物理寻址空间,每个通用目的处理核心都有自己的32KB一级指令缓存、32KB一级数据缓存、256KB二级缓存切换开关,共享三级缓存,并集成了智能NIC硬件,用于网络流量的预处理、负载均衡、缓冲管理。TILE-Gx 3000系列仍然采用台积电40nm工艺制造,37.5×37.5mm BGA封装,主频为1.0GHz或者1.5GHz,按照核心数量的不同可以分为三个版本:Gx3100:100核心,32MB三级缓存,集成四通道288-bit DDR3-2133内存控制器(两个双通道),最大容量支持1TB,可提供三个PCI-E 2.0 x8、两个千兆和两个万兆以太网端口、三个USB 2.0端口,典型功耗48W,也就是说平均每个核心不到0.5W,而且比早期版本有所降低。Gx3064:64核心,三级缓存减少到20MB,PCI-E端口改为两个x8和一个x4,内存控制器和以太网控制器基本同上,典型功耗降至35W。Gx3036:36核心,三级缓存减少为12MB,内存降至双通道DDR3-1866,PCI-E控制器提供一个x8、一个x4或者三个x4端口,USB 2.0接口也减为两个,但是以太网配置不变,典型功耗20W。TILE-Gx 3000系列在架构和规格方面基本差不多,只是增加了16核心版本(5MB三级缓存/双通道DDR3-1600内存),主频也多了1.2GHz版本,更适合大中小型路由器、服务模块、防火墙、VPN、入侵检测与预防、数据泄露预防、WAN优化器、服务器负载均衡器、网络监控等等方面。TILE-Gx 3000的36核心版本将于2011年7月份试产,64核心、100核心版本则要等到2012年第一季度。文/驱动之家[查看全文]
该贴已经同步到 戴龙猫的微博
如果你一直关注Web,你可能认为Flash播放器和Silverlight已经进入生命倒计时,而HTML 5则正在迅速改变Web上的一切。然而,实际上许多正在评价HTML 5的人并不完全理解当前的领域。你知道HTML 5标准的编者Lan Hickson曾说过“在2022年以前HTML 5不会被在所有浏览器上完全实现吗?”你知道iPhone开发者现在已经可以完全使用HTML 5?你知道HTML 5中的所有功能都来自于Web插件?你知道谷歌在其产品Wave中使用了一个Web插件吗?
我们需要对HTML 5以及它对Web的意义进行一次开放而坦诚的探讨。不幸的是,你不会从狂热的任何一方获得真相,而是需要我们检查所有的事实证据,然后得出我们自己的结论。我已经花费了大量时间来分析这个事实,在这个过程中我得出了几个观点。
现状
在经过许多专注开发者的努力工作后,HTML 5已经基本准备就绪。这个过程从10年前已经开始,到今天为止经历了多次反复。今天,HTML 5已经在许多平台/浏览器上准备就绪。但是,并非所有浏览器实现了这个标准的全部功能,而且某些浏览器甚至还未宣布何时将实现完全支持HTML 5。事实上,iPhone操作系统3.0是目前唯一完全支持HTML 5的稳定版操作系统。对开发者来说这意味着,对多数开发者来说,HTML 5依然是很遥远的事情。
当去年9月看到Jeff Croft的“2022年”说法的时候我非常震惊。它反映出了许多开发者对Web标准整体的失望。我没有与Jeff讨论过这个问题,我一直是他的研究成果的粉丝。在获悉实现HTML 5完全支持的这个残酷最后时限时,Jeff表示,“HTML 5是在下周或下个月或未来15年后推出,这并不重要。对我们这些在这个行业从事实际工作的人来说,重要的是人们真正使用的浏览器支持哪些规范和技术。”
为客户提供解决方案的开发者并不在乎理论,他们关心的是现实。按照这个说法,如果一个解决方案的目标客户只有全部客户的10%,它就不算一个成功的解决方案;如果它只能被90%客户使用,同样也不算一个好的解决方案。客户希望网站或应用程序能够适合目标客户中的每一名成员,而且是现在就能满足。这就是我的第一个观点:
观点1:
至少在2014年之前,开发商将无法在为客户提供的解决方案中使用HTML 5(除非他们是在一个如上所述的特定平台上)。至于在解决方案中使用HTML 5的全部功能,则将会更晚。
开发者可以考虑创建同时利用HTML 5和当前的HTML/JS模式的解决方案。不过,这意味着开发商将不得不创建一个单一解决方案:
1、浏览器能自动探测并确定用户具备使用HTML5的能力;
2、一个针对目前或更老版本浏览器的全功能HTML 4.1/XHTML 1应用程序:
(1)多个支持IE6、IE7、Firefox 3和Safari 3的CSS文件;
(2)兼容上面列出的所有浏览器的JavaScript
3、全面支持HTML 5的应用(其中将与HTML 4.1应用程序几乎没有重叠的代码)
对那些狂热于应用CSS和JavaScript的开发者来说,这只不过又增加了一层复杂性。事实上, 对于传统的开发者来说,直到90%以上的网络使用支持HTML5的浏览器的时候,HTML5才会进入他们的选择。请记住,尽管IE6早在8年前(2001年)就已经推出了,但是大多数网站还在检查IE6的用户。
插件的真相
本次讨论的核心是我们今天使用的网络插件。最近许多文章声称HTML5将逐个消灭传统网络插件。实际上,这与事实相差太远。在我直接谈到这个问题之前,我们需要仔细看看什么是网络插件。
当列出网络插件时,大多数人都会意识到,常见的包括Adobe Flash Player、Microsoft Silverlight和JavaFX等。然而实际上它还包括谷歌Gears、谷歌本地客户端(Google Native Client)、谷歌地球插件(Google Earth plug-in),以及谷歌音频/视频聊天插件等网络插件。此外,除了Google的插件,还有不计其数的的其他厂商的插件。由于这些插件是“封闭源代码”项目的事实,它们经常遭到诟病。事实的真相是,插件有一个快速开发周期来引导创新。我不是说在开源项目中它不可能发生,但是我需要为真正客户开发最先进的解决方案,我不能期待真正创新的网络标准,更多是已经被实施的网络标准:
观点2:
网络标准不会永远创新,它们只会执行那些已经成功包含的插件。这源于这样一个事实:标准化进程是由微软、谷歌和Mozilla等公司所主导的,除非这些公司已经在某个产品开发方面占有一席之地,否则他们不会投资于在这方面建立某项标准。术语标准化意味着你把已经存在的东西拿过来,然后为实施它建立一个统一的过程。
此外,许多开发商不承认插件在HTML 5标准中的作用。这使我产生了另外一个观点:
观点3:
HTML 5中的每一个新功能之所以被增加,是因为开发商需要一个已经被以插件形式实现的功能。这包括离线缓存(Google Geas) 、画布(Flash播放器)、媒体播放(Flash播放器等)、拖放(Flash播放器等)等等……
处于这场争论最前线的是谷歌Wave,最近谷歌在其IO大会上宣布了这个产品。这个富互联网应用已被称为Web标准作用的一个伟大例子。然而,没有人指出它需要一个插件才能运行这个事实。的确,证明HTML5能够做什么的实例,需要谷歌Gears展示它的部分功能。事实上,它仅是一小部分功能,但是它揭示了一个重要的观点。
观点4:
谷歌可以选择通过标准化进程,来尝试在推出Wave之前添加拖放功能,但是他们认为如果没有这一功能,用户体验将会变糟。于是他们选择使用插件来提供最佳的整体用户体验。
事实上,插件可以在一年之内就“升级网络”。在现实生活中,一个想法可以通过生产、质量评价和发布给用户,然后在16个月内被推广到85%以上的的网络。但是Web标准难以做到这一点:
观点5:
由于涉及到大企业和实体,任何重大的改变(需要浏览器发行商以统一的方式改变浏览器的功能),从最初的想法到实际执行(在所有浏览器)至少需要十年的时间 。另外加上使用旧版本浏览器的用户升级的时间,该过程还需要多花5年多时间。
如果HTML5被当前所有主要的浏览器完全支持,并且如果所有这些用户使用了这些升级后的浏览器,Web插件将会遭受到来自HTML5的沉重打击(但是即便如此,它也不会完全消灭它们)。在现实生活中,HTML 5甚至无力与Web插件竞争,因为它是目前唯一可行的固定平台解决方案(像iPhone )。
质量与标准
这一话题让我感到愤怒的主要一点是,许多开发商在追求Web标准时却忽视了质量。这是视频编解码器争论的核心所在(围绕HTML5也有很多这类问题的例子) 。开发商选择在相对开放的基础上去评估解决方案,而不是注重其实际的功能。过去的五年告诉了我们什么?我们最终将会进入一个用户体验至上的时代,但是现在一些开发商为了开放性而牺牲了质量。这是我个人最强烈的意见:
观点6:许多开源解决方案处于各自领域的顶尖水平(Apache、MySQL、Linux、Flex Framework等等)。劣质的解决方案(如Ogg编解码器)不能只是因为他们是“开放”的就应该容忍。如果您想要所有的浏览器执行一个视频编解码器,那就做一个优于H.264的。在使用“开放”解决方案时,开发商绝不应牺牲用户体验的热情。
当一个潜在客户评判我的工作(或我公司的工作)时,他们不会关心网络标准,他们关心的将是工作的质量和功能。此外,当用户使用我的应用软件时,他们不会在意“开放性” ,而只在意整体功能和用户体验。作为一名开发人员和公司的雇员,我不能推荐劣质的解决方案。我必须基于能保持竞争力的功能来评价所有的解决方案。这意味着,如果HTML5将来能够提供更好的功能,我会认为它是一个好的解决方案,但是,我不会仅仅因为它是开放的就选择它。HTML5将与其他解决方案在平等的基础上参与竞争。
未来
我希望这些意见能够全面阐明这个问题。问题的关键是:特定平台的开发人员现在就可以享受HTML5。现在他们就应该拥抱它,开始学习HTML5并用HTML5工作。传统的开发人员将必须等待大约5年时间才能真正选择HTML5。到那个时候,我们可能已经拥有Flash Player 13、Silverlight 5和JavaFX 3 。谁知道这些版本将包括什么呢?但是,我们可以猜测到,它们包含的功能很可能将包括在未来版本的HTML中。
[查看全文]
WooRank 是一款免费的网络SEO分析工具,界面很简单,只需要输入你的网址,WooRank就会为你进行SEO分析,并给出优化建议。WooRank得优势在于,分析全面,速度快,且免费。它会针对你的访客、内容、SEO、域名等来进行综合评分,并提供较详细的建议。[查看全文]




