11.6 MariaDB安装
解压
进入mariadb目录
初始化
拷贝配置文件
编辑配置文件和启动脚本
下面这个是用来做mysql主从复制的
修改配置在下面修改
修改启动脚本
启动
是否启动成功
11.7/11.8/11.9 Apache安装
简易官网下载2.4版本。实际上我们所说的Apache真正的名字是httpd。
下载解压t:
#cd 指定目录
#wget
#tar
配置编译参数:
#cd http-2.2.24
#vim INSTALL
#./configure \
--prefix=/usr/local/apache2 \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre
--prefix 指定安装到哪里,
--with-included-apr \
底层的一个模块,是数据可以跨平台使用。
--enable-so 表示启用DSO
DSO是Dynamic Shared Objects(动态共享目标)的缩写,它提供了一种在运行时将特殊格式的代码在程序运行需要时,将需要的部分从外存调入内存执行的方法。Apache 支持动态共享模块,也支持静态模块,静态的话,会把需要的目标直接编译进apache的可执行文件中,相比较动态,虽然省去了加载共享模块的步骤,但是也加大了二进制执行文件的空间,变得臃肿。
--enable-deflate=shared 表示共享的方式编译deflate,
既然可以动态共享当然也可以静态方式编译deflate模块。什么是动态和静态?apache编译安装完成后会生成一个核心的二进制可执行文件叫做 httpd,这个文件作为核心文件,提供服务时就是它在处理用户的请求,但是有一些功能,比如提到的expires就是配置静态文件、图片过期时间的,也就是说图片可以再用户浏览器的临时缓存目录中缓存多久。这些功能是作为httpd的一个扩展模块来工作的,那么这种扩展模块有两种存在的方式,一种是直接在编译的时候和httpd文件拧到一起,组成一个体积大的文件,这种叫做静态。另一种,扩展模块作为独立的文件存在,只有在使用这个模块时再去调用它,这种叫做动态共享。动态的好处是,核心文件httpd比较小,模块随时用随时加载,耗费内存小队较少。静态的优势,在服务启动时,会把所有模块加载,用到时很快执行,效率较高。
--enable-expires=shared 共享的方式编译 expires
--enable-rewrite=shared 共享的方式编译 rewrite
#yum install -y pcre pcre-devel apr apr-devel 【make之前安装这些包,避免出错】
#make
#echo $?
#make install
#echo $?
启动验证
# /usr/local/apache2/bin/apachectl start 【启动程序】
# ps aux |grep httpd 【验证是否启动】
# netstat -nlp 【检查监听端口是不是80】
常用选项:
-M 列出所有模块,主要是查看动态模块
# /usr/local/apache2/bin/apachectl -M
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
deflate_module (shared)
expires_module (shared)
rewrite_module (shared)
# ls /usr/local/apache2/modules/ 【动态模块存放路径,下图绿色的为动态共享模块】
# ls /usr/local/apache2/bin/httpd 【静态模块存放文件】
静态文件模块是将上述静态模块全部编译层进这个httpd文件内。
-L 【只列出静态模块】
# /usr/local/apache2/bin/apachectl -l
-t 【查看配置文件有没有错误】
# /usr/local/apache2/bin/apachectl -t
Syntax OK
配置文件路径 /usr/local/apache2/conf/httpd.conf
NOTE:
1、重新加载httpd有两种选项
# /usr/local/apache2/bin/apachectl restart
# /usr/local/apache2/bin/apachectl graceful
resatart这个选项要先把httpd进程杀死,再重新加载。
graceful,原来的进程还在,只是把配置文件重新加载
2、工作模式
#cd /usr/local/src/httpd-2.2.24
#./configure --help
--with-mpm=MPM Choose the process model for Apache to use.
MPM={beos|event|worker|prefork|mpmt_os2|winnt}
--with-mpm=MPM这个选项可以指定工作模式,常用的是 worker , prefork, event。
问题及错误
1、配置参数的时候出现错误
error: mod_deflate has been requested but can not be built due to prerequisite failures #yum install -y zlib-devel
2、为了避免在make的时候出现错误,所以最好是提前先安装好一些库文件:
yum install -y pcre pcre-devel apr apr-devel
3、只要apache正常的话,就能解析php是吧?若是php解析不对的话 是不是就是apache不正常了?
很大一部分原因是apache配置不对,有时候是因为php编译的有问题,没有自动产生libphp5.so, 还有时候是大家粗心写错了php文档,无法解析。
4、为什么这里不用yum工具安装apache等工具 而要用编译安装呢。
编译安装有个好处,和系统结合度更好,就好比量身订做衣服一样,yum安装就是买现成的,不一定合身。有时,我们为了快速部署可以考虑yum。另外下载好的包最好保留着。
5、httpd: Could not reliably determine the server's fully qualified domain name, using 172.28.150.4 for ServerName。我该怎么解决????
● 这个不是错误信息,你可以在你httpd.conf中,ServerName那一行前面的#删除掉。即,定义个ServerName就可以了。/usr/local/apache2/conf/httpd.conf
6、如果在生产环境安装apache的时候./configure也是这么几个选项吗?
信铭哥,得永生。
7、apache为啥不用把解压完的数据移动到/usr/local/apache?为什么安装apache没有用二进制免编译的包?
mysql用二进制包是一个特例。 如果apache想用,那就直接yum install -y httpd
8、分享一下错误:libtool: install: error: cannot install `libaprutil-1.la' to a directory not ending in /usr/local/apache/lib
出现这种错误有可能是以前安装过Apache没卸载干净,可以make clean一下,然后删除解压的源码包重新解压编译就可解决
9、如果编辑不指定模块是动态共享,是不是会把apache所有支持的模块都以静态的方式编译到时/bin/httpd 中?如果选择动态,是不是我想把那个模块编译成动态,就编译那个模块?
在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个,那么所有的默认模块为静态。
10、 linux 下httpd服务开机启动
方法一: cp /usr/local/apache/bin/apachectl /etc/init.d/httpd vi /etc/init.d/httpd
在#!/bin/sh后面加入下面两行
#chkconfig:345 85 15
#description: Start and stops the Apache HTTP Server.
然后 chmod +x /etc/rc.d/init.d/httpd chkconfig --add httpd
然后可以用setup命令进入服务设置,设置为开机启动
方法二: 将服务加到/etc/rc.d/rc.local中 vi /etc/rc.d/rc.local 添加以下内容 /usr/local/apache/bin/apachectl start
11、Apache服务器出现错误500有哪些可能呢?单独建立的静态1.php能正常解析和显示! 出现500就去看错误日志吧。
500往往是php的代码问题,如果你只有apache还没有跑php,那你就去看apache的错误日志。
12、用apache自定义headers的用途是什么。经过测试可以在命令行下显示我们自定义的语句。但是在浏览器中却没显示有关我们自定义的header。
有时候会去看header信息。比如,我们用100台服务器跑了一个网站,假如一台出了问题,我们可以通过header信息区分具体的web服务器