一、网站搭建前提
搭建好LAMP运行环境
下载网站程序,这里以Discuz X 3.2 作为示例
Discuz 程序下载地址:
简体中文GBK http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
繁体中文BIG5 http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_TC_BIG5.zip
简体UTF-8 http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
繁体UTF-8 http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_TC_UTF8.zip
二、安装,配置
# 创建网站程序文件目录 [root@mylinux ~]# mkdir /data/mydiscuz/ <== 放网站程序的地方,起一个自己知道的名字 # 解压安装程序,将upload里面的文件移到 网站监控目录下/data/mydiscuz [root@mylinux mydiscuz]# mv upload/* .
修改apache主配置文件httpd.conf,开启虚拟主机配置
# Virtual hosts # 将这一行前面的注释符“#”去掉 Include conf/extra/httpd-vhosts.conf
修改apache虚拟主机配置文件httpd-vhosts.conf,保留以下内容,
[root@mylinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf NameVirtualHost *:80 <VirtualHost *:80> # 管理员邮件地址,一般不需要,刻意注释掉 #ServerAdmin [email protected] # 主机地址 ServerName www.myd.com # 监控的文件目录 DocumentRoot "/data/mydiscuz" </VirtualHost>
检测配置信息,重启apache服务
通过浏览器输入IP地址,出现如下界面:
点“我同意”,进入下一步,会看到当前的环境信息,提示所需的目录没有权限,我们需要进行权限更改。
# 修改这些目录的权限 [root@mylinux mydiscuz]# chown -R daemon.daemon data/ \ > uc_client/data/ uc_server/data/ config/
权限修改完毕,可以下一步了,我们是第一次安装,所以选择全新安装,下一步
接下来我来配置mysql数据库信息,为网站创建数据库,和相应账号
# 第一次使用mysql,需要给mysql配置一个mysql管理员密码 [root@mylinux ~]# mysqladmin -u root password 'mysql123' # 在登录mysql,就需要使用密码了 [root@mylinux ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.1.40-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # 创建名为mydiscuz的数据库,注意mysql的每一句的结束需要加分号“;”,表示结束 mysql> create database mydiscuz; Query OK, 1 row affected (0.00 sec) # 将本机mydiscuz数据库的所有权限,授给名为mydiscuz的用户,密码为mydiscuz123 mysql> grant all on mydiscuz.* to 'mydiscuz'@'localhost' identified by 'mydiscuz123'; Query OK, 0 rows affected (0.00 sec) # 退出结束mysql mysql> exit; Bye [root@mylinux ~]#
现在数据库基本信息创建完毕,转到浏览器,进行配置
输入完毕之后,下一步,进行安装
安装完成
三、apache功能配置的增加
apache的功能的添加,主要是对虚拟配置文件httpd-vhosts.conf的修改
1 )用户认证
① 用htpassword 创建认证的用户和密码
# -c 为创建,只在第一次生成时,配置,如果后面使用不需要加参数-c,加了之后就会重写 # -m 为用MD5进行加密 [root@mylinux ~]# /usr/local/apache2/bin/htpasswd -c /data/mydiscuz/.htppasswd mylinux New password: Re-type new password: Adding password for user mylinux [root@mylinux ~]# # 两次不同的加密方案 [root@mylinux ~]# cat /data/mydiscuz/.htppasswd mylinux:fq4fMf7jZfuNY <== 以随机字符进行加密 [root@mylinux ~]# cat /data/mydiscuz/.htppasswd mylinux:$apr1$kSKaK0dy$EV/fh3twLG2d2oR99apo3. <== 以MD5值进行加密 [root@mylinux ~]#
② 将配置加入以下内容
# 用户认证 <Directory *> AllowOverride AuthConfig # 输入对话框提示信息 AuthName "Please input your info" # 指定字符类型 AuthType Basic # 指定用户文件地址 AuthUserFile /data/mydiscuz/.htppasswd require valid-user </Directory>
效果示例 :当启用用户认证,输入主机地址,会弹出认证窗口,如下图:
2 )域名跳转
域名跳转 :主机有多个域名地址,有主域名地址,将所有指向主机的域名地址,自动跳转到默认的主域名地址上。
配置示例
# 域名跳转(注 :跳转功能开启的前提是定义域名别名,将所有非主域名的地址定义到别名 中) <IfModule mod_rewrite.c> # 开启域名跳转功能 RewriteEngine on # 跳转条件一:第一个域名地址 RewriteCond %{HTTP_HOST} ^www.b.com [OR] # 跳转条件二:第二个域名地址 RewriteCond %{HTTP_HOST} ^www.c.com$ # 跳转规则:所有主机域名地址自动跳转执行,主域名地址 RewriteRule ^/(.*)$ http://www.a.com/$1 [R=301,L] </IfModule>
3 )配置apache日志(错误日志与访问日志)
# 配置日志 # 配置错误日志(附加日志切割功能) ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/mydiscuz-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/mydiscuz-access_%Y%m%d.log 86400" combined env=!image-request
4 )防盗链
# 配置防盗链 # 配置转发条件 SetEnvIfNoCase Referer "^http://.*\.a\.com" local_ref SetEnvIfNoCase Referer ".*\.a\.com" local_ref SetEnvIfNoCase Referer "^$" local_ref # 匹配文件关键字 <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch>
5 )文件访问控制
#配置文件访问控制 <Directory /data/mydiscuz/> Order deny,allow Deny from all # 目录只对本机开放 Allow from 127.0.0.1 # 对管理页面进行管理 <filesmatch "(.*)admin(.*)"> Order deny,allow Deny from all # 管理页面只对本地和指定的IP方向 Allow from 127.0.0.1 </filesmatch> </Directory>
测试空格
6 )配置静态文件缓存
<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/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" </IfModule>
7 ) discuz伪静态配置
RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/group-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=group&fid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^/archiver/(fid|tid)-([0-9]+)\.html$ /archiver/index.php?action=$1&value=$2&%1