rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构
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架构的更多相关文章
- 部署LAMP架构及其应用
部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ...
- windows环境下面安装Apache2.4+MySql5.7+PHP5.6
之前学习PHP一致是只用phpStudy集成开发环境,这对于新手而言无疑是帮助极大的,因为傻瓜式安装与使用方法减少了我们很多不必要的麻烦.但是作为一名合格的PHP开发人员,掌握PHP+MySQL+Ap ...
- 使用state模块部署lamp架构
install_httpd: pkg.installed: - name: httpd httpd_running: service.running: - name: httpd - enable: ...
- docker部署LAMP架构并部署上线wordpress博客系统
第一步:直接在镜像仓库拉取LAMP镜像 [root@ken-node3 ken]# docker pull tutum/lamp 第二步:查看已经获取到的镜像 [root@ken-node3 ken] ...
- 通过Playbook部署LAMP
Ansible的PlayBook文件格式为YAML语言,所以希望你在编写PlayBook前对YAML语法有一定的了解,否则在运行PlayBook的时候经常碰到语法错误提示,这里我们通过介绍批量部署LA ...
- php5.5+apache2.4+mysql5.7在windows下的配置
apache2.4下载和安装 下载apache2.4 https://www.apachelounge.com/download/VC11/ 提取解压目录Apache24到d:/dev/Apache2 ...
- 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. ...
- windows安装PHP5.4+Apache2.4+Mysql5.5
windows安装PHP5.4+Apache2.4+Mysql5.5 作者:星之宇 ┊ 时间:2012-10-18 14:27 ┊ 分类: 网站技术 ┊ 阅读:1232 ┊ 评论:16 最近听说PHP ...
- 01.WAMP搭建 [Win7+Apache2.4+MySQL5.7+PHP7
WAMP搭建[Win7+Apache2.4+MySQL5.7+PHP7 一.背景 将电脑光驱位拆换成固态硬盘(120g),专门装了一个系统用于工作.之前一直使用PHPstudy和WAMP这种集成环境, ...
随机推荐
- Zookeeper简介与集群搭建
Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...
- 纯html页面中js如何获得项目路径
js,全称javascript,不过虽然是以java开头,不过与java一点关系都没有. js和java有如下区别: (1)js是浏览器端的语言,而java是服务器端的语言. (2)js是动态语言,j ...
- 3386 二分图 洛谷luogu [模版]
题目背景 二分图 感谢@一扶苏一 提供的hack数据 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两 ...
- PAT A1139 First Contact (30 分)——set
Unlike in nowadays, the way that boys and girls expressing their feelings of love was quite subtle i ...
- springboot2.0添加logback
程序代码 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PreFilter extends ZuulFil ...
- stm32 中断号和中断处理函数建立关系
转载:https://www.cnblogs.com/heny-hui/p/7130620.html stm32的中断号根据不同内核和型号,st公司给的官方库中对相应的中断号进行了设置,我们用到哪一个 ...
- android 给LinearLayout中添加一定数量的控件,并让着一定数量的控件从右到左移动,每隔若干秒停顿一下,最后一个view链接第一个view,然后继续移动循环往复,形成一个死循环简单动画效果
主类:IndexAnimationLinearLayout.java package com.yw.sortlistview; import java.util.ArrayList; import j ...
- Wi-Fi无线控制器开发例程(基础篇)
动手来做自己的WIFI远程控制插座吧! 如果感觉视频不容易入门可以看这里 https://www.cnblogs.com/yangfengwu/p/10100152.html WIFI远程控制器系统方 ...
- Luogu4249 WC2007 石头剪刀布 费用流
传送门 考虑竞赛图三元环计数,设第\(i\)个点的入度为\(d_i\),根据容斥,答案为\(C_n^3 - \sum C_{d_i}^2\) 所以我们需要最小化\(\sum C_{d_i}^2\) 考 ...
- vue 动态创建组件(运行时创建组件)
function mountCmp (cmp, props, parent) { if (cmp.default) { cmp = cmp.default } cmp = Vue.extend(cmp ...