rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构

2017年10月01日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~准备阶段~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一、安装前准备

1.1)新建一个目录用于存放安装的源码

#mkdir -pv /usr/local/src/lamp

#cd /usr/local/src/lamp

1.2)关闭防火墙

关闭selinux

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~安装阶段~~~~~~~~~~~~~~~~~~~~~~~~~~~~

二、Apache安装1)下载源码

源码获得

#wget http://apache.etoak.com/httpd/httpd-2.4.3.tar.gz

#wget http://apache.dataguru.cn/apr/apr-1.4.6.tar.bz2

#wget http://labs.mop.com/apache-mirror/apr/apr-util-1.5.1.tar.bz2

安装依赖包

yum install zlib-devel openssl-devel pcre-devel gcc gcc-c++ -y

2)Apache portable Run-time librariesAPR Apache可移植运行库的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。

2.1) APR(可移植运行库)

#tar fvxj apr-1.5.2.tar.bz2

#cd apr-1.5.2

#./configure --prefix=/usr/local/apr

#make

#make install

2.2)apr-util (apr工具包)

#tar fvxj apr-util-1.5.4.tar.bz2;apr-util-1.5.4

#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

#make

#make install

2.3) apr-iconv (apr转码工具包)

#tar xf apr-iconv-1.2.1.tar.bz2

#cd apr-iconv-1.2.1

# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr/

#make

# make install

2.4)安装Apache

#tar fvxz httpd-2.4.12.tar.gz;cd httpd-2.4.12

#yum install zlib-devel gcc gcc-c++ openssl-devel pcre-devel -y

#./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-module=so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-ab --disable-userdir --with-mpm=prefork --enable-nonportable-atomics --disable-ipv6 --with-sendfile

#make

#make install

2.5)启动apache并验证

(安装完毕可以

#cp /usr/local/apache/conf  /etc/httpd

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

这样方便配置和启动,注意在conf目录下的extra中有其他的配置文件可以在httpd.conf中调用)

#/usr/local/apache2/bin/apachectl -k start

2.6)#lsof -i :80 查看是否是httpd进程占用了80端口

# lsof -i:80

COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

httpd     54409   root    4u  IPv6  73636      0t0  TCP *:http (LISTEN)

httpd     54410 daemon    4u  IPv6  73636      0t0  TCP *:http (LISTEN)

httpd     54411 daemon    4u  IPv6  73636      0t0  TCP *:http (LISTEN)

httpd     54412 daemon    4u  IPv6  73636      0t0  TCP *:http (LISTEN)

httpd     54413 daemon    4u  IPv6  73636      0t0  TCP *:http (LISTEN)

httpd     54414 daemon    4u  IPv6  73636      0t0  TCP *:http (LISTEN)

~~~~~~~~~~~~~~~~~~~~~~~~~~~mysql~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#解压tar -xf boost_1_59_0.tar.bz2

(可以去www.boost.org上下载)

#groupadd mysql

#useradd -r -g mysql -s /sbin/nologin mysql

#yum remove mysql-server mysql mysql-devel -y

#yum install gcc gcc-c++ ncurses-devel libtool openssl-devel cmake –y

(cmake也可以用源码包安装,cmake3.6之后的版本安装方法可查看解压文件中的README文件)

#mkdir -pv /usr/local/mysql/data

#tar xf mysql-5.7.11.tar.gz

cd mysql-5.7.11

#cmake . \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data/ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DWITH_INNODBBASE_STORAGE_ENGINE=1 \

-DENABLE_LOCAL_INFILE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DMYSQL_USER=mysql \

-DWITH_DEBUG=0 \

-DWITH_EMBEDED_SERVER=0 \

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/src/boost_1_59_0(从MySQL 5.7.5开始Boost库是必需的)

/usr/src/boost_1_59_0

#make install

(注意:mysql6.7版本需要的磁盘空间建议不低于20G,否则会报错)

安装后设置

去源码包中拷贝配置文件和启动文件到/etc下

# cp support-files/my-default.cnf /etc/my.cnf     从源码中拷贝一份配置文件

#cp support-files/mysql.server /etc/init.d/mysqld   从源码中将启动脚本放到/etc/init.d/下并给予执行权限

#chmod 755 /etc/init.d/mysql

#chown –R mysql.mysql /usr/local/mysql/    由于MySQL程序是由mysql用户管理的,所以修改所有者和所属组为mysql
初始化数据库

在MySQL 5.76版本之后是:

#/usr/local/mysql/bin/mysqld
--initialize   --user=mysql
--datadir=/usr/local/mysql/data --basedir=/usr/local/mysql/

在MySQL 5.7.6版本以前是:

#sh scripts/mysql_install_db --user=mysql
--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

将安装目录中的命令 库文件 man手册链接到常用目录

#ln -s /usr/local/mysql/bin/* /usr/bin/

#ln -s /usr/local/mysql/lib/* /usr/lib/

#ln -s /usr/local/mysql/libexec/*
/usr/local/libexec

#ln -s /usr/local/mysql/share/man/man1/*
/usr/share/man/man1

#ln -s /usr/local/mysql/share/man/man8/*
/usr/share/man/man8

启动MySQL#service mysql start

验证启动 lsof -i :3306

# lsof -i :3306

COMMAND   PID  USER   FD
  TYPE DEVICE SIZE/OFF NODE NAME

mysqld  98409 mysql  
20u  IPv6 248953      0t0  TCP *:mysql (LISTEN)

注意:/usr/local/mysql/data/localhost.localdomain.err 
 ##error log 位置 如果起不来 看该日志方便查错使用

mysql  (注意如果你的mysql版本是5.5以上的  那么机器内存必须大于2G)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

四、php安装

安装php依赖包

#yum install libxml2-devel bzip2-devel
net-snmp-devel curl-devel libpng-devel freetype-devel libjpeg-devel zlib-devel
-y

下载字符编码转换工具并安装

libiconv

#wget
http://lnamp-web-server.googlecode.com/files/libiconv-1.14.tar.gz

#tar fvxz libiconv-1.14.tar.gz

#cd libiconv-1.14

#./configure --prefix=/usr/local/
--with-apr=/usr/local/apr

#make

#make install

编译时可能会遇到'gets' undeclared here (not in a function)的错误

解决办法:

vim libiconv-1.14/srclib/stdio.in.h

找到_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");用//注释掉即可

下载php加密工具并安装 
 两种加密工具 libmcrypt and  mhash

#wget
http://lcmp.googlecode.com/files/libmcrypt-2.5.8.tar.gz

#wget
http://lcmp.googlecode.com/files/mhash-0.9.9.9.tar.gz

#wget
http://lcmp.googlecode.com/files/mcrypt-2.6.8.tar.gz

libmcrypt

#tar fvxz libmcrypt-2.5.8.tar.gz

#cd libmcrypt-2.5.8

#yum -y install gcc-c++

#./configure && make &&
make install && /sbin/ldconfig

#cd libltdl/

#./configure --enable-ltdl-install
&& make && make install

mhash

#tar fvxz mhash-0.9.9.9.tar.gz;cd
mhash-0.9.9.9

#./configure && make &&
make install

#ln -s /usr/local/lib/* /usr/lib/

#ln -s /usr/local/bin/libmcrypt-config
/usr/bin/

Mcrypt(在装mcrypt之前需要先装mhash,否则会提示错误需要装libmhash)

#tar fvxz mcrypt-2.6.8.tar.gz

#cd mcrypt-2.6.8

#export LD_LIBRARY_PATH=/usr/local/lib:
LD_LIBRARY_PATH

#./configure && make &&
make install

(注意:在安装编译mcrypt时即使设置了软连接也可能会出现configure: error: *** libmcrypt was not found的报错,解决方法—执行命令export
LD_LIBRARY_PATH=/usr/local/lib: LD_LIBRARY_PATH,然后再进行编译即可)

#wget http://cn2.php.net/get/php-5.6.9.tar.bz2/from/this/mirror

#tar fvxj php-5.6.9.tar.bz2

#cd php-5.6.9

#./configure --prefix=/usr/local/php
--with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql/
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql --with-iconv-dir=/usr/local/ --enable-fpm
--with-fpm-user=apache --with-fpm-group=apache --with-pcre-regex --with-zlib
--with-bz2 --enable-calendar --disable-phar --with-curl --enable-dba
--with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir
--with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv
--with-mhash --enable-mbstring --with-mcrypt --enable-pcntl --enable-xml
--disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath
--with-snmp --disable-ipv6 --disable-rpath --disable-debug
--with-apxs2=/usr/local/apache/bin/apxs

#make ZEND_EXTRA_LIBS='-liconv'

#make install

#cp php.ini-production
/usr/local/php/etc/php.ini

修改Apache主配置文件 在加载模块处找到LoadModule php5_module       
modules/libphp5.so并在后面添加下面这行,目的是让Apache接受以.php结尾的请求

(sed -i '/^LoadModule
php5_module/a\AddType application/x-httpd-php .php' /etc/httpd/conf/httpd.conf)

或者

#vim /usr/local/apache2/conf/httpd.conf(vim
/etc/httpd/httpd.conf)

AddType application/x-httpd-php .php

然后在index.html的前面加上index.php打开php的索引界面

sed -i 's/index.html/index.php
index.html/' /etc/httpd/conf/httpd.conf

重启Apache

#killall httpd

#/usr/local/apache/bin/httpd

#(/etc/init.d/httpd restart)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~测试阶段~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#echo "<?php phpinfo()
?>" >  /usr/local/apache/htdocs/phpinfo.php

#firefox http://localhost/phpinfo.php

以上每步经过实际操作验证,可以完成实验

实验所用包如下:

LNMP架构

php无法像apache一样成为nginx的模块,因为nginx不像apache需要加载模块,所以,php和nginx结合只能将php做成服务,有两种方式,tcp/ip的方式和socket套接字的方式

tcp/ip方式:在/usr/local/php/etc/php-fpm.conf中修改listen = 127.0.0.1:9000

套接字方式:特点,比tcp方式快很多,缺点,nginx和php只能在同一台服务器上修改listen = /usr/local/php/php.socket

沿用前面的lamp架构中的mysql和php

nginx版本包:nginx-1.13.4.tar.gz

安装并配置nginx

#tar –xf 
nginx-1.13.4.tar.gz

#cd nginx-1.13.4

#yum –y install pcre-devel zlib-devel

#./configure –prefix=/usr/local/nginx  && make && make install

关闭apache

进入nginx配置文件

#vim /usr/local/nginx/conf/nginx.conf

打开location ~ \.php$支持.php页面并修改

fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;(修改红色部分)

启动 nginx

# /usr/local/nginx/sbin/nginx

把php做成服务

一:以TCP/IP的方式做成服务

1)设置启动管理脚本

#
cd /usr/src/php-5.6.9/sapi/fpm/

#
cp init.d.php-fpm /etc/init.d/php-fpm 启动管理脚本

#
chmod 755 /etc/init.d/php-fpm

2)设置fpm配置文件

#
cd /usr/local/php/etc/

#
cp php-fpm.conf.default  php-fpm.conf

进入配置文件

listen
= 0.0.0.0:9000 监听端口

access.log
= /var/log/ php-fpm.access.log   访问日志

error_log
=  /var/log/php-fpm.err.log      错误日志

#
/etc/init.d/php-fpm start   启动PHP服务

# lsof –i:9000

COMMAND 
PID   USER   FD  
TYPE DEVICE SIZE/OFF NODE NAME

php-fpm 3942   root   
7u  IPv4  13211     
0t0  TCP localhost:cslistener
(LISTEN)

php-fpm 3943 apache    0u 
IPv4  13211      0t0 
TCP localhost:cslistener (LISTEN)

php-fpm 3944 apache    0u 
IPv4  13211      0t0 
TCP localhost:cslistener (LISTEN)

测试页面

echo “<?php phpinfo() ; ?>”> /usr/local/nginx/html/index.php

访问页面 http://13.1.1.8/index.php

二.以socket套接字的方式做成服务(与mysql类似)

停止前面的php-fpm服务

#/etc/init.d/php-fpm stop

Gracefully shutting down php-fpm . done

1)修改PHP配置文件

#vim /usr/local/php/etc/php-fpm.conf

注释#listen
= 127.0.0.1:9000

添加listen
= /usr/local/php/php.socket (套接字路径)

启动php-fpm

# /etc/init.d/php-fpm start

starting php-fpm 
done

此时在/usr/local/php目录下就会发现多了一个php.socket文件

给php.socket文件权限

chmod  777  php.socket

2)修改nginx配置文件

进入nginx配置文件修改location ~ \.php$下的

fastcgi_pass  
unix:/usr/local/php/php.socket

启动nginx

/usr/local/nginx/sbin/nginx

测试:http://13.1.1.8/index.php

会发现多了一个sockets的模块

实验完成

rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构的更多相关文章

  1. 部署LAMP架构及其应用

    部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ...

  2. windows环境下面安装Apache2.4+MySql5.7+PHP5.6

    之前学习PHP一致是只用phpStudy集成开发环境,这对于新手而言无疑是帮助极大的,因为傻瓜式安装与使用方法减少了我们很多不必要的麻烦.但是作为一名合格的PHP开发人员,掌握PHP+MySQL+Ap ...

  3. 使用state模块部署lamp架构

    install_httpd: pkg.installed: - name: httpd httpd_running: service.running: - name: httpd - enable: ...

  4. docker部署LAMP架构并部署上线wordpress博客系统

    第一步:直接在镜像仓库拉取LAMP镜像 [root@ken-node3 ken]# docker pull tutum/lamp 第二步:查看已经获取到的镜像 [root@ken-node3 ken] ...

  5. 通过Playbook部署LAMP

    Ansible的PlayBook文件格式为YAML语言,所以希望你在编写PlayBook前对YAML语法有一定的了解,否则在运行PlayBook的时候经常碰到语法错误提示,这里我们通过介绍批量部署LA ...

  6. php5.5+apache2.4+mysql5.7在windows下的配置

    apache2.4下载和安装 下载apache2.4 https://www.apachelounge.com/download/VC11/ 提取解压目录Apache24到d:/dev/Apache2 ...

  7. Centos7+PHP5.6+MySQL5.7+Zabbix4.0部署

    Centos7+PHP5.6+MySQL5.7+Zabbix4.0部署 系统版本:CentOS Linux release 7.4.1708 (Core) 最小化安装 内核版本:3.10.0-693. ...

  8. windows安装PHP5.4+Apache2.4+Mysql5.5

    windows安装PHP5.4+Apache2.4+Mysql5.5 作者:星之宇 ┊ 时间:2012-10-18 14:27 ┊ 分类: 网站技术 ┊ 阅读:1232 ┊ 评论:16 最近听说PHP ...

  9. 01.WAMP搭建 [Win7+Apache2.4+MySQL5.7+PHP7

    WAMP搭建[Win7+Apache2.4+MySQL5.7+PHP7 一.背景 将电脑光驱位拆换成固态硬盘(120g),专门装了一个系统用于工作.之前一直使用PHPstudy和WAMP这种集成环境, ...

随机推荐

  1. JavaScript高级程序设计学习(四)之引用类型(续)

    一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...

  2. Kubernetes1.91(K8s)安装部署过程(八)-- kubernetes-dashboard安装

    kubernets-dashboard顾名思义是操作面板安装,也就是可视化管理机器,同意我们用镜像结合配置文件部署. 1.下载镜像: docker pull registry.docker-cn.co ...

  3. nightwatch-前端自动化测试工具安装

    最近再弄这个前端自动化测试工具,刚开始弄了几天,目前为止遇到很多坑,光是安装就费了不少时间,记录一下,以便自己忘记. 这里是它的官网,目前没找到中文版的官网,全英文,对我这个英语渣来说有点难理解. 一 ...

  4. Robust Real-time Object Detection学习

    健壮实时对象检测(robust real-time object detection) 高检测率(high detection rates), 一种新的图像表示方法,叫做积分图(integral im ...

  5. battery for stm32

    右边两个1N4148的压降都是0.7V,并且3.3-0.7=2.6V   &   3-0.7=2.3V  可见在电源3.3V正常供电的情况下,电池处于休息状态,这就有效避免了电池的不必要消耗:

  6. 稳压二极管&TVS二极管

    稳压二极管 稳压二极管利用的特性是:二极管被反向击穿之后,随着电流的变化,稳压二极管两端电压维持不变的特性: 普通二极管反向击穿后就坏了,但是稳压二极管却可以恢复,而且在被击穿后处在正常的工作状态: ...

  7. Omi框架学习之旅 - 组件 及原理说明

    hello world demo看完后其实基本的写法就会了. 但是omi中的组件是神马鬼?其实我也不知道组件是啥. 百度百科是这么说的: 是对数据和方法的简单封装.es6中,一个类其实也可以做到对方法 ...

  8. WPF中反转3D列表项

    原文:WPF中反转3D列表项 WPF中反转3D列表项                                                         周银辉记得在苹果电脑中有一个很酷的 ...

  9. Luogu P2279 [HNOI2003]消防局的设立

    这真的是一道SB题.去你的树形DP 我们看到题目就开始考虑贪心,怎么搞? 一个显然的思路,每次找出一个深度最大且未被覆盖的点,然后建一个消防局? 但这样的话,动用简单的人类思维就可以知道:我TM的还不 ...

  10. HNOI2019 JOJO

    HNOI2019 JOJO jojo这个坑填上了,然鹅还有序列这个题啊啊啊啊啊啊 膜 可持久化这个东西没有强制在线就是假的,直接建树dfs就行了 这题是kmp的加强版,每次会加一堆相同的数进来 先想一 ...