这一节的内容比较杂,主要是把前面一些没讲的知识整合一下,然后安装个Discuz为后面实验做个准备。
(可能前面这些有点无聊,没办法,环境没搭好实验也做不下去,如果不想安装discuz,也可以换成wordpress等)
PS:后面的实验比较多,光是整理讲的顺序就浪费了不少时间了,尽量只挑一些重要或常用的讲,这里还是提前列出下后面会介绍的东西:
(暂时只介绍Apache的,mysql调优、慢查询、php放到更后面介绍)
    --3种虚拟主机配置:基于域名Domain、IP、Port
    --用户认证
    --域名跳转+过滤其他恶意域名绑定
    --自定义访问日志+错误日志(比如很多没有意义的记录就不需要记录了)
    --日志切割
    --配置静态文件缓存
    --防盗链
    --访问控制(很基础也很重要、同时还会比较2.2与2.4的差异)
    --URL重定向(如通过rewrite防爬虫等)
    --网页查看server-info、server-status(这里就必须做访问控制了,通过网页可以更方便的查看服务器状态与配置信息)
    --...

   

杂项:

1、1)对于apache来说,解析php只需要调用libphp5.so模块,根本就不再需要php程序(也就是说即使你把/usr/local/php删了apache也不会有任何影响),如图:
csr
两个实际上大小是差不多的。

2)实际上php和web服务器结合还有另外一种常见方式:通过fastcgi结合,(比如nginx与php就是以这种形式结合的)这种方式php必须自己开启一个服务php-fpm,等待nginx的请求;当用户请求动态页面的时候,nginx与php-fpm交互,然后将交互的结果返回给用户;

所以对于处理大量动态请求的时候,apache的性能就会优于nginx;当用户请求动态内容时,apache调用libphp5.so模块处理请求,然后返回结果;因为是内部的模块,所以对php的支持是非常好的,同时也不需要额外与其他进程通信,所以耗费的就相对少了;

相反,因为apache是以模块结合php的(同时apache还加载了很多其他模块),而nginx则属于轻量级的,所以如果只是大量的静态页面请求,nginx的性能就比apache要好的多了。

3)实际上php也只是一种CGI程序而已(CGI:Common Gateway Interface 公共网关接口);用于处理web服务器动态请求的程序就叫做CGI程序,比如perl、python、C、C++等,也都可以称为CGI程序;
虽然像perl、python也有许多web框架,但毕竟不是专门用于开发CGI的,相对php而言处理web动态请求还是更繁琐些的;
Apache当然也是支持使用其他程序开发的CGI的,只是现在相对比较少用而已;如下图:
csr

# 2、将/path/ 加入环境变量PATH中(记得把mysql、apache、php等加入PATH)
# 比较好的方法应该自定义个文本到/etc/profile.d/下再source入PATH中,这样以后开机也可以自动加载了
[[email protected] www]# vim /etc/profile.d/path.sh
export PATH=$PATH:/path/
[[email protected] www]# . /etc/profile.d/path.sh    # '.' <=> "source"

# 3、查看nginx编译参数:# nginx -V
   查看apache编译参数:# cat /usr/local/apache2/build/config.nice
   查看php编译参数:# php -i |grep --color "Configure Command"
   查看mysql编译参数:# cat /usr/local/mysql/bin/mysqlbug | grep --color "CONFIGURE_LINE=" (这里是免编译的所以结果为空了)

   

安装Discuz3.2

1. 下载解压discuz到/data/www
# mkdir /data/www
# cd /data/www
# wget  http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
# unzip Discuz_X3.2_SC_GBK.zip
# mv upload/*  .

2、 配置虚拟主机
# vim /usr/local/apache2/conf/httpd.conf     取消虚拟主机配置文件的注释(去掉前面的'#')
Include conf/extra/httpd-vhosts.conf

# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 加入:
<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.csr.com
</VirtualHost>
并注释掉其他虚拟主机配置

3、www.csr.com域名并不是自己的,而自己去需要使用域名测试怎么办?
编辑/etc/hosts文件加入:127.0.0.1 www.csr.com

原因:DNS域名解析的时候系统会先到/etc/hosts里面看有没有对应的IP地址,后面才会去公网的DNS解析;

/etc/hosts优先级比DNS高是因为/etc/nsswitch.conf里面设置的:
hosts: files dns
files在dns前面,所以解析的时候会先查找files的。

同理,windows下要想到浏览器上面测试也可以这样加,只是windows路径藏的比较深:
C:\Windows\System32\drivers\etc\hosts

4、浏览器输入www.csr.com开始安装,因为开始选的是GBK编码的,所以可能会出现乱码:

 

csr
csr
csr

这样就显示正常了  

5、开始安装时提示目录不存在、不可写,那是因为权限还没给全

 

csr

# 根据提示的错误给daemon相应的权限,httpd默认用户在httpd.conf的这地方定义(不过没必要去改默认用户的):<IfModule unixd_module>
    User daemon
    Group daemon
</IfModule># cd /data/www# chown -R daemon:daemon  data  uc_server/data  uc_client/data config 6、添加discuz数据库和一个用户,并把权限授权与他# mysql -uroot -p123456mysql> create database discuz;
mysql> grant all on discuz.* to 'csr'@'localhost' identified by 'xxxxxx';
mysql> quit# mysql -ucsr -pxxxxxx  验证是否可以登录7、接着就下一步无脑安装了...

 

csr