您的位置:首页 > 其它

LAMP应用:Discuz的搭建与配置

2015-08-29 13:44 453 查看
1、准备:Discuz_X3.2_SC_UTF8.zip,虚拟机环境LAMP

注:下载地址http://download.comsenz.com/DiscuzX/3.2/

有四种类型,语言分为简体中文(SC)和繁体中文(TC),编码方式分为GBK和UTF-8,UTF-8比GBK容量大。

2、安装全过程

mkdir /data/www(站点目录)

cd /data/www

unzip Discuz_X3.2_SC_UTF8.zip

mv upload/* . 之后删去之前解压得到的目录

Ø 配置虚拟主机

文件apache配置文件/usr/local/apache/conf/httpd.conf

启用Include conf/extra/httpd-vhosts.conf

vim/usr/local/apache2/conf/extra/httpd-vhost.conf,发现有两个虚拟主机模板,启用一个,修改如下:

<VirtualHost*:80>

#ServerAdmin (管理员邮箱)

DocumentRoot “/data/www”(网站根目录)

ServerName www.wsy.com (主要域名)

ServerAlias www.bb.com (副域名)

#ErrorLog

#CustomLog

</VirtualHost>

完成后,先检测语法规则

/usr/local/apache2/bin/apachectl -t —— Syntax OK

/usr/local/apache2/bin/apachectl restart

ps aux | grep httpd

[插]将Apache作为开机启动服务

ls /etc/init.d/ | grep httpd

cp /usr/local/apache2/bin/apachect1 /etc/init.d/httpd

vim /etc/init.d/httpd

#chkconfig:345 85 15

#description:Start and stop the Apache HTTP Server

chkconfig --add httpd

chkconfig httpd on

Ø 更改本机DNS解析

文件位置:Windows主机c:\Windows\System32\drivers\etc\hosts

修改后:

# localhost nameresolution is handled within DNS itself.

# 127.0.0.1 localhost

# ::1 localhost

192.168.1.106 www.wsy.com www.bb.com

在cmd中ping www.wsy.comwww.bb.com 可以解析了

Ø 访问安装页面

在浏览器中输入设置的解析域名,会发现显示403Forbidden的错误。

解决办法:

(1)检查权限

vim /usr/local/apache2/conf/httpd.conf

<Directory />中修改成Allow from all

/usr/local/apache2/bin/apachctl -t

/usr/local/apache2/bin/apachctl restart(graceful)

(2)论坛主目录下没有index页面

touch /data/www/index.php(html,htm,这个是在httpd.conf中的 DirectoryIndex
index.html添加的)

Ø 引导安装

“我同意”点击下一步,发现好多目录下打红叉,错误是没有写权限。由于是Apache发布的,要对Apache的用户daemon给予站点目录/data/www的写权限:

[/data/www]chown -R daemon:daemon data uc_server/data uc_client/data config

刷新后都变成勾了,下一步选“全新安装(升级选第二个)”,再下一步需要填写站点信息(域名、站数据库、管理员账号等),先设置数据库:

[插]

(1)使用mysql作为全局命令

方法一:ln -s /usr/local/mysql/bin/mysql /usr/bin

方法二:

vim /etc/profile

export $PATH=$PATH:……: /usr/local/mysql/bin

source /etc/profile

(2)初始化密码

方法一:登录修改,见LAMP搭建流程

方法二:mysqladmin -u root password ‘newpasswd’;

mysql -u root -p [your passwd]

mysql > create datebase discuzdb;

这里出现问题Error 10006(HY000):Can’t create database ‘discuzdb’;

我暂时退出MySQL,网上给的解决办法是清理日志和进程记录,我没有日志和进程文件,之后重启MySQL发现错误:Manager of pid-file quit without updating file,数据库停止运行。

后来发现是数据库存储/data/mysql和/usr/local/mysql权限不对。

chown -R mysql:mysql /data/mysql /usr/local/mysql

在启动数据库服务之前错误的使用了mysql命令登录,爆出一条常见错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket'/tmp/mysql.sock' (2)

这个错误可见系统一般默认寻找与mysql通信的文件在/tmp/mysql.sock,如果mysql.sock不在此目录下要做软连接。

启动数据库后正常。

mysql > grant all on discuzdb.* to ‘discuz’@’localhost’identified by ‘psd’;

//这里的用户可以不同于mysql的登录账号



回到浏览器的安装导航页,填写刚才设置的信息,数据文件前缀、系统邮箱和管理员邮箱可不改,进行最后的安装。安装完成即可访问论坛首页。

Ø discuz操作注意

发帖的验证码不显示,因为php模块php-gd安装不全。

“管理中心”进入管理员后台,如果提示“Please delete install/index.php”需要删除这个文件。

3、虚拟主机站点功能配置

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

编辑<VirtualHost *:80></VirtualHost>

(1)用户认证

在<VirtualHost *:80>中添加:

<Directory *或/data/www>

AllowOverride AuthConfig

AuthName "自定义的"

AuthType Basic

AuthUserFile /data/.htpasswd # 这里的/data/.htpasswd你可以随便写一个路径或名字,没有限制

require valid-user

</Directory>

保存后,然后

创建apache的验证用户

/usr/local/apache2/bin/htpasswd -c -m(md5)/data/.htpasswd [username]

New password: Re-typenew password:

注:

增加第二个用户的时候,就不要加-c了,因为-c是创建的意思,如果加上会把这个文件重写。

/usr/local/apache2/bin/apachctl -t

/usr/local/apache2/bin/apachctl restart(graceful)

访问论坛提示输入用户名和密码。

(2)域名跳转

添加<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.bb.com$(副域名)

RewriteRule ^/(.*)$ http://www.wsy.com/$1(主域名) [R=301,L](301重定向,last结束符)

</IfModule>

注:301与302区别——301永久,302暂时

/usr/local/apache2/bin/apachctl -t

curl -x127.0.0.1:80 www.bb.com -I à301
Moved Permanently

多个域名的情况:

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

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

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

注:401 Authorization Requied需要认证

curl -u username:password -x127.0.0.1 URL -I

(3)配置Apache访问日志自动归档

日志格式:httpd.conf的LogFormat,Referer指访问的域名历史,UserAgent指的是浏览器类型。

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

ErrorLog “|/usr/local/apache2/logs/1.com-error.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/1.com-access

_%Y%m%d.log 86400(1 day)” combined(日志系列)env=!image-request(不记录这些标记项)

(4)配置静态文件缓存(节点存储时效)

<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 "nowplus 2 hour"

ExpiresByType application/x-javascript "now plus 2 hours"

ExpiresByType application/x-shockwave-flash "now plus 2 hours"

ExpiresDefault "now plus 0min"

</IfModule>

apacheclt -t

apachectl restart

验证:

touch 1.txt

echo “11111” >> 1.txt

curl -x127.0.0.1:80 -u user:psd www.wsy.com/1.txt -I

max-age=value(缓存时间,默认单位为s)



在chrome浏览器中F12,刷新出对象,查看一个对象Response
Header的max-age

(5)设置防盗链(防止服务器成为他人存储)

SetEnvIfNoCase Referer "^http://www.wsy.com"local_ref

SetEnvIfNoCase Referer "www.bb.com"local_ref

#SetEnvIf NoCase Referer "www.up.com" local_ref

SetEnvIfNoCase Referer "^$" local_ref

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

Order Allow,Deny

Allow from env=local_ref

</filesmatch>

验证:

apacheclt -t -->Syntax OK

apachectl restart

touch /data/www/1.txt

echo "111111" > /data/www/1.txt

curl -e(--refer) “www.baidu.com/xxxx” -u username:password -x127.0.0.1:80/1.txt www.wsy.com/1.txt -I


#盗链不成功,403Forbidden

curl -e(--refer) “www.wsy.com/xxxx” -u username:password -x127.0.0.1:80/1.txt www.wsy.com/1.txt -I


#本地可以HTTP200

(6)访问控制

<Directory /data/www/>

Order deny,allow #执行顺序

Deny from all

Allow from 127.0.0.1

</Directory>

针对请求的url去限制

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

Order deny,allow

Deny from all

Allow from 127.0.0.1

</filesmatch>

某个某目录下禁止解析php

<Directory /data/www/path>

php_admin_flag engine off

<filesmatch "(.*)php">

Order deny,allow

Deny from all

</filesmatch>

</Directory>

重启Apache,访问:www.wsy.com/path/*.php时被拒绝,403Forbidden
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: