LinuxLAMP架构之以模块方式让php和httpd搭档工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinuxLAMP架构之以模块方式让php和httpd搭档工作相关的知识,希望对你有一定的参考价值。

LAMP就是:Linux,Apache,mysqlphp的首字母缩写。


实验环境

Linux :CentOS-3 2.6.32-431.el6.x86_64

Apache:httpd-2.4.16.tar.gz

Mysql :mysql-5.5.24.tar.gz

PHP   :php-5.6.11.tar.bz2


安装顺序为:Apahce --> Mysql --> PHP


实验步骤


方便实验先关闭iptables和selinux

[[email protected] ~]# service iptables stop

[[email protected] ~]# setenforce 0


安装以下编译工具和依赖包

[[email protected] ~]# yum -y install gcc \

> gcc-c++ \

> make \

> cmake \

> pcre-devel 


安装apr和apr-util

apr是为了搭建apache的运行环境


创建apr和apr-util安装目录

[[email protected] ~]# mkdir /usr/local/apr

[[email protected] ~]# mkdir /usr/local/apr-util


将源码包解压

[[email protected] ~]# tar xf /mnt/apr-1.5.2.tar.gz -C /usr/local/src/

[[email protected] ~]# tar xf /mnt/apr-util-1.5.4.tar.gz -C /usr/local/src/

切换到源码包所在路径

[[email protected] ~]# cd /usr/local/src/apr-1.5.2/

配置apr指定安装目录

[[email protected] apr-1.5.2]# ./configure --prefix=/usr/local/apr

以上配置完成如果没有报错则执行编译并安装

[[email protected] apr-1.5.2]# make && make install

切换到apr-util源码目录下

[[email protected] ~]# cd /usr/local/src/apr-util-1.5.4/

配置apr-util安装目录并指定apr所在路径

[[email protected] apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr

以上无报错即可编译并安装

[[email protected] apr-util-1.5.4]# make && make install


编译apache

创建apache根目录

[[email protected] ~]# mkdir /usr/local/apache

解压并切换至apache源码包目录下

[[email protected] ~]# tar xf /mnt/httpd-2.4.16.tar.gz -C /usr/local/src/

[[email protected] ~]# cd /usr/local/src/httpd-2.4.16/


定制httpd


[[email protected] httpd-2.4.16]# ./configure \

--prefix=/usr/local/apache \     //指定安装目录

> --enable-so \          

//支持动态共享模块,否则php无法以模块方式和apache结合工作

> --enable-rewirte \            //支持URL重写

> --enable-cgi \                //支持CGI

> --enable-cgid \            //使用event或者worker的mpm模式要启用cgid

> --enable-modules=most \    

> --enable-mods-shared=most \         //启动共享模块 

> --enable-mpms-shared=all \        //支持所有mpm模块

> --with-apr=/usr/local/apr \        //支持所有mpm模块

--with-apr-util=/usr/local/apr-util        //指定apr-util位置

以上无报错即可编译并安装

[[email protected] httpd-2.4.16]#make && make install


启动httpd

[[email protected] ~]# /usr/local/apache/bin/apachectl start


测试看httpd是否工作正常

服务器的IP地址为:192.168.10.250

技术分享


安装Mysql数据库

安装数据需要先安装ncurses-devel

[[email protected] mysql-5.5.24]# yum -y install ncurses-devel

创建Mysql安装目录

[[email protected] ~]# mkdir /usr/local/mysql

创建mysql用户,"-s"指定登录shell

[[email protected] ~]# useradd -s /sbin/nologin mysql

解压Mysql并切换至源码包所在目录

[[email protected] ~]# tar xf /mnt/mysql-5.5.24.tar.gz -C /usr/local/src/

[[email protected] ~]# cd /usr/local/src/mysql-5.5.24/


使用cmake工具定义mysql

[[email protected] mysql-5.5.24]# cmake \

> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

指定安装目录

> -DMYSQL_DATADIR=/home/mysql \

数据文件路径,如果不指定就是安装目录下的data

> -DSYSCONFDIR=/etc \

配置文件路径

> -DWITH_INNOBASE_STORAGE_ENGINE=1 \

安装INNOBASE存储引擎

> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

安装ARCHIVE存储引擎

> -DWITH_BLCAKHOLE_STORAGE_ENGINE=1 \

安装BLACKHOLE存储引擎

> -DWITH_READLINE=1 \

能够使用loadinfile来批量导入mysql数据

> -DWITH_SSL=system \

支持基于SSL的会话

-DWITH_SSL=bundled

> -DWITH_ZLIB=system \

压缩库

> -DWITH_LIBWRAP=0 \

> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

默认套接字文件路径

> -DEXTRA_CHARSETS=all \

支持所有字符集

> -DDEFAULT_CHARSET=utf8 \

默认的字符集

> -DDEFAULT_COLLATION=utf8_general_ci

字符集排序规则


以上如果没有报错则执行编译并安装数据库

[[email protected] mysql-5.5.24]# make && make install


为了系统安全将mysql目录下属组改为mysql

[[email protected] ~]# chown :mysql /usr/local/mysql/


初始化数据库

[[email protected] mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db \

> --user=mysql \

> --ldata=/var/lib/mysql \

> --basedir=/usr/local/mysql \

> --datadir=/home/mysql


创建配置文件

[[email protected] mysql-5.5.24]# cp support-files/my-large.cnf /etc/my.cnf


创建启动脚本,加入到service管理

[[email protected] mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld


配置开机启动

[[email protected] mysql-5.5.24]# chkconfig --add mysqld

[[email protected] mysql-5.5.24]# chkconfig mysqld on

添加执行权限

[[email protected] mysql-5.5.24]# chmod 755 /etc/init.d/mysqld


将mysql添加到$PATH环境变量中

[[email protected] mysql-5.5.24]# vim /etc/profile.d/mysql.sh

输入以下内容

export PATH=$PATH:/usr/local/mysql/bin

运行脚本使其立即生效

[[email protected] mysql-5.5.24]# . /etc/profile.d/mysql.sh


启动mysql

[[email protected] mysql-5.5.24]# service mysqld start


为了后面测试方便授权一个账号

进入mysql数据库

[[email protected] ~]# mysql -u root

授权tom用户所有权限

mysql> GRANT all ON *.* TO ‘tom‘@‘192.168.10.250‘ IDENTIFIED BY ‘123456‘;

刷新授权信息

mysql> flush privileges;




安装PHP

默认apache只能支持静态的网站要想支持动态网站需要与PHP搭配工作

php与httpd工作有三种方式分别为:CGI、Modules、FastCGI


下面以Modules方式安装PHP


创建安装目录

[[email protected] ~]# mkdir /usr/local/php

解压PHP并切换至PHP源码包所在目录

[[email protected] ~]# tar xf /mnt/php-5.6.11.tar.bz2 -C /usr/local/src

[[email protected] ~]# cd /usr/local/src/php-5.6.11/


安装GD库以及关联程序

[[email protected] php-5.6.11]# yum -y install \

> libjpeg-devel \

> libpng-devel \

> freetype-devel \

> zlib-devel \

> gettext-devel \

> libXpm-devel \

> libxml2-devel \

> fontconfig-devel \

> openssl-devel \

> bzip2-devel



配置PHP

[[email protected] php-5.6.11]# ./configure \

> --prefix=/usr/local/php \

指定安装路径

> --with-mysql=/usr/local/mysql \

指定mysql位置

> --with-openssl \

开启openssl功能

> --with-mysqli=/usr/local/mysql/bin/mysql_config \

另一种mysql访问接口

> --enable-mbstring \

> --with-freetype-dir \

加载freetype字体库

> --with-jpeg-dir \

支持图片

> --with-png-dir \

> --with-zlib \

让数据文件先压缩在传送

> --with-libxml-dir=/usr \

指定xml库目录

> --enable-xml \

开启xml支持

> --enable-sockets \

让PHP支持套接字

> --with-apxs2=/usr/local/apache/bin/apxs \

将mysql编译成apache模块

> --with-config-file-path=/etc \

PHP配置文件位置

> --with-config-file-scan-dir=/etc/php.d \

> --with-bz2 \

> --enable-maintainer-zts

如果apache的mpm使用的是event或worker时要加,不是不用


以上如果不报错即可编译并安装

[[email protected] php-5.6.11]# make && make install


创建配置文件

[[email protected] php-5.6.11]# cp php.ini-production /etc/php.ini



编辑httpd配置文件,搜索“/AddType”添加如下内容让apache支持php格式页面

[[email protected] ~]# vim /usr/local/apache/conf/httpd.conf

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

技术分享



继续搜索“/DirectoryIndex”在此处添加一下内容以支持php主页面

LoadModule    php5_module    modules/libphp5.so

DirectoryIndex index.php index.html

技术分享


将httpd的默认主页修改为“.php”,并输入以下代码进行测试

切换至网页文件目录

[[email protected] ~]# cd /usr/local/apache/htdocs/

改为index.php

[[email protected] htdocs]# mv index.html index.php

编辑文件删除原有内容,添加如下内容

<?php

phpinfo();

?>


重启httpd服务

[[email protected] htdocs]# /usr/local/apache/bin/apachectl restart


访问服务器测试

技术分享出现以上界面说明php与httpd搭档成功


关联数据库测试


编辑网页文件删除原有内容输入以下代码

[[email protected] htdocs]# vim index.php

<?php

    $conn=mysql_connect(‘192.168.10.250‘,‘tom‘,‘123456‘);

    if($conn)

        echo "数据库连接成功!!";

    else

        echo "数据库连接失败!!";

?>

技术分享


访问服务器测试

技术分享

以上就是lamp架构的内容了

以模块方式使php和httpd搭档工作,把PHP编译成httpd的模块,不能独立执行。当httpd需要用到php进程的时候直接从磁盘加载进来,在它内部运行即可不需要启动一个新的进程。

本文出自 “SunJ” 博客,谢绝转载!

以上是关于LinuxLAMP架构之以模块方式让php和httpd搭档工作的主要内容,如果未能解决你的问题,请参考以下文章

C语言之以函数指针结构体方式实现面向对象的思想

Linux LAMP构架搭建

linux架构学习第二十七天 编译安装LAMP(php-fpm)

授之以渔-运维平台发布模块二(Jenkins篇)

持之以恒的练习算法,让基础更扎实,让逻辑思维更强,加油

SpringSession 架构设计