CentOS中文网

CentOS下搭建Discuz!论坛

CentOS中文网 https://www.centos.net.cn 2015-08-31 00:40 出处:网络 编辑:#iCMS
之前在上篇文章中介绍怎么搭建LAMPhttp://www.centoscn.com/CentosServer/www/2015/0831/6090.html

之前在上篇文章中介绍怎么搭建LAMPhttp://www.centoscn.com/CentosServer/www/2015/0831/6090.html

搭建LAMP后能够正常解析出网页来,那么我们现在来搭建一个Discuz!论坛。

一、安装Discuz!

1、新建目录来存放网页等

[root@tpp ~]# mkdir /data/www

[root@tpp ~]# cd /data/www

[root@tpp www]# wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip //下载最新版本的Discuz!

[root@tpp www]# unzip Discuz_X3.2_SC_GBK.zip //解压

[root@tpp www]# ls

Discuz_X3.2_SC_GBK.zip readme upload utility

2、程序文件会放于upload下,所以全部移到www目录下,并且删除多余的文件。

[root@tpp www]# mv upload/* ./

[root@tpp www]# ls

admin.php connect.php favicon.ico install readme template utility

api cp.php forum.php member.php robots.txt uc_client

api.php crossdomain.xml group.php misc.php search.php uc_server

archiver data home.php plugin.php source upload

config Discuz_X3.2_SC_GBK.zip index.php portal.php static userapp.php

[root@tpp www]# rm -rf readme/ utility/ upload/ Discuz_X3.2_SC_GBK.zip

3、配置一个虚拟主机

[root@tpp www]# vim /usr/local/apache2/conf/httpd.conf

#Include conf/extra/httpd-vhosts.conf //找到,开放这个虚拟主机配置文件,如下:

Include conf/extra/httpd-vhosts.conf

[root@tpp www]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //编辑虚拟主机配置文件,在文件最后面有两个模板案例,删除一个再修改另一个为:

<VirtualHost *:80>

# ServerAdmin webmaster@dummy-host.example.com //管理员邮箱,我们可以去掉

DocumentRoot "/data/www" //改为之前创建的目录

ServerName www.tpp.com //设置域名

ServerAlias www.ppt.com //可以设置多个域名

# ErrorLog "logs/dummy-host.example.com-error_log" //错误日志

# CustomLog "logs/dummy-host.example.com-access_log" common //访问日志

</VirtualHost>

接着打开80端口

[root@tpp www]# vim /usr/local/apache2/conf/httpd.conf

<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

</Directory>

改为:

<Directory />

Options FollowSymLinks

AllowOverride all

Order deny,allow

Allow from all

</Directory>

保存退出,检测配置是否正确,并重启

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

Syntax OK

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

4、配置hosts文件

找到本机C:WindowsSystem32driversetc下的hosts文件,添加下面内容后保存退出。

192.168.0.104 www.tpp.com www.ppt.com www.ppt1.com

5、我们在浏览器上输入网址www.tpp.com这是就会跳转到Discuz!安装界面。

CentOS下搭建Discuz!论坛

CentOS下搭建Discuz!论坛

同意安装后我们看多好多都是不可写,这时我们就要给他们权限。

首先查看Apache进程以哪个身份运行

[root@tpp www]# ps aux |grep http

daemon 4566 0.0 1.0 30140 11028 ? S 04:42 0:00 /usr/local/apache2/bin/httpd -k start

daemon 4567 0.0 0.9 28724 9480 ? S 04:42 0:00

我们可以看到是daemon,下面我们把所有没有权限的文件都赋予daemon组

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

刷新页面后,全都变成绿色的了。下一步就是全新安装。

6、接下来就是配置数据库

[root@tpp www]# /usr/local/mysql/bin/mysql

mysql> create database discuz; //创建一个数据库,数据库名为discuz

mysql> grant all on discuz.* to 'tpp'@'localhost' identified by 'tpplinux';

// all 所有的权限,用户tpp,密码tpplinux

7、然后我们回到原网页

填写数据库名:discuz,数据库用户名:tpp,数据库密码:tpplinux,其他的默认;管理员admin 密码123456,下一步;安装完成以后,点击最右下角的“您的论坛已完成安装,点此访问”。

CentOS下搭建Discuz!论坛

二、配置Apache

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

需求:用户访问/data/www/abc目录下的123.txt文件需要认证

[root@tpp www]# mkdir abc

[root@tpp www]# cd abc

[root@tpp abc]# cp /etc/passwd 123.txt

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

在相应的虚拟主机配置文件段,加入

<Directory /data/www/abc>

AllowOverride AuthConfig

AuthName "自定义的"

AuthType Basic

AuthUserFile /data/.htpasswd # 这里的/data/.htpasswd可以随便写一个路径或名字,没有限制(这句中文只做注解,不要加进去,要不然会报错)

require valid-user

</Directory>

如图:

CentOS下搭建Discuz!论坛

保存后,然后创建apache的验证用户

[root@tpp abc]# /usr/local/apache2/bin/htpasswd -c /data/.htpasswd tpp

第一次创建用户tpp要用到-c 参数,第2次添加用户,就不用-c参数,因为-c是创建的意思,如果加上会把这个文件重写。

[root@tpp abc]# /usr/local/apache2/bin/apachectl -t

Syntax OK

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

接着我们来访问下www.tpp.com/abc/123.txt如下图:

上面有乱码,是字符集问题,配置文件写了“自定义的”,我们可以写成英文的。

2、配置域名跳转

需求:要把访问域名www.ppt.com(或www.ppt1.com)的域名转发到www.tpp.com 上


实现:

[root@tppabc]#vim/usr/local/apache2/conf/extra/httpd-vhosts.conf//虚拟主机中增加如下内容

<IfModule mod_rewrite.c>

RewriteEngine on

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

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

</IfModule>

如果是多个域名重定向到一个域名

<IfModule mod_rewrite.c>

RewriteEngine on

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

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

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

</IfModule>

如下图所示:

CentOS下搭建Discuz!论坛

然后重新重新检测和加载Apache

[root@tpp htdocs]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@tpp htdocs]# /usr/local/apache2/bin/apachectl graceful

下面我们在浏览器输入www.ppt.com或者www.ppt1.com时,会自动跳转到www.tpp.com

3、配置apache的访问日志,并以一天时间来分割。

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

CentOS下搭建Discuz!论坛

修改为以日期为命名的错误日志和访问日志

ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/tpp.com-error_%Y%m%d.log 86400"

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/tpp.com-access_%Y%m%d.log 86400" combined env=!image-request

如下图:

CentOS下搭建Discuz!论坛

其中命令都是以绝对路径,rotatelogs是分割工具,%Y%m%d时间为分割单位,86400秒为一天。SetEnvIf为自定义的,下面访问日志可以调用env,即不记录以gif jpg 等结尾的文件。

接着我们从新检测和加载Apache

[root@tpp logs]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@tpp logs]# /usr/local/apache2/bin/apachectl graceful

然后我们刷新下网页就会看到有日志生成,如下图:

CentOS下搭建Discuz!论坛

4、Apache配置静态缓存

把浏览网页的静态文件设置为缓存,文件缓存之后不用再调用,节省带宽。

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

在之前的日志文件定义的下面接着定义一个模块

<IfModulemod_expires.c>

ExpiresActiveon

ExpiresByTypeimage/gif"accessplus1days"

ExpiresByTypeimage/jpeg"accessplus24hours"

ExpiresByTypeimage/png"accessplus24hours"

ExpiresByTypetext/css"nowplus2 hours"

ExpiresByTypeapplication/x-javascript"nowplus2hours" ExpiresByTypeapplication/javascript"nowplus2hours"

ExpiresByTypeapplication/x-shockwave-flash"nowplus2hours"

ExpiresDefault"nowplus0min"

</IfModule>

如下图所示:

CentOS下搭建Discuz!论坛

接着我们从新检测和加载Apache

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

Syntax OK

[root@tpp www]# /usr/local/apache2/bin/apachectl graceful

下面我们来测试是否成功,在/data/www/目录下新建两个文件:1.txt 1.jpg,其中txt不是我们上面定义的静态文件

[root@tpp www]# touch 1.txt 1.jpg

[root@tpp www]# curl -x127.0.0.1:80 www.tpp.com/1.txt -I

CentOS下搭建Discuz!论坛

[root@tpp www]# curl -x127.0.0.1:80 www.tpp.com/1.jpg -I

CentOS下搭建Discuz!论坛

5、Apache配置防盗链接

[root@tpp www]#vim/usr/local/apache2/conf/extra/httpd-vhosts.conf //加入如下模块

SetEnvIfNoCaseReferer"^http://www.tpp.com"local_ref

SetEnvIfNoCaseReferer"www.guhantai.cn"local_ref

SetEnvIfNoCaseReferer"^$"local_ref

<filesmatch".(txt|doc|mp3|zip|rar|jpg|gif|png)">

OrderAllow,Deny

Allowfromenv=local_ref

</filesmatch>

如下图所示(一定要注意空格,不然会报错):

CentOS下搭建Discuz!论坛


现在我们的这些txt|doc|mp3|zip|rar|jpg|gif|png文件,不能被其他网站作为网络链接而引用了。

0

精彩评论

暂无评论...
验证码 换一张
取 消