2013年9月3日星期二

Windows下 Apache 搭建和配置Subversion服务器

一、软件下载


  到 http://www.collab.net/downloads/subversion 下载相关软件。



 

二、安装软件


    Subversion 1.8.3 版本的安装包自带了Apache 2.2.8,所以无需额外安装Apache服务器。一路默认安装,如果需要修改仓库根目录或者Apache2.2.8端口可以自行修改为自己的信息,Apache默认端口为80,Subversion 默认仓库存储路径为 C:svn_repository 可自由设定仓库存储路径(D:\svn_repository)。

    安装的过程中会自动将 Subversion 和 Apache 注册成服务,安装完成后重启一下电脑,运行services.msc查看服务,可以看到 “Apache2.2”和“Subversion Server”两个服务已经自动启动,如果不想让他们自动启动,可以修改为手动启动。

三、配置


1、修改 Apache 的配置文件,在 conf/httpd.conf 中注册 Subversion 浏览库和权限控制模块:

LoadModule dav_svn_module     modules/mod_dav_svn.so

2、打开 mod_dav.so 和 mod_dav_fs.so 模块,去掉开头的注释关键字“#”

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

3、在 conf/httpd.conf 文件末尾添加以下代码

 <Location /svn>
   DAV svn  #告诉 Apache 哪个模块负责服务像那样的URL
   SVNParentPath D:\svn_repository   #配置库路径
   AuthType Basic #启用基本的验证,用户名/密码验证
   AuthName "svn repos" #当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
   AuthUserFile D:\svn_repository\.htpasswd  #身份验证文件的路径
   Require valid-user  #禁止匿名访问
   SVNListParentPath on #允许访问/svn目录

</Location>

4、用 apache htpasswd 建立用户密码文件,并添加用户密码到密码文件中。打开命令行提示符,进入到 Apache 的 bin 目录中,

htpasswd -c D:\svn_repository\.htpasswd harry

#创建一个新的认证文件并在其中添加一条用户 harry 的记录,密码将被提示输入。

以后想添加用户或者修改密码,只需键入以下命令

htpasswd D:\svn_repository\.htpasswd harry

5、重启 Apache 服务器,使用 http://svn服务器IP/svn/svndemo 连接服务器

2013年7月6日星期六

Windows 7 下安装 Nginx 和 PHP

       Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,相较于Apache、lighttpd具有占有内存少,并发能力强,稳定性高等优势。

       由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。

        目前中国大陆使用 Nginx 网站用户有:新浪、网易、 腾讯,另外知名的微网志 Plurk 也使用 Nginx。

安装 Nginx

        点击 这里 下载 Nginx(这里以 nginx 1.5.2 为例)。下载完成后,只需解压即可,勿需安装。打开 DOS,切换到该目录下,运行以下语句即可

start nginx   #启动 Nginx


      在浏览器输入:http://localhost/ ,出现欢迎页面,说明以成功运行。也可运行命令行来查看 Nginx 进程。

tasklist /fi "imagename eq nginx.exe"

   
Nginx 基本命令

nginx -s stop #快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit #平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload #因改变了Nginx相关配置,需要重新加载配置而重载。 
nginx -s reopen   #重新打开日志文件。  


运行 PHP


首先在 CMD 切换到 PHP(这里以 php5.3.8 为例) 的根目录下,启动 PHP FastCgi ,输入以下命令

php-cgi.exe -b 127.0.0.1:9000 -c php.ini

再打开另一个 DOS 窗口,输入命令:

netstat -a    

查询到以下信息,说明 php-cgi 启动成功。

TCP    127.0.0.1:9000         3dns-2:0               LISTENING



配置 Nginx 支持 PHP 

打开 Nginx 的配置文件 conf/nginx.conf ,找到以下源码

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}


修改如下:

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


注意上面的代码  D:/nginx-1.5.2/html  是你想运行 php 的目录。然后在 CMD 运行以下命令:

nginx -s reload

这样 Nginx  就能运行 PHP 了。


安装 PHP 开发环境的文章: 一键安装PHP开发环境





Windows 平台下一键安装驱动的工具

        今天用 Windows 7 的正版系统碟重装系统后才发现硬件的驱动要自己去安装。但是丫的现在网卡都没驱动,网都上不了。

        本来打算在同学那里下载个网卡驱动先装上,解决上网问题就好办了。但是他给我一个快捷安装驱动的工具——驱动精灵。

        驱动精灵是由驱动之家研发的一款集驱动自动升级、驱动备份、驱动还原、驱动卸载、硬件检测等多功能于一身的专业驱动软件。您可以彻底扔掉驱动光盘,把驱动的下载、安装、升级、备份全部交给驱动精灵来搞定!驱动精灵通过了Windows7(Win7)兼容认证,支持包含Windows 2000、XP、Vista、7、8在内的所有微软32/64位操作系统。

        原来驱动精灵扩展版已经内置了多种网卡的驱动,只要一安装,就帮你安装了网卡的驱动,再去检测还没安装的硬件驱动,再通过联网下载,最后安装就搞定了。确实挺方便的。

2013年6月22日星期六

大文件上传解决方案

    传统的HTML方式已经难已满足超大文件的上传。别说是100MB,50MB对服务器来说都是非常大的,服务不仅要专门开一个链接等待这个文件上传完毕,还要分配同等大小的内存来保存这个文件对服务器来讲压力相当的大。

    在实际网络环境中一般10MB左右的文件都需要借助于控件来实现。一方面是因为国内的网络环境不太稳定,另一方面是从服务器的负载方面考虑。

    像QQ邮箱中的超大附件上传功能,115网盘中的超大附件上传控件,华为网盘(DBank),金山快盘他们都是使用控件来实现超大文件上传功能的。

    他们通过控件将一个大文件,比如1G划分成许多的小块,每一小块大约是128KB,然后循环上传,直到上传完。

    服务器端每接受一小块,相当于接受到一个单独的文件,会直接写入硬盘里。最后,把接受的所有文件给组合起来。

    这样做的优点就是减轻了服务端的压力,提高了服务端的负载能力,使得服务端能够处理的用户请求数多了。

jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传、取消、删除和断点续传,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。

2013年6月13日星期四

多台服务器实现Session的共享

    我们知道,Session是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。
    访问网站的来客会被分配一个唯一的标识符,即所谓的会话 ID。它要么存放在客户端的 cookie,要么经由 URL 传递。
    Session 的存储方式默认是以文件的形式存放在本地的一个硬盘目录中,所以当Session比较多时,磁盘读取文件会比较慢。还有一点就是对于大站点,它无法实现多台服务器会话的共享。
    一个解决方案是用数据库来存取 Session ,就能在不同服务器之间共享 session 信息了。
    实现代码下载
    引擎 MyISAM 最好替换成 MEMORY 引擎,因为 MEMORY 采用内存表,所有数据存储在内存,操作速度快,对于 Session 这种形式的数据正好适用。
    在大流量的网站中,session 入库存在效率不高、占据数据库 connection 资源等问题。针对这种情况,可以使用 Memcached、Redis 等 Key-Value 数据存储方案实现高并发、大流量的 Session 存储。

2013年5月30日星期四

Cookie 跨域与P3P协议

关于Cookie跨域一个比较形象的例子就是Google Adsense,Google 可以在你的域名设置Cookie,但是你无法访问到Google 设置的Cookie,它只供 Google 访问。

一个简单例子:
步骤1:编辑 hosts 文件,加入测试域名

127.0.0.1    www.atest.com
127.0.0.1    www.btest.com


步骤2:文档根目录下,新建 a.php 。内容如下:

<iframe src="http://www.btest.com/b.php"></iframe>

步骤3:文档根目录下,新建 b.php 。内容如下:


<?php
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
$time = time();
setcookie('p3p0',$time,$time+3600,'/','.btest.com');
?>

步骤4:文档根目录下,新建 look.php 。内容如下:

<?php
var_dump($_COOKIE);
?>

在浏览器输入 http://www.atest.com/a.php 。然后访问:http://www.btest.com/look.php 可见 Cookie 已经生效。