显示标签为“apache”的博文。显示所有博文
显示标签为“apache”的博文。显示所有博文

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 连接服务器

2012年12月29日星期六

防止图片盗链

    所谓盗链是指服务提供商自己不提供服务的内容,而是通过技术手段直接在自己的网站上向最终用户提供其他服务商的服务内容,以骗取用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。像图片、视频等这些比较大的文件都有可能成为被盗的对象。一旦文件被盗,就会增加服务器的流量,影响网站的访问速度。虽然我们不能100%的保护这些文件不被别人盗用,但可以通过 HTTP Referer 进行限制。使用 Apache 可以很方便地进行设置。假设主机域名为 www.example.com,在文件 .htaccess 中的配置如下:
 
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} ! http://www.example.com [NC]
RewriteCond %{HTTP_REFERER} ! http://www.google.cn [NC]
RewriteCond %{HTTP_REFERER} ! http://www.baidu.com [NC]
RewriteRule .*\.(gif|jpg)$ http://www.example.com/default.jpg [R,NC,L]

    该配置说明说下:

  •     RewriteCond %{HTTP_REFERER} !^$ [NC]
    允许 HTTP_REFERER 为空时访问,即允许用户在浏览器地址栏中直接输入图片地址时显示图片。一般来说这个选项是可选的,建议这样设置。如果将 HTTP_REFERER 强制限制不能为空,那么当用户通过代理服务器访问时,可能会导致一些问题。

  •     RewriteCond %{HTTP_REFERER} ! http://www.example.com [NC]
    设置允许访问的 HTTP_REFERER 来源,包括自身站点,以及 Baidu、Google、Yahoo!等

  • RewriteRule .*\.(gif|jpg)$ http://www.example.com/default.jpg [R,NC,L]
    设置图片被盗链时用于替换的图片,如果有图片被盗链,显示的是 default.jpg。注意,默认图片所在的路径最好跟配置文件不在同一目录下,图片越小越好。如果不想设置替换图片,可以使用下面的语句:

RewriteRule .*\.(gif|jpg)$ - [F]

NC、R、L、F 标记解释

NC:不区分大小写
R: 强制重定向
L:立即停止重写操作
F:强制禁止URL

2012年9月9日星期日

一键安装PHP开发环境

    对于刚学习PHP的菜鸟来说,配置开发环境是一件挺纠结的事。

    今天就来介绍一款在Windows平台下集成了Apache、Mysql、PHP和phpmyadmin的集成开发环境——WampServer,它简单易用、界面友好,操作起来非常方便。你只要到官方网站下载就行了,然后双击安装。

      不仅如此,它还集成了 Xdebug,极大的方便了开发者的调试和跟踪。

      如果你想自己一步一步地安装开发环境,也是有益处的。提供一些安装的参考资源:

      下载 PHP: http://www.php.net/downloads.php
      下载 MySQL 数据库: http://www.mysql.com/downloads/
      下载 Apache Server: http://httpd.apache.org/download.cgi

      安装教程: http://www.blabla.cn/php/install_apache_php_index.html.html 
    
下一篇:Apache下建立虚拟站点

2012年5月26日星期六

Apache Rewrite 实现URL伪静态

一、简述    

    Rewirte主要的功能就是实现URL的跳转。之所以要把URL伪静态化,是因为有利于SEO(搜索引擎的优化),有利于搜索引擎的抓取,提交网站的排名。
    Apache Rewrite的实现有2种方式,一种是基于服务器级的(httpd.conf),另外一种是基于目录级的(.htaccess)。

二、配置

    无论基于哪种方式,要想实现URL重写,都必须开启Apache的mod_rewrite.so模块。
打开Apache目录下的配置文件 httpd.conf,找到下面这一行 

    #LoadModule rewrite_module modules/mod_rewrite.so 

把前面的#号去掉。

1.基于httpd.conf

     如果你设置了虚拟主机,可以按照下面的例子添加相应的 IfModule 片段,当然URL重写规则你要自己写。最后记得重启Apache。

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.hleclerc-PC.ingenidev
    DocumentRoot "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger"    
    ErrorLog "logs/blogger.com-error.log"
    CustomLog "logs/blogger.com-access.log" common
    ServerName blogger.com
<Directory "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order deny,allow
    allow from all
    
</Directory>
<IfModule mod_rewrite.c>

    RewriteEngine On
    # Blog
    RewriteRule ^/blog_([0-9]+)_home\.html$ /blog/index.php?blogid=$1 [L]
    RewriteRule ^/blog_([0-9]+)_list\.html$ /blog/blog.php?blogid=$1 [L]
    RewriteRule ^/blog_([0-9]+)_([0-9]+)_list\.html$ /blog/blog.php?blogid=$1&page=$2 [L]

    RewriteRule ^/blog_show_([0-9]+)\.html$ /blog/blog_show.php?id=$1 [L]


    RewriteRule ^/blog_([0-9]+)_photo\.html$ /blog/photo.php?blogid=$1 [L]
    RewriteRule ^/blog_([0-9]+)_([0-9]+)_photo\.html$ /blog/photo.php?blogid=$1&page=$2 [L]

    RewriteRule ^/blog_albums_([0-9]+)\.html$ /blog/photo_albums_show.php?id=$1 [L]

    RewriteRule ^/blog_p_([0-9]+)\.html$ /blog/photo_show.php?id=$1 [L]


    RewriteRule ^/blog_([0-9]+)_myfriends\.html$ /blog/myfriends.php?blogid=$1 [L]
    RewriteRule ^/blog_([0-9]+)_([0-9]+)_myfriends\.html$ /blog/myfriends.php?blogid=$1&page=$2 [L]

    RewriteRule ^/blog_([0-9]+)_messages\.html$ /blog/messages.php?blogid=$1 [L]
    RewriteRule ^/blog_([0-9]+)_([0-9]+)_messages\.html$ /blog/messages.php?blogid=$1&page=$2 [L]

    RewriteRule ^/blog_([0-9]+)_b_([0-9]+)\.html$ /blog/messages.php?blogid=$1 [L]
</IfModule>
</VirtualHost>

2.基于.htaccess

     (1)首先要在你网站的根目录下,建立一个 .htaccess 命名的文件。
     (2)确认你Apache的配置是否已经支持了 .htaccess 的重写


<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.hleclerc-PC.ingenidev
    DocumentRoot "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger"    
    ErrorLog "logs/ blogger.com-error.log"
    CustomLog "logs/ blogger.com-access.log" common
    ServerName  blogger.com
<Directory "D:/wamp/bin/apache/Apache2.2.17/htdocs/blogger">
    Options Indexes FollowSymLinks  #下面4行代码就是是否启用.htaccess
    AllowOverride all
    Order deny,allow
    allow from all
    
</Directory>
</VirtualHost>

     (3)最后记得重启Apache
     (4).htaccess 文件里面的内容跟 httpd.conf 文件里的内容稍微有点不同,以上面的代码为例子,主要就是每个 URL 前面都少了一个 /   。 .htaccess 方式有一个好处就是每次修改的 URL 规则如果要生效,不必重启 Apache。


    RewriteEngine On
    # Blog
    RewriteRule ^blog_([0-9]+)_home\.html$ blog/index.php?blogid=$1 [L]
    RewriteRule ^blog_([0-9]+)_list\.html$ blog/blog.php?blogid=$1 [L]
    RewriteRule ^blog_([0-9]+)_([0-9]+)_list\.html$ blog/blog.php?blogid=$1&page=$2 [L]

    RewriteRule ^blog_show_([0-9]+)\.html$ blog/blog_show.php?id=$1 [L]

三、有用的资源

    关于上面 Rewirte 的各种语法你可以参考下面的几个链接,都有详细的介绍,通俗易懂,这里不做讲解。

2012年1月8日星期日

Apache下建立虚拟站点

    我们平时做Web开发的时候,都是在Apache下新建一个站点来开发的。之所以这样做是为了使开发环境和正式环境尽可能的保持一致,减少发生错误的概率。
 
    今天,就来讲讲怎么在Apacha(以版本 2.2.21 为例)下建立一个新站点。在Apacha下新建一个站点不是什么难事。只需在 Apache 配置文件 httpd.conf 末尾加上下面这么一段代码就可以了。然后重启Apache

#默认虚拟主机,这一步非常重要,否则 localhost 将无法访问

<VirtualHost *:80>
 ServerName localhost
 DocumentRoot "D:/wamp/bin/apache/Apache2.2.17/htdocs/"
<Directory "D:/wamp/bin/apache/Apache2.2.17/htdocs/"> 
 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
 AllowOverride None 
 Order Deny,Allow 
 Allow from all 
</Directory>
</VirtualHost>




<VirtualHost *:80>


#设置你的email地址,当站点出现错误时,会显示一个有email地址的页面

ServerAdmin woqilin@gmail.com

#设置你的文档根目录,根据具体的环境来设置

DocumentRoot "D:/wamp/bin/apache/Apache2.2.17/htdocs/woqilin"

#记录站点运行错误的日志

ErrorLog "logs/jkquanzi.com-error.log"

#记录用户访问站点的日志

CustomLog "logs/jkquanzi.com-access.log" common

#站点的域名,可以是虚拟的

ServerName woqilin.com

#要跟上面的文档根目录一致

<Directory "D:/wamp/bin/apache/Apache2.2.17/htdocs/woqilin">

Options Indexes FollowSymLinks

AllowOverride all

Order deny,allow

allow from all

</Directory>

</VirtualHost>


最后一步,打开 C:\Windows\System32\drivers\etc\hosts 文件,在最后添加以下一条记录,这时,在浏览器输入 http://woqilin.com 就可以访问你的虚拟站点了。


127.0.0.1 woqilin.com # 站点的域名


如果出现 You don't have permission to access / on this server 的警告,仔细检查了一遍配置文件httpd.conf,找到这么一段:

<Directory />
    AllowOverride none
    Require all denied

</Directory>

改成

<Directory />
    AllowOverride none
    Require all granted

</Directory>

在Linux建立虚拟站点下参
考:https://help.ubuntu.com/community/ApacheMySQLPHP#Virtual_Hosts


上一篇:一键安装PHP开发环境

2010年5月28日星期五

Ubuntu 10.04 安装AMP(Apache+Mysql+PHP)


安装Apache

woqilin@woqilin-desktop:~$ sudo apt-get install apache2

安装Mysql

woqilin@woqilin-desktop:~$ sudo apt-get install mysql-server

安装mysql客户端工具(可选)

woqilin@woqilin-desktop:~$ sudo apt-get install mysql-admin mysql-client mysql-gui-tools-common mysql-query-browser

安装mysql浏览器工具(推荐)

woqilin@woqilin-desktop:~$ sudo apt-get install phpmyadmin

安装Php5

woqilin@woqilin-desktop:~$ sudo apt-get install php5

安装PHP的Mysql扩展库

woqilin@woqilin-desktop:~$ sudo apt-get install libapache2-mod-auth-mysql
woqilin@woqilin-desktop:~$ sudo apt-get install php5-mysql

让PHP支持Mysql

找到扩展模块的目录,打开终端,输入以下命令
woqilin@woqilin-desktop:~$ locate mysql.so
(如果你有安装mysqli库,把 mysql.so 改成 mysqli.so)
会显示Mysql(i)库的位置
/usr/lib/php5/20090626+lfs/mysql.so
然后检查 php.ini文件'extension_dir'属性的设置
woqilin@woqilin-desktop:~$  sudo gedit /etc/php5/apache2/php.ini
-找到 'extension_dir'属性. 默认为
"/usr/lib/php5/ext"
.如果不是的话,设置成这个值.
-创建extension_dir目录
woqilin@woqilin-desktop:~$  sudo mkdir /usr/lib/php5/ext
-把mysql.so库复制到新目录
woqilin@woqilin-desktop:~$  sudo cp /usr/lib/php5/20090626+lfs/mysql.so /usr/lib/php5/ext/mysql.so
重启apache,测试mysql(i)库是否可以工作了

phpmyadmin 设置


如果已经安装phpmyadmin,打开浏览器输入以下地址:http://localhost/phpmyadmin,一般情况下会有以下问题

1.phpmyadmin 404 错误

配置apache2.conf文件.打开终端,输入以下命令
woqilin@woqilin-desktop:~$ sudo gedit /etc/apache2/apache2.conf
把下面这段代码添加到apache2.conf文件的最后面,然后保存并退出。重启Apache
Include /etc/phpmyadmin/apache.conf

2.phpmyadmin 无法加载 mcrypt 扩展,请检查您的 PHP 配置。把mcrypt.so模块复制到php的ext目录。

woqilin@woqilin-desktop:~$ sudo cp /usr/lib/php5/20090626+lfs/mcrypt.so /usr/lib/php5/ext/mcrypt.so

补充:

1.如果找不到mcrypt.so模块,必须手动安装
(1)打开终端运行以下命令即可安装
woqilin@woqilin-desktop:~$ apt-get install php5-mcrypt
(2)如果找不到php5-mcrypt包,下载以下三个包
libmcrypt-2.5.8.tar.gz mhash-0.9.9.tar.gz mcrypt-2.6.8.tar.gz2.然后在终端运行以下命令,其中xxx代表相应的文件
woqilin-desktop:~$ tar z -xvf xxx.tar.gz
woqilin@woqilin-desktop:~$ cd xxx
woqilin@woqilin-desktop:~$ sudo ./configure
woqilin@woqilin-desktop:~$ sudo make
woqilin@woqilin-desktop:~$ sudo make install
woqilin@woqilin-desktop:~$ sudo ldconfig
3.定位mcrypt.so模块的路径(如下命令),再把mcrypt.so模块复制到/usr/lib/php5/ext目录下,最后重启Apache
woqilin@woqilin-desktop:~$ locate mcrypt.so

启动, 停止, 测试, 重启 Apache

启动Apache:
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl start
停止Apache:
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl stop
重启Apache:
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl restart
测试配置文件改变
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl configtest

无法重启Apache

重启Apache出现以下错误
apache2: Could not reliably determine the server's fully qualified 
domain name, using 127.0.1.1 for ServerName
要解决这个问题,要编辑httpd.conf文件内容,打开终端,输入以下命令
woqilin@woqilin-desktop:~$ sudo gedit /etc/apache2/httpd.conf
默认httpd.conf文件是空白的,添加下面的内容到文件.
ServerName localhost
保存,现在可以重启Apache
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl restart

设置修改 Apache 文件根目录 (Document Root)

Apache HTTP Server 的缺省文件根目录 (DocumentRoot) 是:

DocumentRoot "/var/www"

修改 Apache 文件根目录 (DocumentRoot) 的操作如下:

为避免修改失误,请先备份Apache配置文件,命令如下
woqilin@woqilin-desktop:~$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available default.backup
Apache 配置文件的路径是:
/etc/apache2/sites-available/default
修改 default 文件,输入以下命令
woqilin@woqilin-desktop:~$ sudo gedit /etc/apache2/sites-available/default
找到 DocumentRoot 为开头的那一行,将
DocumentRoot /var/www
改成新的 DocumentRoot 路径,比如你新的路径为 ~/htdocs,就改成
DocumentRoot ~/htdocs
然后找到  default 文件中的如下内容
<Directory /var/www/>
将 Diectory 中的路径改成你新设的文件根目录,比如:
<Directory ~/htdocs>
保存配置文件default 。
修改了配置文件以后,应重新启动 Apache Service。

设置 Apache 虚拟目录默认

Apache 默认已经为你设置了虚拟目录,在default文件找到下面代码
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
上面代码设置一个虚拟目录,别名(Alias) 为doc,虚拟目录路径为/usr/share/doc/
比如你写一个最简单的 test.php 文件(参见安装PHP 中的测试 PHP),然后将其存放在/usr/share/doc/目录下,然后在浏览器里打如下地址即可执行该php文件.
http://localhost/doc/test.php
该php 文件的实际路径是:
/usr/share/doc/test.php

禁止显示 Apache 目录列表

缺省情况下如果你在浏览器输入地址:
http://localhost:8080/
如果你的文件根目录里有 index.html,浏览器就会显示 index.html的内容,如果没有 index.html,浏览器就会显示文件根目录的目录列表,目录列表包括文件根目录下的文件和子目录。
同样你输入一个虚拟目录的地址:
http://localhost:8080/b/
如果该虚拟目录下没有 index.html,浏览器也会显示该虚拟目录的目录结构,列出该虚拟目录下的文件和子目录。 如何禁止 Apache 显示目录列表呢?
要禁止 Apache 显示目录结构列表,只需将 Option 中的 Indexes 去掉即可。
比如我们看看一个目录的目录配置:
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
你只需要将上面红色代码中的 Indexes 去掉,就可以禁止 Apache 显示该目录结构。用户就不会看到该目录下的文件和子目录列表了。 Indexes 的作用就是当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。