通过编译php为httpd的模块实现lamp

简单罗列基础命令,只分享我的想法!

要求:把php编译成为httpd的模块,实现lamp,并且在httpd上面建立两个虚拟机,一个用于PHPAdmin,另外一个实现discuz。

环境:httpd-2.4.10,apr-1.5.0,apr-until-1.4.1,PHP-5.4.40,mariaDB-5.5.43和CentOS 6.6

一、首先编译httpd

编译2.4版本以上的httpd需要首先安装1.4版本以上的apr和apr-until

1)编译apr-1.5.0,这个软件类似于一个php的“虚拟机”,使用同一种php的代码都可以在上面运行。

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

2)编译apr-until-1.4.1。

./configure --prefix=/usr/local/apr-util –with-apr=/usr/local/apr
make && make install

3)编译httpd。

如果启用pcre功能,需要安装pcre-devel包。

yum install prce-devel
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24--enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/--enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

(--enable-so:支持DSO机制,动态装卸载模块;--with-zlib:网上实施压缩的压缩库;--enable-cgi:启动cgi模块,主要用于httpd与php之间的通信;--enable-modules:启用哪些模块;--enable-ssl:支持ssl功能;--enable-mpms-shared:启用共享mpm模块;--with-mpm默认启动的MPM模块;)

httpd的管理命令加入到PATH

vim /etc/profile.d/httpd.sh
PATH=/usr/local/apache/bin:$PATH
. /etc/profile.d/httpd.sh

对httpd的include进行处理

ln -sv /usr/local/apache/include/ /usr/include/httpd

更新man.config

vim /etc/man.config

添加一行

MANPATH /usr/local/apache/man

创建apache用户

useradd -r apache

编译/etc/httpd24/httpd.conf主要配置文件

修改以下两行,把用户变为apache

user apache
group apache

因为我原来安装过httpd的rpm包,所以,直接复制启动脚本之后进行修改

cp /etc/init.d/httpd /etc/init.d/httpd24
vim /etc/init.d/httpd24

修改以下三项即可

apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/var/run/httpd.pid}

检验一下/etc/init.d/httpd24start,看80端口是否启动。

把httpd24添加到服务启动项中

chkconfig --add httpd24
chkconfig httpd24 on

httpd服务启动,截图如下。

图1

二、通用二进制格式安装MariaDB-5.4.43

1)有的是空间,直接分区,然后把数据文件放到新的分区中,如果想要充分利用空间,可以做LVM,新分区/dev/sda7,命令如下

pvcreate /dev/sda7
vgcreate myvg /dev/sda7
lvcreate -L 10G -n mylv2 myvg2

格式化

mkfs.ext4 /dev/myvg2/mylv2

挂载,然后可以添加到/etc/fstab中,开机自动启动

mount /dev/myvg2/mylv2 /mariadb/mydata/mdat

2)解压缩MariaDB的安装包,需要创建一个链接/user/local/mysql指向解压缩后的安装包(因为压缩包中的脚本指向的目录就是/usr/local/mysql)。

ln -sv /root/mariadb-5.5.43-linux-x86_64 /usr/local/mysql

mysql的管理命令加入到PATH

vim /etc/profile.d/mysqld.sh
PATH=/usr/local/mysql/bin:$PATH
. /etc/profile.d/mysqld.sh

对httpd的include进行处理

ln -sv /usr/local/mysql/include/ /usr/include/mysqld

更新man.config

vim /etc/man.config

添加一行

MANPATH /usr/local/mysql/man

把函数库添加到系统自动搜索的路径下面

vim /etc/ld.so.conf.d/mysql.conf

添加一行

/usr/local/mysql/lib

编辑完毕,退出,ldconfig,之后可以通过ldconfig-p | grep "/usr/local/mysql"看是否已经加载。

更改安装目录的属主和属组

cd /usr/local/mysql
chown -R root:mysql ./*

更改存放数据目录的属主和属组

chown -R mysql:mysql /mariadb/mydata/

安装mysql的配置文件,mysql搜索的配置文件依次是/etc/my.cnf->/etc/mysql/my.cnf->~/.my.cnf

mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf

初始化数据库到指定的目录

cd /user/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/mariadb/mydata/

编辑/etc/mysql/my.cnf

vim /etc/mysql/my.cnf

添加以下两行

datadir = /mariadb/mydata
innodb_file_per_table = on

根据cpu个数修改以下一行,线程并发个数由来:CPU个数乘以2

thread_concurrency = 4

添加启动脚本

cd/usr/local/mysql
cp ./support-files/mysql.server /etc/init.d/mysqld43

添加到开机启动的服务中

chkconfig --add mysqld43
chkconfig mysqld43 on

检验是否启动,截图如下

/etc/init.d/mysqld43 start

图2

三、把php-5.4.40编译安装成为httpd的模块,从而实现lamp的组合。

1)安装依赖包(devel子包主要是包含一些include文件)

yum install libxml2-devel libmcrypt-devel bzip2-devel –y

2)编译

./configure --prefix=/user/local/php --with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config--with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring --with-freetype-dir--with-jpeg-dir --with-zlib --with-libxml-dir=/usr --enable-xml--enable-sockets --with-mcrypt --with-bz2--with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/
make && make install

3)安装主配置文件

mkdir /etc/php
cp php.ini-production /etc/php/php.ini

四、编辑/etc/httpd24/httpd.conf,支持php

vim /etc/httpd24/httpd.conf

添加以下三行

DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

五、测试php

1)编辑index.php

vim /usr/local/apache/htdocs/index.php
<?
         phpinfo();
?>

重新启动httpd24

刷新网页即可,截图如下

图3

图4

六、httpd中创建虚拟机

打开虚拟机配置文件

vim /etc/httpd24/httpd.conf

修改以下一行

Include /etc/httpd24/extra/httpd-vhosts.conf

编辑httpd-vhosts.conf配置文件

vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost 172.16.49.1:80>
    #[email protected]
    DocumentRoot"/usr/local/apache/vhost1"
    ServerName www.a.com
    #ServerAliaswww.dummy-host.example.com
    ErrorLog"logs/error_log"
    CustomLog"logs/access_log" combine
    <Directory"/usr/local/apache/vhost1">
             AllowOverride None
         Require all granted
    </Directory>
</VirtualHost>
<VirtualHost 172.16.49.1:80>
    #ServerAdmin [email protected]
    DocumentRoot"/usr/local/apache/vhost2"
    ServerName www.b.com
    #ServerAliaswww.dummy-host.example.com
    ErrorLog"logs/error22_log"
    CustomLog"logs/access22_log" combine
    <Directory"/usr/local/apache/vhost2">
             AllowOverride None
         Require all granted
    </Directory>
</VirtualHost>

七、phpAdmin配置(省略,上一篇博客有写到),此次实验是通过vhost1显示,只有截图。

图5

八、discuz在vhost2中显示

1)查看README,如下图:

图6

2)修改upload目录中config和data目录的权限

chmod –R 777 config/ data/ uc_client/ uc_server/

3)通过浏览器访问http://www.b.com/upload/install/,如下图

图7

4)继续下一步进行配置

图8

图9

有志同道合的“战友”可以加我qq:865765761。

时间: 2024-10-10 14:45:26

通过编译php为httpd的模块实现lamp的相关文章

Httpd2.4.10+Mysql5.6.21+Php5.61编译安装(PHP集成为HTTPD的模块)

一.编译安装Httpd2.4.10 1.解决依赖关系 httpd-2.4.10需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这里选择使用编译源代码的方式进行,在Apache官方网站下载apr 与apr-util码源包. 1)编译安装apr # tar xf apr-1.5.1.tar.bz2 # cd apr-1.5.1 # ./configure --prefix=/usr/local/apr # make

NGINX编译安装后添加新模块的方法

刚忙完研发又有新的需求过来,测试服务器的nginx需要有HttpUpstreamRequestHashModule和HttpStubStatusModule:擦!安装软件环境时怎么不说清楚:妹的,悲剧. 测试服务器崩溃的是不是我安装的软件,天啊.赶紧搞吧!!! 环境:centos 6.4 64位 编译安装nginx 1:查看nginx版本和安装时间带的具体参数  /usr/local/nginx/sbin/nginx  -V 2:下载相应的版本的nginx源码包[nginx-1.5.11.tar

【转】如何单独编译Android源代码中的模块

原文网址:http://blog.csdn.net//article/details/6566662/ 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包syst

把编译安装的httpd 实现服务脚本,通过service和chkconfig 进行管理

把编译安装的httpd 实现服务脚本,通过service和chkconfig 进行管理 1 编译安装httpd 把httpd编译安装在/app/httpd/目录下. 2 在/etc/rc.d/init.d/目录下新建一个文件httpd 这个文件的目的在于让service 命令可以管理编译安装的httpd服务. 文件内容如下: [[email protected] ~]# cat /etc/rc.d/init.d/httpd #!/bin/bash # # httpd Start up the h

如何单独编译Android源代码中的模块

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6566662 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为

LAMP编译安装之———httpd

LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据 库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和 Java/J2EE架构相比,LAMP具有Web资源丰富.轻量.快速开发等特点,微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的 优势,因此LAMP无论是性能.质量还是价格都是企业搭

Linux系统裁减之,制作一个极度精简的Linux-5-重新编译login去除对pam模块的依赖

第5章 重新编译login去除对pam模块的依赖 在阅读这篇博文之前,建议先阅读我的前4篇博文,而且最好按顺序阅读:(不然可能会觉得我写得不知所云,呵呵!) 第1篇:Linux系统裁减之,制作一个极度精简的Linux-1 http://blog.51cto.com/linuxprince/2045703 第2篇:Linux系统裁减之,制作一个极度精简的Linux-2-用脚本实现自动拷贝命令和依赖库文件 http://blog.51cto.com/linuxprince/2046142 第3篇:L

centos7下源码编译方式安装httpd

语法: chkconfig --list [name] chkconfig --add name chkconfig --del name chkconfig [--level levels] name <on|off|reset> chkconfig [--level levels] name 参考文章http://www.cnblogs.com/jipeng87/p/6308725.html 前言 Apache至少需要apr.apr-util.pcre组件的支持. APR(Apache p

LAMP组合的编译安装(httpd 2.4+mysql 5.5+php 5.4)

一.何为LAMP Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注.从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强