LAMP环境搭建

LAMP环境搭建-Apache

1. 引言

系统环境:CentOS 6.4-x86_64
Apache: 2.2 (apache官网只提供最新包, 无法下载旧版的源码包, 2.2各版本之间应该不会有较大区别).

使用yum安装apache时会自动安装其依赖包, 包括apr, apr-util, pcre等(还有mailcap什么的, 不过并不是必须的), 编译安装时也需要至少这个3个包.

yum安装依赖

可以使用yum安装依赖包, 然后编译apache时就不需要指定--with-pcre, --with-apr--with-apr-util的路径了. 不过很可能会出现版本不匹配的问题, 所以最好统一使用源码安装

yum install apr apr-devel apr-util apr-util-devel pcre pcre-devel

源码安装依赖

高端一点的方式是源码安装依赖

aprapr-util这里下载. 注意: 是Releases这一项中的, 而不是Source.(咳, 直接在这里吧, 方便一点)

两者configure时只需要指定--prefix(当然也可以不指定). 因为apr-util依赖于apr, 前者安装时需要指定后者的路径(--with-apr), 所以应该优先安装apr.

pcre官网, 貌似现在有pcre2了, 不知道其向前兼容性怎样, 还是直接使用pcre吧. 选择最新最稳定的就可以了. 这个也是只需要指定--prefix就可以了.

安装 apache

apache的configure选项很多, 需要对apache也有很深刻的了解才可以准确配置. 引用网上的一个安装步骤:

tar xf httpd-2.2.31.tar.bz2
cd httpd-2.2.31
./configure \
--prefix=/usr/local/apache \
--sysconfdir=/etc/httpd-2.2.31 \
--enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-deflate \
--with-z --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util \
--enable-modules=most --enable-mpms-shared=all \
--with-mpm=event
make && make install

各编译参数详解

–prefix安装路径
–sysconfdir配置文件路径
–enable-ssl支持SSL/TLS, 可以实现https访问
–enable-cgi支持CGI脚本(默认对非线程的MPM模式开启)
–enable-rewrite启用Rewrite功能
–enable-deflate支持压缩
–with-z使用指定的zlib库, 不指定路径会自动寻找
–with-pcre使用指定的PCRE库, 不指定路径会自动寻找
–with-apr指定apr安装路径
–with-apr-util指定apr-util安装路径
–enable-modules支持动态启用的模块, 可选参数有"all", “most”, “few”, “reallyall”
–enable-soDSO兼容, DSO=Dynamic Shared Object, 动态共享对象, 可实现模块动态生效
–enable-mpms-shared支持动态加载的MPM模块, 可选"all"
–with-mpm设置默认启用的MPM模式

Apache安装目录结构

/usr/local/apache/
├── bin    #存放启动或关闭httpd的脚本文件
├── build
├── cgi-bin  #cgi程序文件的存放目录
├── error    #发生服务器端错误时返回给客户端的错误页面
│   └── include   
├── htdocs  #Web页面所在的目录
├── icons   #存放httpd的图标文件
│   └── small
├── include  #存放头文件
├── logs     #httpd的日志文件
├── man      #帮助手册
│   ├── man1
│   └── man8
├── manual  #httpd的配置手册
│   ├── developer
│   ├── faq
│   ├── howto
│   ├── images
│   ├── misc
│   ├── mod
│   ├── platform
│   ├── programs
│   ├── rewrite
│   ├── ssl
│   ├── style
│   │   ├── css
│   │   ├── lang
│   │   ├── latex
│   │   ├── scripts
│   │   └── xsl
│   │       └── util
│   └── vhosts
└── modules  #存放httpd的模块

一些善后工作

以前从来没有考虑过这个, 参考文章给了我很大提醒. 除了修改配置文件中的pid/log路径, 修改PATH变量还有这几个步骤.

导出头文件
ln -sv /usr/local/apache/include /usr/local/include/httpd
导出man手册

编辑/etc/man.config, 添加入:

MANPATH /usr/local/apache/man
编写服务脚本

因为是编译安装, 不会自动生成服务脚本(service httpd start的那个httpd), 另外还要给其添加执行权限

一般是编辑为/etc/rc.d/init.d/httpd文件, 文件内容可以参考同目录下的其他服务脚本或者直接从使用yum安装httpd的此目录下copy一个. 这里就不抄了.

LAMP环境搭建-PHP

#!/bin/bash

## 常用依赖
yum install -y \
libxml2 libxml2-devel \
libvpx libvpx-devel libjpeg libjpeg-devel \
libpng libpng-devel \
libXpm libXpm-devel t1lib t1lib-devel \
freetype freetype-devel gd gd-devel \
curl libcurl-devel \
zlib zlib-devel bzip2 bzip2-devel openssl openssl-devel \
libmcrypt libmcrypt-devel mhash mhash-devel mcrypt

## 编译选项
#### --with-mysql=mysqlnd表示使用php官方的mysql驱动, 所以编译php前不需要安装mysql
./configure \
--prefix=/usr/local/php \
--enable-pcntl --enable-mysqlnd --enable-opcache --enable-sockets \
--enable-sysvmsg --enable-sysvsem  --enable-sysvshm \
--enable-shmop --enable-zip --enable-ftp --enable-soap --enable-xml --enable-mbstring \
--disable-rpath --disable-debug --disable-fileinfo \
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-pcre-regex --with-iconv --with-zlib --with-gd --with-xmlrpc --with-curl \
--with-mcrypt --with-openssl --with-mhash --with-imap-ssl

make && make install

编译选项

关于PHP源码编译应该首先了解的, 把它的configure选项分为两种:

  • 一种是编译时选择开启或关闭的特性.

  • 需要额外安装的模块与依赖.

根据这种原则, configure文件中的常用选项可以分为这4种情况.

  1. --prefix, --with-config-file-path这种关于php的安装路径, 配置路径, 扩展路径等;

除了--prefix在安装前必须指定, 其他的都可以在配置文件中指定其他路径.

  1. php语言内置特性, 使用configure中--enable-*选项开启或关闭.

这些选项应该是无法在php配置文件中修改的, 所以编译时应该准确指定, 不过默认值应该是官方推荐的比较好的选择, 除非有特别需要, 不必纠结这个.

  1. 安装时指定的依赖库(libxml2), 模块(mcrypt)等, 使用--with-*指定路径;

模块对于原生php语言来说不是必须的, 只是少了些额外功能而已, 但依赖库是必须要安装的, 比如libxml2, 这些是php本身的依赖, 如果没有这些, php是无法安装的.

  1. 配合使用的环境(apxs, mysql), 在configure文件中被称为SAPI, 应该是 服务器应用编程接口, 不过官网中这一节中大部分还是使用--enable-*开启或关闭的, 我自己把这些归为第2种情况.

关于这种情况, 如果php不是单纯的作为脚本执行, 而是需要处理http请求, 连接数据库等, 就需要apache有执行php程序的模块, 而php也需要有各种数据库的"驱动". 所以应该先安装apache与数据库, 再安装php. 其实也可以算上是一种模块.

扩展: 内置扩展与模块扩展

如网上所说, 一开始安装PHP的时候, 一般并不知道需要哪些扩展, 所以只有等到我们真正用到的时候才想办法去安装. 不过, 也会有些确定需要的扩展可直接编译进PHP环境.

这两者的区别是, 后者可以在php.ini配置文件中选择开启或者关闭, 而前者只能一直处于开启状态. 当然, 因为前者免去了模块查找, 加载等的时间, 速度会比后者快些; 而且通过后者安装的模块会出现在指定的模块路径中, 一般以.so结尾, 而前者不会.

安装扩展

关于模块源码

php源码包ext目录下有比较常用的依赖库与原生模块, 如openssl, zlib库, 还有curl, mcrypt模块等, 也可以去模块各自的官网上下载, 不过这两种都没有模块完整的依赖库(尤其是依赖库的依赖库…), 需要事先自行安装.

区别在于, 前者没有Makefile文件, 需要使用相同版本的php环境下的phpize工具建立php的外挂模块, 即只能为已经存在的php环境"添加"模块, 后者则是可以将模块编译到php环境内部.

其实如果对依赖库没有严格的版本限制, 直接使用yum安装各种依赖包更方便一些, 其他扩展可以在需要的时候再添加入php模块路径, 再在配置文件中开启即可.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨烦信息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值