小Q:其实我就想一直像个孩子一样,不愿看太多的事,听太多的不是,单纯走完
这段简单的路;但是事与愿违,总得像个墙一样直面社会。
昨天构建了LAMP架构,今天练习构建了一个简单的 discuz 论坛,然后进行了一
些配置, 现在组成了一个本地的论坛。
下载安装discuz:
wget (curl -O) http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
或去 comsenz网站找需要的
最好下载到 /data/www 下
第一和数据库放一块,第二名字好分辨 在www目录下解压
进入目录 : cd /data/www
移动文件 : mv upload/* ./
upload下放的都是程序文件,都移出来,然后
删除文件 : rm -rf upload/ readme/ utility/ 压缩包
查看Apache有无启动: ps aux | gerp httpd
我们要使用虚拟主机的配置文件,但是他还没打开,要先去Apache主配置文件中打开这开关
vim /usr/local/apache2/conf/httpd.conf
include conf/extra/httpd-vhost.conf 找到他去掉注释即可(/vhost搜索)
vim /usr/local/apache2/conf/extra/httpd-vhost.conf 进入编辑虚拟主机的配置
decumentroot = "/data/www" discuz的位置路径
servername = www.test.com 可用自定义的域名
serveralias = 域名的别名 其他的注释或者删除就好,用不到
/usr/local/apache2/bin/apachectl -t 检测Apache配置文件格式是否正确
/usr/local/apache2/bin/apachectl graceful 重加载配置,就可以访问discuz了
配置本地DNS服务 /etc/hosts 加入格式:IP 域名 域名别名
DNS服务:就是去 ping一个域名的时候,自动解析设置好的IP
=windows下的 c/windows/system32/dirves/etc/hosts 可用写字板打开去设置,windows本地的DNS配置
我在这一步遇到了错,因为我没去在wndows下设置IP与域名的对应关系,所以在windows
下我无法用域名解析IP;
进入主配置文件 /usr/local/apache2/conf/httpd.conf
将 deny from all 改为 Allow from all 允许所有用户来访问
检测 ・・・・・・・・・・・ -t
重新加载 ・・・・・・・・・・・・・・・・・graceful
windows浏览器输入域名开始安装操作 ,会发现好多不可用的文件
查看 ps aux | grep httpd 发现文件都在以deamon用户的身份在跑
chown -R deamon:deamon 所有不可用文件
此时下一步 要创建mysql 数据库了
在这我们最好设置一个PATH ,因为总输入 /usr/local/mysql/bin/mysql太长了; 先检查一下有无其他设置的mysql,有的话先删除
vim /etc/profile.d/path.sh
加入 export PATH= $PATH=/usr/local/mysql/bin
保存后 source !$ 一下,就可以用了 which查看了
输入 mysql
创建数据库:create database discuz
创建用户: grant all on discuz to ‘teng’@‘localhost’ identhed by ‘密码’
去网站设置一下
完成
Apache用户认证:
说白了就是给要访问的路径设一个权限,不让没有账号密码的进去;
在www目录下建一个这样的路径,比如 mkdir aaa
然后 cd aaa 拷贝个文件用来验证操作 cp /etc/passwd ./1.txt
配置虚拟主机文件(vhost):vim /usr/local/apache2/conf/httpd-vhost.conf
添加以下内容格式,即添加一个认证
<Directory /data/www/aaa>
AllowOverride
AuthName "zi ding yi" 在登录要认证界面的框内显示
AuthType Basic
AuthuserFile /data/.htpasswd 存放用户密码的文件路径
require valid-user
</Directory>
因为有时要用到Apache2的路径,因为这个路径下有好多命令经常用,最好给他定一个PATH
将 /usr/local/apache2/bin 添加进上上次建的/etc/profile.d/path.sh 文档即可
设置密码命令: htpasswd -c /data/.htpasswd user1 在下面输入设置的密码
添加用户的话:htpasswd /data/.htppasswd user2
不要加 -c 了,否则会覆盖前一个用户,htpasswd 就是/usr/local/apache2/bin下的命令
输入网址,输入上面设置的路径,输入账户密码,即可访问。
设置默认虚拟机:
有时候我们设置完之后,会有一些问题,即我们只要在自己电脑设置windows本地DNS服务,就是修改 c/windows/system32/dirves/etc/host 的指向,就可以为指定IP添加的域名
然后解析到我们设置网站,这样很不安全。
解决思路就是去我们服务端的虚拟主机配置文件里,更改默认虚拟主机为一个不可指向的地方;而默认虚拟主机就是第一个主机;
vim /usr/local/apache2/conf/extra/httpd-vhost.conf
在我们设置自己域名的虚拟主机之上另加一个,即添加一个默认虚拟机指向,格式如下:
<VirtualHost *:80>
DocumentRoot "/tmp/123" 随意指定的的目录,设权限为600 让deamon不可访问即可
ServerName 123.com 随意配置的域名
</VirtualHost>
这样只要我们不在本地添加IP的域名,别的地方添加的都无效
域名301跳转:
还有一种情况,当我们设置多个域名时,第一我们不好记,记得不专一;
第二我们在一个路径下设置了个东西,再进入时,浏览器也很混乱的不知去那个域名下;
因此,我们要设置其中之一为主要的,当输入其他的会自动跳转到这个主要域名下。
进入虚拟主机的配置文件下,添加一个自动跳转的模块, rewrite moudle (shared)
可用/usr/local/apache2/bin/apachectl -M 查看
模块放在虚拟主机这个大模块下,在认证模块的上面;
模块格式:
<If Module mod_rewrite.c>
RewriteEngine on
RewriteCone %{HTTP_HOST} ^www.teng.com$
(如果有两个或多个别名的时候,改为
RewriteCone %{HTTP_HOST} ^www.teng.com$ [OR]
RewriteCone %{HTTP_HOST} ^www.xun.com$1 )
RewriteRule ^/(.*)$ http://www.test.com$1 [R=301.L]
</If Module>
正则表达以 / 开头,后边任意,指的主域名www.test.com/后边任意的路径
R301表示永久跳转,设置域名的时候最好用它,对浏览器好;
R302 表示临时跳转 L 表示 Last ,最后结尾了
问题总结: