Category Archives: Apache
Web-Server 中 PHP 的两种工作方式
部分内容参考自这里, 这里 在项目生产环境的 Web-Server 中 PHP.exe 通常以两种工作方式工作, 一种是 Apache 中的模块化方式, 另一种是在 Nginx 中的 FastCGI 方式. 除此之外, PHP.exe 还有一种古老的运行方式: CGI 方式, 这种方式基本上已经被淘汰, 我们可以通过 CGI 方式来很好的理解前两种方式. CGI 方式是: #当 Web-Server 启动时: 1, Web-Server 只初始化自身. #web 请求处理过程是: 1, 用户(浏览器)发起一个 *.php 文件的请求给 Web-Server 2, Web-Server 调用 php.exe 3, php.exe 完成一系列的初始化动作(如: 解析 php.ini , 载入全部扩展, ...) 4, php.exe 初始化完成, 解释 [...]
开启SVN-Server上的密码认证功能
之前介绍的《Windows 下安装 SVN-Server》, 在安装好 SVN-Server 后可以不需要用户名和密码直接对版本库进行检出/更新/提交等操作, 这样在安全性方面很差, 现在将介绍怎么样在基于 http 协议的 SVN-Server 上添加密码认证功能. 首先假设现在已经存在一个版本库game, 它在 svn_server 上存放的路径是: E:\svn_server\game 客户端 checkout 的地址是: http://localhost/svn/game 我们需要给这个版本库加上用户名密码认证功能. 1, 首先在 E:\svn_server\game\conf\ 目录中新建一个名为 passwd.win 的空文件, 它将记录我们要认证的用户名和密码. 2, 假设我们 Apache 的安装目录是 D:\Program Files\EasyPHP-5.3.2i\apache\ , 我们输入命令生成一个用户名为 admin , 密码是 123456 的帐号 cmd D: cd D:\Program Files\EasyPHP-5.3.2i\apache\bin htpasswd -bm E:\svn_server\game\conf\passwd.win admin 123456 3, 修改 E:\svn_server\game\conf\authz [...]
Windows 下安装 SVN-Server
1, 下载 svn 服务器端程序 http://ncu.dl.sourceforge.net/project/win32svn/1.6.16/svn-win32-1.6.16.zip 2, 解压, 将 svn-win32-1.6.16 目录复制到 D:\Program Files\svn-win32-1.6.16 3, 复制文件 //复制下面两个文件 D:\Program Files\svn-win32-1.6.16\bin\mod_authz_svn.so D:\Program Files\svn-win32-1.6.16\bin\mod_dav_svn.so //粘贴到 Apache 扩展目录中去 D:\Program Files\EasyPHP-5.3.2i\apache\modules 4, 将 D:\Program Files\svn-win32-1.6.16\bin 添加到系统环境变量 Path 中去 5, 编辑 Apache 配置文件 httpd.conf //查找下面两行,去掉前面的#号 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so //再在后面添加两行 LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 6, 重启电脑 7, 建立 SVN-Server [...]
常用Apache设置
● Listen 服务器监听IP地址和端口。 Listen参数是指Apache服务器在指定的IP地址和端口上进行监听;默认情况下Apache会在所有IP地址上监听。Listen是一个必须设置的指令。如果在配置文件中找不到这个指令,服务器将无法启动。 Listen参数还可以指定服务器在哪个端口或地址和端口的组合上进行监听请求。如果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将按照指定地址和指定的端口进行监听。 使用多个Listen参数可以指定多个不同的监听端口和/或地址端口组合。 例如,想要服务器接受80和8080端口上的请求,可以这样设置: Listen 80 Listen 8080 为了让服务器在两个确定的地址端口组合上接受请求,可以这样设置: Listen 192.64.182.1:80 Listen 192.64.182.5:8080 注意:多个Listen指令指定了同一个地址和端口的组合后,会导致"Address already in use"错误。 ● ServerRoot 服务器的安装基础目录。 该参数设置了服务器所在的目录。一般来说它将包含conf/和logs/子目录。其它配置文件的相对路径都基于此目录 (比如Include或LoadModule)。 例如: ServerRoot /etc/httpd ● DocumentRoot 组成网络上可见的主文档树的根目录。 此参数设置了httpd服务的目录。在没有配置类似Alias这种参数的情况下,服务器会将请求中的URL附加到DocumentRoot后面以构成指向文档的路径。 比如说: DocumentRoot /etc/httpd/www/web 于是对http://www.ccb.com.cn/index.html的访问就会指向/etc/httpd/www/web/index.html。如果参数中不是绝对路径,则被假定为是相对于ServerRoot的路径。 注意:指定DocumentRoot时不应包括最后的"/"。 ● Directory 可以封装一组参数,使之仅对文件空间中的某个目录及其子目录生效 <Directory directory-path> ... </Directory> <Directory>和</Directory>用于封装一组参数,使其对某个目录及其子目录生效。directory-path可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串,但是通配符都不能匹配"/"字符,例如:<Directory /*/public_html>是无法匹配/home/user/public_html 的,而<Directory /home/*/public_html>却能够正确匹配。 directory-path参数必须与被访问文件所在文件系统的路径保持一致。如果有多个非正则表达式,<Directory>配置段符合并包含某文档的目录(或其父目录),那么会以短目录优先的规则进行应用。<Directory />的默认访问权限为"Allow from All",这意味着Apache没有进行访问控制,通过设置Order,Deny,Allow,AllowOverride这个几个参数可以对访问进行控制。 下面简单介绍一下这4个参数的用法。 ▲ [...]
微博缩短网址的实现
原文在这里 随着类似Twitter的微型博客网站的出现,由于字符数的限制,网址缩短服务日渐增多。加上网址缩短服务提供商提供网址追踪等服务,这一业务日渐兴起。知名网址缩短服务商Bit.ly的主要业务便是为微博Twitter提供网址缩短服务。 比如sina微博的sinaurl.cn,腾讯微博的url.cn等。 实现原理很简单,主要是将用户提交的 url 地址转化成一个唯一的字串,这个字串就对应着真实的 url,怎么样实现这种转换呢? url 的转换摘自:http://www.cnblogs.com/sunli/archive/2010/03/25/1696183.html 数据库只有两个字段seq(自增长数字)和url(数字的url地址,建立索引)。 用户输入一个url地址,查询表是否包含此url,如果存在,则返回seq的数字, 如果不存在,则插入数据库,得到一个新增加的自增seq数字,为了缩短数字占用的字符数,我们可以把abc等字母的大小写用上。这样10个数字,26个小写字母,26个大小字母就组成了一个62进制了。比如数字10000000000(100亿)转换后就是aUKYOA,只有6位了,这样就能缩短很多的网址了。 <?php //十进制转到其他制 function dec2any( $num, $base=62, $index=false ) { if (! $base ) { $base = strlen( $index ); } else if (! $index ) { $index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,0 ,$base ); } $out = ""; for ( $t = floor( log10( [...]
让 Apache 支持 mod_python
mod_pytho 中文文档 http://man.chinaunix.net/develop/python/mod_python/mod_python.html 1, 下载 ModPython-3.3.1 (http://www.apache.org/dist/httpd/modpython/win/3.3.1/), 安装, 安装过程中会讯问 apache 安装目录. 2, 在apache的httpd.conf中加入下面一行: LoadModule python_module modules/mod_python.so 3, 再加入下面一段 Alias /py/ "d:/PythonCode/" <Directory "d:/PythonCode/"> AddHandler mod_python .py #PythonHandler mptest PythonHandler mod_python.publisher PythonDebug On </Directory> 4, 在 d:/PythonCode/ 目录下新建一名为 mptest.py 的测试文件,内容如下 from mod_python import apache def handler(req): req.content_type = "text/plain" req.write("Hello World!") return apache.OK 5, 通过 http://127.0.0.1/py/mptest.py [...]
设置 Apache & hosts 本地开发环境
设置本地 Apache 虚拟主机 & 本地 hosts 打造和外网虚拟空间一模一样本地开发环境. Apache 是全球而署最多的 web server 想全面了解它可以访问官方主页 http://www.apache.org/ Hosts文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,实现DNS的功能,它可以由计算机的用户进行控制。 Windows 中它的存放位置是: c:\windows\system32\drivers\etc\hosts Linux 中它的存放位置是: /etc/hosts 如果你有自己的网站, 但没有自己的本地开发环境, 你想新增一个新功能, 你的操作步骤可能是这样子的: 1, 在本地(本机)把新功能开发好 2, 然后用ftp上传到自己的外网虚拟主机网站目录下 3, 在外网虚拟机空间上测试功能是否正常 4, 如果正常,OK.完成 / 但如果有错, 执行以下步骤: 5, 再修改 6, 再上传 7, 再调试 8, ... <-- 不断循环(4/5/6/7)步骤, 直到功能能正常使用. 显然这样子是费神又费力的, 而且更大的弊端是访问你的网站的用户会有可能看到你调试时的错误信息(如果你的网站有注册用户, 在你调试时十分不凑巧的被他们访问到了你的新功能而引起数据库上错误, 那麻烦就大了) 显然打造本地开发环境是十分有必要的. 前期准备工作: 在本地安装好 Apache+php+mysql , [...]
理解PHP中Mysql的永久连接