一、网站搭建前提

    搭建好LAMP运行环境

    下载网站程序,这里以Discuz X 3.2 作为示例

    Discuz 程序下载地址:

   简体中文GBK

   繁体中文BIG5

   简体UTF-8

   繁体UTF-8

二、安装,配置  

# 创建网站程序文件目录[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.confNameVirtualHost *:80
# 管理员邮件地址,一般不需要,刻意注释掉    #ServerAdmin webmaster@dummy-host.example.com# 主机地址    ServerName www.myd.com# 监控的文件目录    DocumentRoot "/data/mydiscuz"

    

     检测配置信息,重启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 -pEnter password:Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 7Server 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的用户,密码为mydiscuz123mysql> grant all on mydiscuz.* to 'mydiscuz'@'localhost' identified by 'mydiscuz123';Query OK, 0 rows affected (0.00 sec)# 退出结束mysqlmysql> 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 mylinuxNew password:Re-type new password:Adding password for user mylinux[root@mylinux ~]## 两次不同的加密方案[root@mylinux ~]# cat /data/mydiscuz/.htppasswdmylinux:fq4fMf7jZfuNY       <== 以随机字符进行加密[root@mylinux ~]# cat /data/mydiscuz/.htppasswdmylinux:$apr1$kSKaK0dy$EV/fh3twLG2d2oR99apo3.       <== 以MD5值进行加密[root@mylinux ~]#

       

        ② 将配置加入以下内容

# 用户认证    
            AllowOverride AuthConfig            # 输入对话框提示信息            AuthName "Please input your info"            # 指定字符类型            AuthType Basic            # 指定用户文件地址            AuthUserFile /data/mydiscuz/.htppasswd            require valid-user    

         效果示例 :当启用用户认证,输入主机地址,会弹出认证窗口,如下图:

       

        2 )域名跳转

        域名跳转 :主机有多个域名地址,有主域名地址,将所有指向主机的域名地址,自动跳转到默认的主域名地址上。

        配置示例

# 域名跳转(注 :跳转功能开启的前提是定义域名别名,将所有非主域名的地址定义到别名中)    
        # 开启域名跳转功能        RewriteEngine on        # 跳转条件一:第一个域名地址        RewriteCond %{HTTP_HOST} ^www.b.com [OR]        # 跳转条件二:第二个域名地址        RewriteCond %{HTTP_HOST} ^www.c.com$        # 跳转规则:所有主机域名地址自动跳转执行,主域名地址        RewriteRule ^/(.*)$ http://www.a.com/$1 [R=301,L]    

        3 )配置apache日志(错误日志与访问日志)

# 配置日志    # 配置错误日志(附加日志切割功能)    ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/mydiscuz-error_%Y%m%d.log 86400"    # 设置请求的内容    SetEnvIf Request_URI ".*\.gif$" p_w_picpath-request    SetEnvIf Request_URI ".*\.jpg$" p_w_picpath-request    SetEnvIf Request_URI ".*\.png$" p_w_picpath-request    SetEnvIf Request_URI ".*\.bmp$" p_w_picpath-request    SetEnvIf Request_URI ".*\.swf$" p_w_picpath-request    SetEnvIf Request_URI ".*\.js$" p_w_picpath-request    SetEnvIf Request_URI ".*\.css$" p_w_picpath-request    # 配置访问日志(附加日志切割功能)    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/mydiscuz-access_%Y%m%d.log 86400" combined env=!p_w_picpath-request

        4 )防盗链     

# 配置防盗链    # 配置转发条件    SetEnvIfNoCase Referer "^http://.*\.a\.com" local_ref    SetEnvIfNoCase Referer ".*\.a\.com" local_ref    SetEnvIfNoCase Referer "^$" local_ref    # 匹配文件关键字    
        Order Allow,Deny        Allow from env=local_ref    

        5 )文件访问控制

#配置文件访问控制    
            Order deny,allow            Deny from all            # 目录只对本机开放            Allow from 127.0.0.1               # 对管理页面进行管理            
            Order deny,allow            Deny from all            # 管理页面只对本地和指定的IP方向            Allow from 127.0.0.1                

测试空格

        6 )配置静态文件缓存

    ExpiresActive on    ExpiresByType p_w_picpath/gif  "access plus 1 days"    ExpiresByType p_w_picpath/jpeg "access plus 24 hours"    ExpiresByType p_w_picpath/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"

        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