LAMP环境下搭建discuz!论坛

LAMP环境下搭建discuz!论坛

一、下载discuz

1、创建目录

mkdir /data/www

2、进入目录

cd /data/www

3、下载discuz

wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip

4、解压discuz

unzip Discuz_X3.2_SC_GBK.zip

5、把upload目录中的文件移动到当前目录下,也就/data/www/目下

mv upload/* .

6、删除掉其他的文件

[root@mysql www]# rm -rfDiscuz_X3.2_SC_GBK.zip readme/ utility/

upload空目录也要删除掉:[root@mysqlwww]# rm -rf upload/

二、配置第一个虚拟主机

1、用vim打开/usr/local/apache2/conf/httpd.conf文件

删除httpd.conf中的这行前面的#

#Include conf/extra/httpd-vhosts.conf

2、在vim /usr/local/apache2/conf/extra/httpd-vhosts.conf配置文件中

加入如下配置:

<VirtualHost *:80>
   DocumentRoot "/data/www" #网站的根目录
   ServerName www.guhantai.cn #主机域名
   ServerAlias www.guhantai.com.cn #第二个域名
   #ErrorLog "logs/dummy-host.example.com-error_log"
   #CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>>

有两个虚拟主机,删除掉一个,

保存之后退出

3、检查配置文件

[root@mysql www]#/usr/local/apache2/bin/apachectl -t
Syntax OK #出现这个提示就说明已经好了

4、更改Windows hosts文件做解析,将www.guhantai.cn解析到Linux主机的IP

c:\Windows\System32\drivers\etc\hosts

192.168.21.97 www.guhantai.cnwww.guanhaitai.com.cn

   

5、在Windows浏览器测试的时候提示无法找到网页,错误代码404

6、修改vim/usr/local/apache2/conf/httpd.conf文件,如下图:

wKiom1V_luGg6G0_AAD8IpmHnCM062.jpg

7、然后使用如下命令来检测配置文件是否OK

[root@mysql www]# /usr/local/apache2/bin/apachectl -t
Syntax OK  #出现这个表示配置文件时正确的

8、重启apache服务

   [root@mysqlwww]# /usr/local/apache2/bin/apachectl restart

9、再次在浏览器中输入http://www.guhantai.cn/install/的时候访问正常,出现了Discuz的安装向导界面,如下图:

wKiom1V_l3qwajM6AAR9zEOhxyE758.jpg

10、点击“我同意”

wKiom1V_l8jCDj-gAAOkBnjtToI553.jpg


11、进入到下一步界面,红色的“x”表示是没有写权限,如图所示:

wKioL1V_mbfQz013AALQtSFTkYY537.jpg

12、使用[root@mysql www]#ps aux |grep http查看Apache使用的账号是daemon

wKiom1V_mGqT-FgTAAK-ufBfRIU886.jpg

13、给daemon账号授权,让daemon账号对支持Apache的目录进行可写的操作

[root@mysqlwww]# chown -R daemon data/ config/ uc_server/data/ uc_client/data/

14、再次刷新时,红色的“x”消失了,变成写的了

wKioL1V_mkLz82YAAAIUAqHwH0c943.jpg

15、点击下一步

wKiom1V_mMWz7B2-AAC8yqBY5F0387.jpg

进入到设置运行环境界面,选择全新安装,下一步,进入到安

wKiom1V_mQuBwJISAAHE_0EWN4g181.jpg

装数据库界面

wKioL1V_mrnBcmIzAAHqEw2FjvQ588.jpg

然后下一步,开始安装 

16、安装完成,进入论坛

 

wKioL1V_mvvxVMUrAAMwdv0O6Ts773.jpg

17、进入论坛的管理中心之后,会出现一个提示,为了安全起见要把install/index.php干掉

wKioL1V_myORQ5ReAAGEFTsRFP0622.jpg

删除install/index.php

[root@mysql www]# rm -rf install/index.php

三、配置mysql,给Discuz!增加一个账户

1、首先检查Mysql有没有启动

   [root@mysqlwww]# ps aux |grep mysql

2、登录MySQL

   登录MySQL的时候提示没有mysql这个命令,

 

 [root@mysql www]# mysql -uroot
-bash: mysql: command not found

后来查看passwd文件,发现是禁止登陆的

   现在先更改PATH,允许mysql登录:

  

[root@mysqlwww]#  PATH=$PATH:/usr/local/mysql/bin

   也可以这样子做:

   [root@mysql www]# /usr/local/mysql/bin/mysql �Curoot


 现在登录mysql就可以登录进去

 [root@mysqlwww]# mysql �Curoot

3、给mysql设定密码

   [root@mysqlwww]# mysqladmin -uroot password '123456'

  123456就是msyql设定的登录密码

  

   用账号和密码登录msyq

   [root@mysqlwww]# mysql -uroot -p123456

4、创建一个名称为cheng的数据库

   mysql>create database cheng;

5、创建一个用户,用来授权

 mysql>grant all on cheng.* to 'cheng'@'localhost' identified by '123456';

 grant:授权

 all:所有权限

 identified:密码

 cheng'@'localhost:新创建的用户,并且制定登录本机

cheng:第4步创建的数据库名称

这个命令的意思,就是创建一个名称为cheng的用户,只限于在本机登录,而且对cheng这个数据库有所有权限

四、为某个虚拟主机配置用户认证

1、  在虚拟主机配置文件中加入以下内容,创建apache的验证用户

虚拟主机配置文件位置:vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

加入以下内容:

 wKiom1V_mmehmvkgAAL4Q_hfySU523.jpg

代码如下:

<Directory *>#这里的*表示的是针对这台虚拟主机来的,也可以写成绝对路径/data/www
           AllowOverride AuthConfig
           AuthName "
自定义的"
           AuthType Basic
           AuthUserFile /data/.htpasswd  #
这里的/data/.htpasswd你可以随便写一个路径或名字,没有限制
           require valid-user
</Directory>

2、  为用户创建密码文件

[root@mysql www]# /usr/local/apache2/bin/htpasswd -c/data/.htpasswd cheng

cheng用户创建密码文件,第一次创建.htpasswd需要加上-c,如果.htpasswd已经存在,-c会覆盖

3、  查看/data/.htpasswd文件

[root@mysqlwww]# cat /data/.htpasswd
cheng:v5o0GkUDbIh8c

左边是用户名,冒号右边是密码。密码是加密的

4、  检查配置文件看看有错误没有

[root@mysqlwww]# /usr/local/apache2/bin/apachectl -t
Syntaxerror on line 35 of /usr/local/apache2/conf/extra/httpd-vhosts.conf:
AuthUserFiletakes 1-2 arguments, text file containing user IDs and passwords

   提示配置文件的第35行有错误

   排错:

   使用vim查看/usr/local/apache2/conf/extra/httpd-vhosts.conf文件,看看是哪里错误了

wKioL1V_nO3B1-8OAAGW24M7vXk599.jpg

删除多出来的那一行文字,再检查配置文提示已经OK

[root@mysql www]#/usr/local/apache2/bin/apachectl -t
Syntax OK

在重启一下apache服务

[root@mysql www]#/usr/local/apache2/bin/apachectl restart

5、  在此刷新网页的时候,提示要输入账号和密码才可以访问或者查看论坛

wKioL1V_nU7wWcCZAANpu6oqvq8951.jpg

五、配置域名跳转

1、  单域跳转,将一下代码拷贝到/usr/local/apache2/conf/extra/httpd-vhosts.conf文件中的第35行下面。具体如下图所示:

wKiom1V_m_GylQPjAAPig3gm7U0071.jpg

代码如下:

    <IfModulemod_rewrite.c>

       RewriteEngine on

       RewriteCond %{HTTP_HOST} ^www.domain1.com$

       RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]

</IfModule>

 

检查配置文件

[root@mysql www]#/usr/local/apache2/bin/apachectl -t

Syntax OK

 

重启apache服务

[root@mysql www]#/usr/local/apache2/bin/apachectl restart

2、如果是多个域名,可以这样设置:

   <IfModule mod_rewrite.c>

       RewriteEngine on

       RewriteCond %{HTTP_HOST} ^www.domain.com [OR]

       RewriteCond %{HTTP_HOST} ^www.domain1.com$

       RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]

   </IfModule>

方法和但域名设置是一样的,只是代码不一样而已

3、测试

linux上测试

[root@mysql www]#curl -u cheng:123456-x127.0.0.1:80 www.guhantai.cn/forum.php -I
HTTP/1.1 301 Moved Permanently
Date: Sat, 13 Jun 2015 09:40:47 GMT
Server: Apache/2.2.16 (Unix) DAV/2PHP/5.3.28
Location:http://www.guhantai.com.cn/forum.php
Content-Type: text/html; charset=iso-8859-1

这个测试结果就是正确的

六、配置apache的访问日志

1、  查看日志格式,在主配置文件里面

[root@mysql ~]# vim /usr/local/apache2/conf/httpd.conf
    #
   LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined #日志格式,经常使用的也是这个格式
   LogFormat "%h %l %u %t \"%r\" %>s %b" common
 
   <IfModule logio_module>
     # You need to enable mod_logio.c to use %I and %O
     LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

User-Agent:用来识别浏览器的

2、  进入虚拟主机配置文件,配置日志

[root@mysql ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

修改成以下类容具体如图:

 

wKioL1V_nwPCHy3_AAKGq3m3dyA924.jpg

wKioL1V_pD_wJoXQAAN0-Jg-aBA585.jpg 

代码如下:

#配置日志
ErrorLog"/usr/local/apache2/logs/dummy-host.example.com-error_log"
    SetEnvIf Request_URI".*\.gif$" image-request
    SetEnvIf Request_URI".*\.jpg$" image-request
    SetEnvIf Request_URI".*\.png$" image-request
    SetEnvIf Request_URI".*\.bmp$" image-request
    SetEnvIf Request_URI".*\.swf$" image-request
    SetEnvIf Request_URI".*\.js$" image-request
    SetEnvIf Request_URI".*\.css$" image-request
    CustomLog"|/usr/local/apache2/bin/rotatelogs -l/usr/local/apache2/logs/1.com-access_%Y%m%d.log 86400" combinedenv=!image-request
</VirtualHost>

3、修改完成之后,保存退出,并且检查配置文是否配置正确,如果正确那么久重启服务

[root@mysql ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

4、  重启apache服务

[root@mysql ~]# /usr/local/apache2/bin/apachectl restart

5、  查看/usr/local/apache2/logs/目下有没有日志

 [root@mysql www]# ls/usr/local/apache2/logs/
1.com-access_20150613.log access_log                        error_log
1.com-access.log          dummy-host.example.com-error_log httpd.pid

     dummy-host.example.com-error_log:这个日志是针推这个虚拟主机的

     error_log:这个是针对整个apache

|/usr/local/apache/bin/rotatelogs -l :日志切割工具

七、配置静态文件缓存

将一下配置文件拷贝到/usr/local/apache2/conf/extra/httpd-vhosts.conf配置文件中去。就拷贝在配置日志文件的下面就可以了。具体如图:

wKiom1V_oxeA8BbZAAMlEaE9gPo052.jpg

代码如下:

<IfModule mod_expires.c>
   ExpiresActive on
   ExpiresByType image/gif "access plus 1 days"
   ExpiresByType image/jpeg "access plus 24 hours"
   ExpiresByType image/png "access plus 24 hours"
    ExpiresByType text/css "now plus 2hour"
   ExpiresByType application/x-javascript "now plus 2 hours"    ExpiresByType application/javascript"now plus 2 hours"
   ExpiresByType application/x-shockwave-flash "now plus 2 hours"
   ExpiresDefault "now plus 0 min"
</IfModule>

保存退出

检查配置文件是否有错

[root@mysql www]#/usr/local/apache2/bin/apachectl -t

Syntax OK

 

重启apache服务

[root@mysql www]#/usr/local/apache2/bin/apachectl restart

 

测试一

在根目录创建一个1.txt文件

[root@mysql www]# touch 1.txt

 

1.txt文件中写内容

[root@mysql www]# echo "1111"> 1.txt


Linux系统中测试

[root@mysql www]# curl -u cheng:123456-x127.0.0.1:80 www.guhantai.com.cn/1.txt -I
HTTP/1.1 200 OK
Date: Sat, 13 Jun 2015 21:29:58 GMT
Server: Apache/2.2.16 (Unix) DAV/2PHP/5.3.28
Last-Modified: Sat, 13 Jun 2015 21:26:28GMT
ETag: "a1547-5-5186ce0b0d705"
Accept-Ranges: bytes
Content-Length: 5
Cache-Control: max-age=0   #这里是数字0表示的还没有缓冲文件
Expires: Sat, 13 Jun 2015 21:29:58 GMT
Content-Type: text/plain

测试二

创建一个1.jpg格式的文件

[root@mysql www]# touch 1.jpg

 

Linux系统中测试

[root@mysql www]#curl -u cheng:123456-x127.0.0.1:80 www.guhantai.com.cn/1.jpg -I
HTTP/1.1 200 OK
Date: Sat, 13 Jun 2015 21:38:39 GMT
Server: Apache/2.2.16 (Unix) DAV/2PHP/5.3.28
Last-Modified: Sat, 13 Jun 2015 21:37:54GMT
ETag: "a1548-0-5186d098fe20d"
Accept-Ranges: bytes
Cache-Control: max-age=86400  #这里就有数字了
Expires: Sun, 14 Jun 2015 21:38:39 GMT  #过期时间
Content-Type: image/jpeg

八、配置防盗链

1、在配置文件/usr/local/apache2/conf/extra/httpd-vhosts.conf加入以下代码,代码存放的位置如图:

wKiom1V_o9TQeCxDAAJCyj3RKI0843.jpg

代码:

SetEnvIfNoCase Referer"^http://www.guhantai.com.cn" local_ref
SetEnvIfNoCase Referer"www.guhantai.cn" local_ref
SetEnvIfNoCase Referer "^$"local_ref
<filesmatch"\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>

然后保存退出

2、检查刚才的配置文件是否有错误

[root@mysql www]# /usr/local/apache2/bin/apachectl -t

Syntax OK

3、重启apache服务

[root@mysql www]# /usr/local/apache2/bin/apachectl restart

4、 测试是否成功

 

[root@mysql www]# curl -u cheng:123456-e"http://www.baidu.com/2.txt" -x127.0.0.1:80www.guhantai.com.cn/1.jpg -I
HTTP/1.1403 Forbidden
Date:Sat, 13 Jun 2015 22:37:18 GMT
Server:Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28
Content-Type: text/html; charset=iso-8859-1

这个就是模拟的把guhantai.com.cn网站下的1.txt文件挂载到baidu网站下去,然后通过百度网站的链接来访问这个文件,提示不可以访问,说明防盗链接配置成功了,当然,这里只是模拟,可以使用百度或者其他的都可以

 

九、访问控制

1、把一下代码复制到/usr/local/apache2/conf/extra/httpd-vhosts.conf文件中,需要注意的是要把代码放在防盗链配置文件的后面才可以,不可以写到前面。(实验的最后会有全文的配置文件,一定要按照配置文档的实验顺序才可以,不然可能会出错)

#访问控制

<Directory /data/www/>
<filesmatch ".*">  #匹配所有
     Order deny,allow
     Deny from all
     Allow from 127.0.0.1
</filesmatch>
</Directory>

退出保存

检查配置文件

[root@mysql ~]#/usr/local/apache2/bin/apachectl -t

Syntax OK

 

重启apache服务

[root@mysql ~]#/usr/local/apache2/bin/apachectl restart

 

浏览器访问测试成功

wKioL1V_pjeQ8OZFAAE9Um3ftDY270.jpg

Linux上测试是OK

[root@mysql www]# curl -u cheng:123456-x127.0.0.1:80 www.guhantai.com.cn/1.jpg -I
HTTP/1.1 200 OK
Date: Sun, 14 Jun 2015 04:33:42 GMT
Server: Apache/2.2.16 (Unix) DAV/2PHP/5.3.28
Last-Modified: Sat, 13 Jun 2015 21:37:54GMT
ETag: "a1548-0-5186d098fe20d"
Accept-Ranges: bytes
Content-Type: image/jpeg

这应用场景一般在针对某个特殊的目录来的可以这样子写

<Directory /data/www/adc> 这个写法就是针对abc这个目录来的

2、针对请求的uri去限制,只允许内网和指定的ip才可以访问包含admin关键词的地址

   <filesmatch "(.*)admin(.*)">

           Order deny,allow

           Deny from all

           Allow from 127.0.0.1

           Allow from 192.168.21.100

</filesmatch>

这里的两个IP地址的意思就是说,除了这两IP地址之外,其他的IP地址及访问带有admin关键字时会直接禁止

 

修改完配置文件之后一定要检查配置文件,然后在重启apache服务

 

3、某个目录下禁止解析php,做这个实验的是时候最好的是吧之前的访问控制和精致访问admin后台的相关的配置禁用掉,以免出错都是在/usr/local/apache2/conf/extra/httpd-vhosts.conf文件中来修改配置的                                    

<Directory /data/www/uc_server>

   php_admin_flag engine off

   <filesmatch "(.*)php">

           Order deny,allow

           Deny from all

   </filesmatch>

</Directory>

修改完配置文件之后一定要检查配置文件,然后在重启apache服务

 

测试,在uc_server目下写一个php脚本

>?php

echo 12345678;

?>

不禁止会暴露php源代码

[root@mysql www]# curl -u cheng:123456-x192.168.21.97:80 'http://www.guhantai.com.cn/uc_server/2.php'
>?php
echo 12345678;
?>

禁止后

[root@mysql www]# curl -u cheng:123456-x192.168.21.97:80 'http://www.guhantai.com.cn/uc_server/2.php'
<!DOCTYPE HTML PUBLIC "-//IETF//DTDHTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission toaccess /uc_server/2.php
on this server.</p>
</body></html>

这样就无法看到php的源代码

 

目录使用diectory

<Directory /data/www/ uc_server > :只要是uc_server目录下php全部都禁用掉,这个目录根据实际的需来写

十、配置伪静态规则

Mod_rewiteapache的一个非常强大的功能,它可以实现伪静态

1、  discuz!管理后台页面全局左侧SEO设置―URL伪静态,右边全部打钩,具体如下图所示:

wKioL1V_pvey2gdnAAWs4mGVq5o091.jpg

2、  /usr/local/apache2/conf/extra/httpd-vhosts.conf配置文件中加入以下代码:

#RewriteRule^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page%3D$2
RewriteRule^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1&%1
RewriteRule^/article-([0-9]+)-([0-9]+)\.html$/portal.php?mod=view&aid=$1&page=$2&%1
RewriteRule^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteRule^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$/forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteRule^/group-([0-9]+)-([0-9]+)\.html$/forum.php?mod=group&fid=$1&page=$2&%1
RewriteRule^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2&%1
RewriteRule^/blog-([0-9]+)-([0-9]+)\.html$/home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteRule^/archiver/(fid|tid)-([0-9]+)\.html$/archiver/index.php?action=$1&value=$2&%1
RewriteRule^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$1:$2&%1

如图所示位置:

wKiom1V_qKPRrM9jAAbJ3FFEeJ4581.jpg

十二、apache限制指定user_agent,把一下代码拷贝到/usr/local/apache2/conf/extra/httpd-vhosts.conf文件中,紧挨着域名跳转开始

代码如下:

<IFModulemod_rewrite.c>

       RewriteEngine on

       RewriteCond %{HTTP_USER_AGENT}  ^.*MSIE\ 8.0*[NC,OR] 

       RewriteCond %{HTTP_USER_AGENT}  ^.*curl* [NC]

       RewriteRule  .*  -  [F]

</IFModule>

 修改完配置文件之后,一定要检查配置文件,然后在重启apache服务

测试:

wKiom1V_qSeiwM6XAAKKH9oOJZU737.jpg


十三、附件,附时间中的实例配置文件

<VirtualHost *:80>
    DocumentRoot "/tmp/tmp"
    ServerName tmp.com
<Directory /tmp/tmp/>
      Order allow,deny
      Deny from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.1.com
    ServerAlias www.a.com  www.b.com
    ServerAlias www.c.com
# 用户认证
#    <Directory /data/www>
#       AllowOverride AuthConfig
#       AuthName "alksdjflkasjdf"
#       AuthType Basic
#       AuthUserFile /data/.htpasswd
#       require valid-user
#    </Directory>
# 域名跳转
    <IfModule mod_rewrite.c>
        RewriteEngine on
#        RewriteCond %{HTTP_HOST} ^www.a.com$ [OR]
        RewriteCond %{HTTP_HOST} !^www.1.com$
        RewriteRule ^/(.*)$ http://www.1.com/$1 [R=301,L]
        RewriteRule ^/(.*)\.png$ /static/image/common/fav.gif [R=302]#这个没有多大意义
#伪静态规则
#RewriteRule ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page%3D$2
RewriteRule ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1&%1
RewriteRule ^/article-([0-9]+)-([0-9]+)\.html$ /portal.php?mod=view&aid=$1&page=$2&%1
RewriteRule ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteRule ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteRule ^/group-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=group&fid=$1&page=$2&%1
RewriteRule ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2&%1
RewriteRule ^/blog-([0-9]+)-([0-9]+)\.html$ /home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteRule ^/archiver/(fid|tid)-([0-9]+)\.html$ /archiver/index.php?action=$1&value=$2&%1
RewriteRule ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$1:$2&%1
RewriteCond %{HTTP_USER_AGENT}  ^.*Firefox/4.0* [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  ^.*curl* [NC]
RewriteRule  .*  -  [F]
    </IfModule>
# 配置日志
    ErrorLog "/usr/local/apache2/logs/dummy-host.example.com-error_log"
    SetEnvIf Request_URI ".*\.gif$" image-request
    SetEnvIf Request_URI ".*\.jpg$" image-request
    SetEnvIf Request_URI ".*\.png$" image-request
    SetEnvIf Request_URI ".*\.bmp$" image-request
    SetEnvIf Request_URI ".*\.swf$" image-request
    SetEnvIf Request_URI ".*\.js$" image-request
    SetEnvIf Request_URI ".*\.css$" image-request
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/1.com-access__%Y%m%d.log 86400" combined env=!image-request
# 配置静态文件缓存
#<IfModule mod_expires.c>
#    ExpiresActive on
#    ExpiresByType image/gif  "access plus 1 days"
#    ExpiresByType image/jpeg "access plus 24 hours"
#    ExpiresByType image/png "access plus 24 hours"
#    ExpiresByType text/css "now plus 2 hour"
#    ExpiresByType application/x-javascript "now plus 2 hours"
#    ExpiresByType application/javascript "now plus 2 hours"
#    ExpiresByType application/x-shockwave-flash "now plus 2 hours"
#    ExpiresDefault "now plus 0 min"
#</IfModule>
<Ifmodule mod_headers.c>
<filesmatch "\.(html|htm|txt)$">
header set cache-control "max-age=3600"
</filesmatch>
<filesmatch "\.(css|js|swf)$">
header set cache-control "max-age=604800"
</filesmatch>
<filesmatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
header set cache-control "max-age=29030400"
</filesmatch>
</ifmodule>
# 配置防盗链
<Directory /data/www/>
SetEnvIfNoCase Referer "^http://www.1.com" local_ref
SetEnvIfNoCase Referer "www.a.com" local_ref
SetEnvIfNoCase Referer "www.b.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
# 访问控制
#<Directory /data/www/admin>
#<filesmatch ".*">
#      Order deny,allow
#      Deny from all
#      Allow from 127.0.0.1
#</filesmatch>
#</Directory>
#禁止访问admin.php后台
#<Directory /data/www>
#<Filesmatch  "^admin.php(.*)$"> #匹配文件的时候在做限制
#      Order deny,allow
#      Deny from all
#      Allow from 127.0.0.1
#</Filesmatch>
#</Directory>
#禁止某个目录下禁止解析php
<Directory /data/www/uc_server>
    php_admin_flag engine off
    <filesmatch "(.*)php">
            Order deny,allow
            Deny from all
    </filesmatch>
</Directory>
</VirtualHost>


笔记如果有错误的地方,还请大神们指正出来,当然我也会继续修改


你可能感兴趣的:(local,discuz,虚拟主机)