LAMMP源码环境搭建

一、LAMMP环境简介

LAMMP是linux、Apache、Mysql、Memcahed、PHP的首字母缩写

LAMMP网络拓扑图(待补)

工作模式:

apache响应回复用户html请求并转发php程序给FastCGI

FastCGI把php程序执行结果响应给apache

mysql响应用户的数据的写入和查询

memcached根据用户请求的程序决定是否需要memcached服务器将数据缓存至内存中

系统环境:

LAMMP分别搭建在4台CentOS6.4.x86_64服务器上并且安装好编译环境

地址规划:

memcached  192.168.1.105

apache  192.168.1.106

php     192.168.1.107

mysql   192.168.1.108

二、Apache源码安装

安装apr

[[email protected] ~]# tar xf apr-1.4.6.tar.bz2 
[[email protected] apr-1.4.6]# ./configure --prefix=/usr/local/apr
[[email protected] apr-1.4.6]# make && make install

安装apr-util

[[email protected] ~]# tar xf apr-util-1.5.2.tar.bz2
[[email protected] apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[[email protected] apr-util-1.5.2]# make && make install

yum方式安装pcre-devel

[[email protected] ~]# yum install pcre-devel

安装httpd

[[email protected] ~]# tar xf httpd-2.4.6.tar.bz2 
[[email protected] httpd-2.4.6]# ./configure --prefix=/usr/local/apache24 --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=event
[[email protected] httpd-2.4.6]# make && make install

为httpd提供服务脚本

[[email protected] ~]# vim /etc/rc.d/init.d/httpd24
#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve #           HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
if [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi
 
# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}
 
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
 
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
 
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache24/bin/apachectl     
httpd=${HTTPD-/usr/local/apache24/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/usr/local/apache24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
 
start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc -p ${pidfile} -d 10 $httpd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}
 
# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
        status -p ${pidfile} $httpd
    RETVAL=$?
    ;;
  restart)
    stop
    start
    ;;
  condrestart)
    if [ -f ${pidfile} ] ; then
        stop
        start
    fi
    ;;
  reload)
        reload
    ;;
  graceful|help|configtest|fullstatus)
    $apachectl [email protected]
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
    exit 1
esac
 
exit $RETVAL

为脚本赋予执行权限

[[email protected] ~]# chmod +x /etc/rc.d/init.d/httpd24

添加环境变量

[[email protected] ~]# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache24/bin:$PATH   #添加此行

设置开机启动

[[email protected] ~]# chkconfig --add httpd24
[[email protected] ~]# chkconfig httpd24 on

修改主机名为www.xiaoya.net

启动服务

[[email protected] ~]# service httpd24 start

浏览器访问测试一下

显示 It works!

httpd服务成功启动

三、通用二进制格式安装mysql

生产环境中通常将数据库文件存放在逻辑卷(LVM)上

新建逻辑卷并挂载在/mydata目录上(创建过程省略...)

新建用户mysql并让其对/mydata/data有属主属组权限

[[email protected] ~]# mkdir /mydata/data
[[email protected] ~]# groupadd -r mysql
[[email protected] ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
[[email protected] ~]# chown -R mysql:mysql /mydata/data

查看当前系统是否在监听3306端口,有则关闭

将二进制包解压至/usr/local下

[[email protected] ~]# tar xf mysql-5.5.38-linux2.6-x86_64.tar.gz -C /usr/local/
[[email protected] local]# ln -sv mysql-5.5.38-linux2.6-x86_64 mysql #创建链接
[[email protected] local]# chown -R root:mysql /usr/local/mysql/* #修改mysql下所有文件属组为mysql

建立并修改配置文件

[[email protected] support-files]# cp my-huge.cnf /etc/my.cnf 
[[email protected] support-files]# vim /etc/my.cnf
thread_concurrency = 4  #修改为物理核心数的2倍
datadir = /mydata/data #添加此行

建立服务脚本

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

启动服务之前先初始化

[[email protected] mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data #指定用户和数据目录

现在可以启动服务了

[[email protected] ~]# service mysqld start
[[email protected] ~]# chkconfig --add mysqld
[[email protected] ~]# chkconfig  mysqld on

导出man文档

[[email protected] ~]# vim /etc/man.config
MANPATH /usr/local/mysql/man  #添加此行

导出头文件

[[email protected] ~]# ln -sv /usr/local/mysql/include /usr/include/mysql

导出库文件

[[email protected] ~]# echo ‘/usr/local/mysql/lib‘ > /etc/ld.so.conf.d/mysql.conf
[[email protected] ~]# ldconfig

添加mysql环境变量

[[email protected] ~]# vim /etc/profile.d/mysql.sh
[[email protected] ~]# . /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH

成功登录mysql

[[email protected] ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.38-log MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql>

四、PHP源码安装

安装libxml

[[email protected] ~]# yum -y install libxml2-devel

安装bzip2

[[email protected] ~]# yum -y install bzip2-devel

安装mcrypt(yum默认源没有此安装包,需要额外源)

我这里是直接下载到本机用rpm安装

[[email protected] ~]# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm 
[[email protected] ~]# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

解压安装php

[[email protected] ~]# tar xf php-5.4.30.tar.gz 
[[email protected] php-5.4.30]# ./configure --prefix=/usr/local/php --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-fpm --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

使用PHP.5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了 (使用--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd在本地服务器可以不用安装mysql)

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

建立php配置文件

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

建立php-fpm服务脚本

[[email protected] fpm]# cp init.d.php-fpm /etc/rc.d/init.d/php-fpm
[[email protected] ~]# chmod +x /etc/rc.d/init.d/php-fpm #赋予执行权限

建立并修改php-fpm配置文件

[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
[[email protected] etc]# vim php-fpm.conf
listen = 192.168.1.107:9000 #修改

添加开机启动

[[email protected] ~]# chkconfig --add php-fpm
[[email protected] ~]# chkconfig php-fpm on

启动php-fpm

[[email protected] ~]# service php-fpm start

安装xcache

[[email protected] ~]# tar xf xcache-3.0.3.tar.bz2 
[[email protected] ~]# cd xcache-3.0.3
[[email protected] xcache-3.0.3]# /usr/local/php/bin/phpize 
[[email protected] xcache-3.0.3]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-xcache
[[email protected] xcache-3.0.3]# make && make install

安装结束后出现如下行

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

整合xcache和php

将xcache提供的样例配置导入php.ini

[[email protected] xcache-3.0.3]# mkdir /etc/php.d
[[email protected] xcache-3.0.3]# cp xcache.ini /etc/php.d/

修改xcache.ini

[[email protected] ~]# vim /etc/php.d/xcache.ini 
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so

五、整合Apache和PHP

1.httpd配置

[[email protected] ~]# vim /etc/httpd24/httpd.conf 
注释掉DocumentRoot "/usr/local/apache24/htdocs"
启用mod_proxy.so和mod_proxy_fcgi.so模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

载入虚拟主机配置文件

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

让apache能识别php格式的页面,并支持php格式的主页

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

设置index.php为默认主页

 DirectoryIndex index.php index.html

配置虚拟主机

[[email protected] ~]# vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost *:80>
     DocumentRoot  "/web/htdocs" 
     ServerName   www.xiaoya.net
     ProxyRequests  Off  #关闭正向代理
     ProxyPassMatch  ^/(.*\.php)$ fcgi://192.168.1.107:9000/web/htdocs/$1(fastcgi服务存放php文件的目录,需要在php服务器上建立) 
  <Directory "/web/htdocs">
      Options  none
      AllowOverride none
      Require all granted
   </Directory>
</virtualHost>

#把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://192.168.1.107:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

2.PHP设置

[[email protected] ~]# mkdir -pv /web/htdocs

建立测试网页文件index.php

[[email protected] ~]# vim /web/htdocs/index.php
<?php
  phpinfo();
?>

本地配置好hosts在浏览器输入www.xiaoya.net 测试

上图显示PHP工作正常并且已成功整合xcache

测试PHP与mysql连接

[[email protected] ~]# vim /web/htdocs/sqltest.php
<?php
 $link=mysql_connect(‘192.168.1.108‘,‘root‘,‘‘ );
 if ($link)
    echo "Success...";
 else
    echo "Failure..."
?>

浏览器输入http://192.168.1.106/sqltest.php

成功连接mysql

六、源码安装memcached

先安装libevent

[[email protected] ~]# tar xf libevent-2.0.21-stable.tar.gz 
[[email protected] libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent
[[email protected] libevent-2.0.21-stable]# make && make install

导出库文件

[email protected] ~]# vim /etc/ld.so.conf.d/libevent.conf
/usr/local/libevent/lib #添加此行
[[email protected] ~]# ldconfig

安装memcached

[[email protected] ~]# tar xf memcached-1.4.15.tar.gz
[[email protected] ~]# cd memcached-1.4.15
[[email protected] memcached-1.4.15]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
[[email protected] memcached-1.4.15]# make && make install

提供服务脚本

[email protected] bin]# vim /etc/rc.d/init.d/memcached
#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
. /etc/rc.d/init.d/functions
## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
RETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"
start() {
        echo -n $"Starting $desc (memcached): "
        daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE 
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success && touch $lockfile || failure
        echo
        return $RETVAL
}
stop() {
        echo -n $"Shutting down $desc (memcached): "
        killproc $prog
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success && rm -f $lockfile || failure
        echo
        return $RETVAL
}
restart() {
        stop
        start
}
reload() {
        echo -n $"Reloading $desc ($prog): "
        killproc $prog -HUP
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success || failure
        echo
        return $RETVAL
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        [ -e $lockfile ] && restart
        RETVAL=$?
        ;;       
  reload)
        reload
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
   *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac
exit $RETVAL
[[email protected] bin]# chmod +x /etc/rc.d/init.d/memcached 
[[email protected] bin]# service memcached start

七、整合Memcached和PHP

安装memcache

[[email protected] ~]# tar xf memcache-2.2.7.tgz 
[[email protected] ~]# cd memcache-2.2.7
[[email protected] memcache-2.2.7]# /usr/local/php/bin/phpize 
[[email protected] memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
[[email protected] memcache-2.2.7]# make && make install

建立memcache.ini文件

[[email protected] memcache-2.2.7]# vim /etc/php.d/memcache.ini
extension =  /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so

重启php-fpm服务

[[email protected] memcache-2.2.7]# service php-fpm restar

测试Memcached和PHP连接,建立测试文件test.php

[[email protected] ~]# vim /web/htdocs/test.php
<?php
$mem = new Memcache;
$mem->connect("192.168.1.105", 11211)  or die("Could not connect");
$version = $mem->getVersion();
echo "Server‘s version: ".$version."<br/>\n";
$mem->set(‘hellokey‘, ‘Hello World‘, 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
$get_result = $mem->get(‘hellokey‘);
echo "$get_result is from memcached server.";
?>

浏览器输入http://192.168.1.106/test.php 测试

memcached服务器上查看

[[email protected] bin]# telnet 192.168.1.105 11211
Trying 192.168.1.105...
Connected to 192.168.1.105.
Escape character is ‘^]‘.
get hellokey
VALUE hellokey 0 11
Hello World
END

以上信息表明emcached工作正常

-----------------------------LAMMP环境全部搭建完毕。

LAMMP源码环境搭建,布布扣,bubuko.com

时间: 2024-10-13 07:01:32

LAMMP源码环境搭建的相关文章

opencv2.4.9中stitching_detailed源码环境搭建

今天做了一下老师给的第一套题,第一题是判断一个字符串是否在另一个字符串中:做了一下,感觉有好多种写法,java中的类真的好多啊,要掌握好一些基本类的用法: package com.exam.e120; public class java1 { public static void main(String[]args){ String str1,str2; str1="I am Tom, I am from China."; str2="Tom"; int i=str

Tomcat7源码环境搭建

在网上看了很多有关源码环境搭建的文章,几乎都以失败而告终.好了,废话不多说,下面分享一下我的源码搭建之旅,希望能对热爱分析源码的童鞋有所帮助. Tomcat源码编译需要安装ant,且需要同时安装jdk6和jdk7,,缺一不可. 第一步:去ant官网下载zip格式的安装文件,解压到本地,然后配置好环境变量,具体可以参考网站的资料来做. 第二步:将Tomcat源码解压到本地,然后在根目录找到默认的配置文件:build.properties.default,配置jdk7的路径,这个很重要一定要配置,作

Linux Kafka源码环境搭建

本文主要讲述的是如何搭建Kafka的源码环境,主要针对的Linux操作系统下IntelliJ IDEA编译器,其余操作系统或者IDE可以类推. 1.安装和配置JDK确认JDK版本至少为1.7,最好是1.8及以上.使用java -version命令来查看当前JDK的版本,示例如下: [email protected]:~/workspace/software/hadoop-2.7.3/bin$ java -version java version "1.8.0_191" Java(TM)

【ZooKeeper系列】3.ZooKeeper源码环境搭建

前文阅读: [ZooKeeper系列]1.ZooKeeper单机版.伪集群和集群环境搭建 [ZooKeeper系列]2.用Java实现ZooKeeper API的调用 在系列的前两篇文章中,介绍了ZooKeeper环境的搭建(包括单机版.伪集群和集群),对创建.删除.修改节点等场景用命令行的方式进行了测试,让大家对ZooKeeper环境搭建及常用命令行有初步的认识,也为搭建ZooKeeper的开发环境.生产环境起到了抛砖引玉的作用.也介绍了用Java来实现API的调用,包括节点的增.删.改.查.

web应用之LAMP源码环境搭建

目录 一.LAMP环境的介绍   1.LAMP环境的重要性   2.LAMP组件介绍   二.Apache源码安装   1.下载Apache以及相关依赖包   2.安装Apache以及相关依赖包   2-1.安装Apache依赖包   2-2.安装apr   2-3.安装apr-util   2-4.安装pcre   2-5.安装Apache   3.配置Apache   3-1.启动Apache服务   3-2.注册Apache为服务   3-3.加入Apache服务到chkconfig中  

【一步一步】Spring 源码环境搭建

平时项目中基本上都会用到spring,但是源码还没有深入的了解过.趁这段时间稍微空闲点,开始研究下spring 源码.下面是spring 源码的环境搭建. 主要分为如下步骤: ①安装jdk,gradle,git ②从GitHub下载spring framework 代码 ③编译导入ide中. 第一步安装过程略过. jdk安装成功后通过java -v 输出: gradle 安装整个后通过输入gradle -verson 由于我是之前安装过所以版本要老一些. 以及git 以上第一步已经完成了. 第二

Lucene 学习之一:源码环境搭建

一直想抽点时间系统的学习下Lucene ,今天把Lucene 源码学习环境搭建了一下.下面描述一下环境搭建过程. 开发环境的配置(lucene-4.10.2 + Eclipse): 1:下载最新源码:把jar包lucene-4.10.2,和java源码lucene-4.10.2-src 都下载下来. 下载地址:http://mirror.bit.edu.cn/apache/lucene/java/4.10.2/ 2:在Eclipse 安装lucene-4.10.2 java源码. 新建JAVA

Dubbo源码环境搭建

零.前言 Dubbo已由阿里巴巴贡献给Apache基金会,项目托管在github上 一.下载源码 https://github.com/apache/incubator-dubbo.git https://github.com/apache/incubator-dubbo-ops.git https://github.com/apache/incubator-dubbo-spring-boot-project.git 项目说明 : Dubbo Dubbo主项目代码 Dubbo Ops 与Dubb

Spring源码阅读 源码环境搭建(一)

ring 源码阅读的搭建(一) 一 下载spring源码 进入官方网页:https://spring.io/projects/spring-framework 进入相关的github位置,下载zip包 解压: 二 安装Gradle 下载Gradle: 进入下载页面:https://gradle.org/releases/ 配置环境变量: 解压到制定目录下 配置项: GRADLE_HOME: C:\Program Files\gradle-4.10.2 Path中添加:%GRADLE_HOME%\