首页 > 服务器学习 > Linux > LAMP环境源码安装①apache源码安装及添加网站配置
2016
12-17

LAMP环境源码安装①apache源码安装及添加网站配置

首先是更新一下yum源,这里我们使用了阿里云的yum源。

yum -y install wget

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

yum makecache生成缓存是新的yum源生效

yum -y install epel-release

安装第三方软件库EPEL,这样就可以使用yum安装yum源中本来没有的一些第三方软件了,如libmcrypt libmcrypt-devel mcrypt mhash等。

安装大多数情况下LAMP环境所需的依赖软件库:

yum -y install gcc zlib-devel zlib libjpeg libjpeg-devel libpng libpng-devel libxml2 libxml2-devel freetype freetype-devel php-gd gd gcc-c++ libstdc++-devel mysql-libs ncurses-devel cmake pcre-devel pcre libcurl libcurl-devel libmcrypt libmcrypt-devel mcrypt mhash mhash-devel bzip2-devel bzip2

手动安装apr和apr-util:

下载apr-1.5.2.tar.bz2 :http://www.linuxfromscratch.org/blfs/view/svn/general/apr.html

下载apr-util-1.5.4.tar.bz2 :http://www.linuxfromscratch.org/blfs/view/svn/general/apr-util.html

解压:tar -jxvf apr-1.5.2.tar.bz2      进入解压目录cd apr-1.5.2

./configure --prefix=/usr/local/apr然后make && make install

同样的安装apr-util配置参数为 :./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

apache源码安装:

./configure --prefix=/usr/local/apache \

--sysconfdir=/etc/httpd --enable-modules=all --enable-so --enable-mods-shared=all \

--with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

--sysconfdir=/etc/httpd :指定apache配置文件的路径

--enable-modules=all:表示编译安装所有默认模块。

--with-pcre --with-apr --with-apr-util指定apache中默认模块中没有的模块(这些模块需要预先安装对应的软件)

--with-port=80 :设置apache的监听端口,默认80端口,一般该选项不写,直接使用默认值即可

静态编译(--enable-mods)和动态编译(--enable-mods-shared):

当configure参数即没有使用--enable-mods-shared=all或者--enable-[module]=shared这2个中的一个,那么所有的默认模块为静态(也可以通过--enable-mods=all指定静态),就是编译的时候所有的模块自己编译进httpd 这个文件中,启动的时候这些模块就已经加载进来了,也就是可以使用了,通常:<ifmodule> </ifmodule> 来配置。所以大家看到的配置都是<ifmodule module.c>这种格式的。

当configure参数使用--enable-mods-shared=all或者--enable-[module]=shared 那么所有的默认模块或指定模块为动态编译,就是编译的时候所有的模块不编译进httpd文件中,也就是启动的时候根本不会加载这个模块, 而是给你一个module.so 文件,你一定要使用 loadmodule 这个语法来加载,这个模块才有效。

--enable-[module]=shared|static :单独指定某个模块使用动态编译或静态编译。

总结三点:

1) 如果编译参数中有--enable-mods-shared=all ,那么所有模块都将会以动态模式来编译,除非特别指定某个模块--enable-[module]=static 为静态编译 。

2)如果编译参数中有--enable-mods=all指定所有静态方式的话,还可以用--enable-[module]=shared来动态加载某个指定模块。

3)如果编译参数中既有--enable-mods=all静态编译又有--enable-mods-shared=all动态编译,那么最终会使用动态编译。。

为Apache添加服务脚本:

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

当源码安装完apache以后,运行/usr/local/httpd2/bin/apachectl start命令来打开apache服务,第一次开启服务会有一个提醒(只是一个警告,apache服务会正常启动),因为在配置文件httpd.conf中的ServerName没有配置

httpd命令 :httpd命令是Apache HTTP服务器程序。直接执行程序可启动服务器的服务。

httpd [-hlLStvVX][-c<httpd指令>][-C<httpd指令>][-d<服务器根目录>][-D<设定文件参数>][-f<设定文件>]

-c<httpd指令> 在读取配置文件前,先执行选项中的指令。

-C<httpd指令> 在读取配置文件后,再执行选项中的指令。

-d<服务器根目录> 指定服务器的根目录。

-D<设定文件参数> 指定要传入配置文件的参数。

-f<设定文件> 指定配置文件。

-h 显示帮助。

-l 显示服务器编译时所包含的模块。

-L 显示httpd指令的说明。

-S 显示配置文件中的设定。

-t 测试配置文件的语法是否正确。

-v 显示版本信息。

-V 显示版本信息以及建立环境。

-X 以单一程序的方式来启动服务器。

添加网站配置介绍

Listen 80

<virtualhost *:80>

ServerName domain

ServerAlias

DocumentRoot /wwwroot/web/test

DirectoryIndex index.php index.html

ErrorDocument 404 /errpage/404.html

CustomLog "|/usr/local/httpd2/bin/rotatelogs /wwwroot/web_log_dir/%Y_%m_%d 86400" web

php_admin_value open_basedir /wwwroot/web/test:/tmp

<IfModule mod_deflate.c>

DeflateCompressionLevel 7

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php

AddOutputFilter DEFLATE css js html htm php

</IfModule>

<Directory /wwwroot/web/test>

Options +Includes +FollowSymLinks -Indexes

AllowOverride All

Order Deny,Allow

Allow from All

#Require all granted

</Directory>

</virtualhost>

Listen :单独设定监听端口。

ErrorDocument :为指定的状态码设定文件路径。

如果404.html的小于512字节的话,那么IE会认为这个错误页面不够“友好”,会忽视掉的

如果为ErrorDocument指定了一个外部的URL,Apache将会向客户端发送一个重定向指令来告诉它在哪里找到这个文档,哪怕这个文档最后还是在这个服务器上。客户端无法接收到原始的错误状态代码,取而代之的是一个重定向状态代码。

CustomLog :访问日志的存放位置和使用的格式,相对路径是httpd的安装目录。

php_admin_value open_basedir /wwwroot/web/qingheluo_com:/tmp:

把PHP脚本操作限制在web目录可以避免程序员使用copy函数把系统文件拷贝到web目录,两个路径用:隔开

<IfModule mod_deflate.c> :启用压缩传输

DeflateCompressionLevel 7 :压缩程度的等级,从1到9,9是最高等级。预设可以采用7,以维持耗用处理器效能与网页压缩质量的平衡。

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php :对指定的MIME类型文件压缩

AddOutputFilter DEFLATE css js html htm php :对指定后缀的文件压缩,如果后面没有值(SetOutputFilter DEFLATE)则对所有文件进行压缩,不建议使用,因为已经是压缩过的图片格式如jpg,音乐档案如mp3、压缩文件如zip之类的,就没必要再压缩了,因为这种档案你一开放服务器传输时压缩,处理器会高消耗的处理并且耗用时间很长,而且就算长时间压缩完成,大小也一样

如果使用PHP函数之类压缩过的文件,httpd服务是不会再次压缩的。

正确区分mod_deflate和mod_gzip:所谓gzip,在早期的apache 1.x系列版本中没有内建网页压缩技术,所以需要用gzip压缩,apache2官方在开发的时候,就已经把网页压缩考虑进去,内建了mod_deflate模块,所以apache2就不需要使用到mod_gzip了,这两者的工作原理是类似的,还有启用mod_deflate这个网页压缩的模块,功能和效率和mod_gzip是差不多的,甚至还好一些,就不需要再用mod_gzip模块了。

Options:配置在网站根目录使用哪些特性,加号表示添加该值代表的功能,减号表示禁止该值表示的功能常用的值和基本含义如下:

Includes :允许使用mod_include模块提供的服务器端包含功能

ExecCGI: 在该目录下允许执行CGI脚本。

FollowSymLinks: 在该目录下允许文件系统使用符号连接。

Indexes: 当用户访问该目录时,如果找不到DirectoryIndex指定的主页文件,则返回该目录下的文件列表。

AllowOverride :允许存在于.htaccess文件中的指令类型

设置为None时,.htaccess文件将被完全忽略

设置为All时,.htaccess文件中可以使用所有的指令

设置为AuthConfig时允许使用与认证授权相关的指令

设置为FileInfo时允许使用控制文档类型的指令

设置为Indexes时允许使用控制目录索引的指令

设置为Limit时允许使用控制主机访问目录和文件的授权的指令

Order :控制主机访问目录和文件的授权,后面的Deny代表禁止,Allow代表允许,Deny和Allow中间必须有且仅有一个逗号,单词的大小写不限

Deny和Allow的先后顺序很重要,第一步先判断前面的语句,第二步判断后面的语句,第三步所有不符合前面的语句的都按照后面的执行。如:

order deny,allow

allow from 218.20.253.2

deny from 218.20

order后面deny在前面,就会先判断下面的deny语句不管这句话在不在前面,即deny from 218.20这句话,表示禁止所有IP地址以218.20开头的主机访问,第二步判断allow语句,即allow from 218.20.253.2,表示这个IP可以访问,最后一步所有不符合前面语句即deny语句的都按照后面的即allow执行,综合起来就是IP地址以218.20开头的除218.20.253.2外的主机不能访问,其他的IP地址都可以正常访问。

指定多个IP那么IP之间用空格隔开即可。

Require all granted :自apache2.4.x开始代替order语句:apache2.4.x配置要加上这句话,否则报403的错误。

Require all granted :允许所有请求访问资源

Require all denied :拒绝所有请求访问资源

使用反向代理(需要在httpd.conf文件中开启对应模块):

<virtualhost *:80>

ServerName domain

ServerAlias

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / 目标url地址

ProxyPassReverse / 目标url地址

</virtualhost>

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。