LAMP实现

LAMMP
一、知识点:

1、LAMP介绍

 LAM(M)P: 

 L: linux 

 A: apache (httpd) 

 M: mysql, mariadb 

 M:memcached 

 P: php, perl, python 

 WEB资源类型:  

   静态资源:原始形式与响应内容一致  

   动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端 

 Web相关语言  

   客户端技术: javascript,html       前端开发

   服务器端技术:php, jsp,python   后端开发 

注意:LAMP的性能关键瓶颈就在于数据库

2、CGI

 程序=指令+数据  

   指令:代码文件  

   数据:数据存储系统、文件 

 CGI:Common Gateway Interface 

   可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准 ;也是apache和php程序之间的一种协议 

 请求流程:  

   Client -- (httpd) --> httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql 

 php: 脚本编程语言、嵌入到html中的嵌入式web程序语言 

   基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)

3、LAMP工作原理

LAMP的原理图示

4、PHP简介

官网:http://www.php.net/

PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供 了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用

Rasmus Lerdorf于1994年开始开发PHP,它是初是一组被Rasmus Lerdorf称作 “Personal Home Page Tool” 的Perl脚本, 这些脚本可以用于显示作者的简历并记录用户对其网站的访问。后来,Rasmus Lerdorf使用C语言将这些Perl脚本重写为CGI程序,还为其增加了运行Web forms的能力以及与数据库交互的特性, 并将其重命名为“Personal Home Page/Forms Interpreter”或“PHP/FI”。此 时,PHP/FI已经可以用于开发简单的动态web程序了,这即PHP1.0。1995年6月 ,Rasmus Lerdorf把它的PHP发布于comp.infosystems.www.authoring.cgi Usenet讨论组,从此PHP开始走进人们的视野。1997年,其2.0版本发布。 

1997年,两名以色列程序员Zeev Suraski和Andi Gutmans重写的PHP的分析器 (parser)成为PHP发展到3.0的基础,而且从此将PHP重命名为PHP: Hypertext Preprocessor。此后,这两名程序员开始重写整个PHP核心,并于1999年发布了 Zend Engine 1.0,这也意味着PHP 4.0的诞生。2004年7月,Zend Engine 2.0 发布,由此也将PHP带入了PHP 5时代。PHP5包含了许多重要的新特性,如增强 的面向对象编程的支持、支持PDO(PHP Data Objects)扩展机制以及一系列对 PHP性能的改进

5、PHP Zend Engine

Zend Engine是开源的、PHP脚本语言的解释器,它最早是由 以色列理工学院(Technion)的学生Andi Gutmans和Zeev Suraski所开发,Zend也正是此二人名字的合称。后来两人联 合创立了Zend Technologies公司

Zend Engine 1.0于1999年随PHP 4发布,由C语言开发且经 过高度优化,并能够做为PHP的后端模块使用。Zend Engine 为PHP提供了内存和资源管理的功能以及其它的一些标准服务 ,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语 言方面发挥了重要作用
Zend Engine的出现将PHP代码的处理过程分成了两个阶段: 首先是分析PHP代码并将其转换为称作Zend opcode的二进制 格式(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode

6、PHP的Opcode

Opcode是一种PHP脚本编译后的中间语言,类似于Java的 ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens)
2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式
3、Compilation 将表达式编译成Opocdes
4、Execution 顺次执行Opcodes,每次一条,从而实现PHP脚 本的功能

扫描-->分析-->编译-->执行

7、php配置

php:脚本语言解释器
配置文件:/etc/php.ini, /etc/php.d/*.ini
配置文件在php解释器启动时被读取
对配置文件的修改生效方法
Modules:重启httpd服务
FastCGI:重启php-fpm服务
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
注释符:较新的版本中,已经完全使用;进行注释
#:纯粹的注释信息
;:用于注释可启用的directive

8、Php设置

max_execution_time= 30 php程序最长执行时间30s
memory_limit 128M 生产不够,可调大
display_errors off 调试使用,不要打开,否则可能暴露重 要信息
display_startup_errors off 建议关闭
post_max_size 8M 最大上传数据大小,生产可能临时要 调大,比下面项要大 ;可以是表单
upload_max_filesize 2M 最大上传文件,生产可能要调大 ;超过需要切片传输
max_file_uploads = 20 同时上传最多文件数
date.timezone =Asia/Shanghai 指定时区
short_open_tag=on 开启短标签,如 ????

9、php配置

php.ini的核心配置选项文档:
http://php.net/manual/zh/ini.core.php

php.ini配置选项列表:
http://php.net/manual/zh/ini.list.php

php语言格式
...php code...
?>

10、php的加速器

php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以 将opcode缓存于php的共享内存中,从而可以让同一段代码的后续 重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了 opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的

常见的php加速器有:

1、APC (Alternative PHP Cache) 遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4
项目地址http://pecl.php.net/package/APC

2、eAccelerator 源于Turck MMCache,早期的版本包含了一个PHP encoder和 PHP loader,目前encoder已经不在支持。
项目地址 http://eaccelerator.net/

3、XCache 快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。
项目地址:http://xcache.lighttpd.net/,收录EPEL源

4、Zend Optimizer和Zend Guard Loader Zend Optimizer并非一个opcode加速器,它是由Zend Technologies为PHP5.2及以前的版本提供的一个免费、闭源的PHP 扩展,其能够运行由Zend Guard生成的加密的PHP代码或模糊代码 。 而Zend Guard Loader则是专为PHP5.3提供的类似于Zend Optimizer功能的扩展。
项目地址 http://www.zend.com/en/products/guard/runtime-decoders 

5、NuSphere PhpExpress NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHP Encoder编码的PHP程序文件,并能够实现对常规PHP文件的 执行加速。项目地址,
http://www.nusphere.com/products/phpexpress.htm

测试:
先将动态页面保存为静态的页面
将静态页面用rz命令导入到linux中
ab -c 200 -n 2000 http://172.18.62.63/info.php 测试动态页面每秒的请求数
ab -c 200 -n 2000 http://172.18.62.63/infophp.html 测试静态页面的请求数
结果:
动态的为1356个
静态的为3160个
结论:静态的访问速度是动态的2倍还多;
注意:网页访问的动态页面大多是先将其保存为静态页面供人们访问,这样速度就可以了

11、LAMP

LAMP
httpd:接收用户的web请求;静态资源则直接响应;动态资源 为php脚本,对此类资源
的请求将交由php来运行
php:运行php程序
MariaDB:数据管理系统

http与php结合的方式
CGI
FastCGI 将php程序作为独立于httpd的进程,进行通信
modules (将php编译成为httpd的模块,默认方式)
MPM:
prefork: libphp5.so
event, worker: libphp5-zts.so

12、快速部署LAMP

CentOS 7:
Modules:httpd, php, php-mysql, mariadb-server
FastCGI:httpd, php-fpm, php-mysql, mariadb-server

CentOS 6:
Modules:httpd, php, php-mysql, mysql-server
FastCGI:默认不支持

13、安装LAMP

安装LAMP
CentOS 6:
yum install httpd, php, mysql-server, php-mysql
service httpd start
service mysqld start

CentOS 7:
yum install httpd, php, php-mysql, mariadb-server
systemctl start httpd.service
systemctl start mariadb.service

注意:要使用prefork模型

14、php代码

格式1
echo "

Hello world!

"
?>

格式2



php测试代码
echo date("Y/m/d H:i:s");
phpinfo();
?>
注意:格式2更加好相比于格式1,因为根据产品的流程可知先让前端工程师将html框架搭建
起来,然后后端工程师将php代码嵌套进去即可;

测试:apache内集成php程序来运行.php文件------------php模式
yum install php yum安装php就是在apache内内置php的模块
cd /app/website/
vim info.php
echo date("Y/m/d H:i:s"); #显示时间信息
phpinfo(); #显示php版本等信息
?>php
重启服务使的安装php后改变的配置文件生效
systemctl restart httpd
验证:
http://172.18.62.63/info.php 在浏览器中输入进行访问

测试:
vim /etc/php.ini 编辑文件,设置时区
date.timezone=Asia/Shanghai
重启httpd服务生效
注意:访问获得的时间是服务器的时间

15、Php使用mysql扩展连接数据库

使用mysql扩展连接数据库的测试代码
$conn = mysql_connect(‘mysqlserver','username','password');
if ($conn)
echo "OK";
else
echo "Failure";
#echo mysql_error();
mysql_close();
?>

16、Php使用mysqli扩展连接数据库

Php使用mysqli扩展连接数据库的测试代码
$mysqli=new mysqli("mysqlserver",“username",“password");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo “OK";
$mysqli->close();
?>

测试:
先在linux上安装apache和mariadb,然后才进行测试
create user lampuser@'172.18.62.63' identified by 'centos'; 在数据库里创建测试的用

mysql -ulampuser -pcentos -h172.18.62.63 测试是否可以用创建的用户连接上数据库
yum install php-mysql 安装php访问数据库的客户端
cd /app/website
vim lamp1.php
$conn = mysql_connect('172.18.62.63','lampuser','centos');
if ($conn)
echo "OK";
else
echo "Failure";
#echo mysql_error();
mysql_close();
?>
vim lamp$mysqli=new mysqli("172.18.62.63","lampuser","centos");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>2.php
重启服务生效
systemctl restart httpd
验证:
http://172.18.62.63/lamp2.php 在浏览器的地址栏中输入此地址进行测试

17、常见LAMP应用

PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理 MySQL数据库
下载地址:https://www.phpmyadmin.net/downloads/

WordPress是一种使用PHP语言开发的博客平台,用户可以在支持 PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用

PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为 包含BBS、CMS、博客、SNS等一系列程序的通用型建站软件, 于 2008年加入阿里巴巴集团

Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛 软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最 大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议

ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化 网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台 开源程序。2006年6月,ECShop推出第一个版本1.0

测试:
PhpMyAdmin的使用
下载地址:https://www.phpmyadmin.net/downloads/
rz将文件导入linux的/app/website中
unzip phpMyAdmin-4.0.10.20-all-languages.zip
mv phpMyAdmin-4.0.10.20-all-languages pma
yum install php-mbstring
验证:
http://172.18.62.63/pma/ 在地址栏输入进行登录数据库管理系统;普通用户登
录有点问题????

18、布署phpMyadmin

yum -y install httpd mariadb-server php php-mysql
systemctl start httpd
systemctl start mariadb
mysql_secure_installation
下载:https://www.phpmyadmin.net/downloads/
tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz
cd /var/www/html
cd phpadmin/
cp config.sample.inc.php config.inc.php
yum -y install php-mbstring
systemctl reload httpd

19、布署wordpress

下载地址:
教室:ftp://172.16.0.1/pub/Sources/sources/httpd/
官网:https://cn.wordpress.org/
解压缩WordPress博客程序到网页站点目录下
unzip wordpress-4.3.1-zh_CN.zip
新建wpdb库和wpuser用户
mysql> create database wpdb;
mysql> grant all privileges on wpdb. to wpuser@'%' identified by "wppass";
打开http://webserver/wordpress进行页面安装
注意wordpress目录权限
Setfacl –R –m u:apache:rwx wordpress
测试:
在数据库管理界面先创建一个wpuser用户,但是不授予权限;
在图形界面创建一个数据库,授予权限;
编辑用户权限,设置为按数据库指定权限;然后用户就可以管理此数据库了
https://cn.wordpress.org/ 下载wordpress的地址
unzip wordpress-4.9.1-zh_CN.zip 解压wordpress软件
mv wordpress/
wp/ 将wordpress下的文件复制到/app/website/wp
setfacl -R -m u:apache:rwx wp/ 暂时授予apache用户rwx权限以设置博客
http://172.18.62.63/wp/ 在地址栏中输入地址开始搭建博客

20、CentOS7编译Php-xcache加速访问

官网:http://xcache.lighttpd.net/wiki/ReleaseArchive
安装方法
rpm包:来自epel源
编译安装
编译安装
yum -y install php-devel
下载并解压缩xcache-3.2.0.tar.bz2
phpize 生成编译环境
cd xcache-3.2.0
./configure --enable-xcache --with-phpconfig=/usr/bin/php-config
make && make install
cp xcache-3.2.0/xcache.ini /etc/php.d/
systemctl restart httpd.service

21、php
httpd+php结合的方式:
module: php
cgi
fastcgi : php-fpm
php-fpm:
CentOS 6:
PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
解决方案:编译安装httpd-2.4, php-5.3.3+
CentOS 7:
httpd-2.4:rpm包默认编译支持fcgi模块
php-fpm包:专用于将php运行于fpm模式

22、配置fastcgi

php配置
配置文件:/etc/php.ini,/etc/php.d/*.ini
Module下,重启Httpd服务
FastCGI模式下,重启php-fpm服务
配置文件格式
配置文件格式:[foo]:Section Header Directive=value
注释符: # 纯粹的注释信息
; 用于注释可启动的指令
在较新的版本中,已经完全使用”;”进行注释
php.ini核心配置的详细说明:
http://php.net/manual/zh/ini.core.php
Php.ini配置选项列表:
http://php.net/manual/zh/ini.list.php

23、配置fastcgi

fcgi服务配置文件:/etc/php-fpm.conf, /etc/phpfpm.d/*.conf
连接池:
pm = static|dynamic
static:固定数量的子进程;pm.max_children
dynamic:子进程数量以动态模式管理
pm.max_children
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
pm.max_requests = 500
确保运行php-fpm进程的用户对session目录有读写权限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session

24、配置fastcgi

(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件 ,内容类似:
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(..php)$ fcgi://127.0.0.1:9000/var/www/html/$1 注意:在HTTPD服务器上必须启用proxy_fcgi_module模块 ,充当PHP客户端
httpd –M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
测试1:于apache分离的php程序--------------php-fpm模式
yum install httpd php-fpm php-mysql mariadb mariadb-server 安装包
cd /etc/httpd/conf.d/
vim fcgi.conf 编辑文件,设置转发
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.
.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 #将访问.php文件
的请求进行转发到php
重启httpd服务
systemctl start httpd
cd /var/www/html/
mv info.php index.php
vim index.php
phpinfo();
?>
验证:
http://172.18.62.63/ 在浏览器地址栏中输入下列地址进行访问
结果:
可以成功将php执行的结果返回到浏览器;
ab -c 200 -n 2000 http://172.18.62.63/ 压力测试1200,和之前的php模块相比性能有
所下降
测试2: discuz论坛搭建
http://www.discuz.net/forum-10-1.html 下载地址
rz命令导入到linux
unzip Discuz_X3.4_GIT_SC_UTF8.zip 解压
cd dir_SC_UTF8/
mv * /var/www/html/bbs/ 复制php文件到指定的目录
setfacl -R -m u:apache:rwx bbs/ 授予特殊权限
update mysql.user set password=password('123789');
flush privileges 在数据库为用户添加密码,记得刷新
http://172.18.62.63/bbs/ 浏览器地址栏输入地址访问
然后按照提示完成就可以了
ab -c 200 -n 2000 http://172.18.62.63/bbs 测试性能为8885
注意:要只开启一个yum源,否则各个包装的版本可能不同,会不兼容
测试3:yum安装加速包3.1进行测试
yum install xcache-admin 安装加速的包
rpm -ql php-xcache 查看模块
systemctl restart httpd php-fpm 重启服务生效
http://172.18.62.63/在浏览器地址栏输入进行访问看php的版本信息是否有加速的
xcache
ab -c 200 -n 2000 http://172.18.62.63/bbs 测试性能为9000
结果:提升不大,因为之前性能就已经很强大了;可以测试访问wordpress提升明显
测试4:编译安装3.2进行测试
yum history undo 3 在开始编译安装前先卸载之前的xcache-admin干净
rz命令进行导入文件
tar xvf xcache-3.2.0.tar.bz2 解压
cd xcache-3.2.0/
cat INSTALL 查看安装说明
yum install php-devel
phpize 生成configure文件
yum groupinstall "development tools"
./configure --enable-xcache
make && make install
cp xcache.ini /etc/php.d/
systemctl restart httpd php-fpm
http://172.18.62.63/ 在地址栏输入,查看加速的版本信息
ab -c 200 -n 2000 http://172.18.62.63/bbs 进行性能测试为9000
25、配置fastcgi

2) 虚拟主机配置
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
:80>
ServerName www.b.net
DocumentRoot /apps/vhosts/b.net
ProxyRequests Off
ProxyPassMatch ^/(..php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1

Options None
AllowOverride None
Require all granted

tar xvf php-7.1.7.tar.bz2 cd php-7.1.7/ ./configure --prefix=/app/php \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-openssl \ --with-pdo-mysql=mysqlnd \ --enable-mbstring \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --enable-sockets \ --enable-fpm \ --with-mcrypt \ --with-config-file-path=/etc \ --with-config-file-scan-dir=/etc/php.d \ --enable-maintainer-zts \ --disable-fileinfo

26、编译安装LAMP,搭建博客

(1)先装httpd2.4(采用第二种安装方式)
httpd下载地址:http://mirrors.hust.edu.cn/apache/httpd/
WordPress下载地址:https://cn.wordpress.org/txt-download/
yum groupinstall "development tools"
yum install lrzsz
mkdir /app
tar xvf apr-1.6.3.tar.bz2 解压 apr是在centos6上安装本应该在centos7上安装的
httpd2.4时使用的可移植运行库接口,屏蔽不同的操作系统带来的差异;
tar xvf apr-util-1.6.1.tar.bz2 解压
tar xvf httpd-2.4.29.tar.bz2 解压
mv apr-1.6.3 httpd-2.4.29/srclib/apr 将解压后的文件复制到目录下
mv apr-util-1.6.1 httpd-2.4.29/srclib/apr-util
cd httpd-2.4.29
./configure --prefix=/usr/local/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite
--with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-
shared=all --with-mpm=prefork
make -j 4 && make install 必须要先确保有4个内核
vim /usr/local/httpd24/conf/httpd.conf
User apache
Group apache
ServerName www.magedu.com:80
进行fcgi接口配置:
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
取消两行加载模块的注释
重启服务

(2)二进制安装数据库
数据库下载地址:https://downloads.mariadb.org/interstitial/mariadb-10.2.14/bintar-linux-
x86_64/mariadb-10.2.14-linux-x86_64.tar.gz;
tar xvf mariadb-10.2.12-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
ln -s mariadb-10.2.12-linux-x86_64/ mysql
useradd -r -s /sbin/nologin mysql
chown -R mysql.mysql mysql/
mkdir /data/mysqldb -pv
chown -R mysql.mysql /data/mysqldb/
chmod 770 /data/mysqldb/
cd mysql/;./scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
cd support-files
cp my-huge.cnf /etc/my.cnf
vim /etc/my.cnf
datadir=/data/mysqldb
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
echo 'PATH=/usr/local/httpd24/bin:/usr/local/mysql/bin:$PATH' > /etc/profile.d/lamp.sh
apachectl start

(3)编译安装php(以php-fpm模式)
php下载地址:http://hk1.php.net/get/php-7.2.4.tar.bz2/from/this/php-7.2.4.tar.bz2
tar xvf php-7.2.1.tar.bz2
yum install libxml2-devel bzip2-devel libmcrypt-devel
cd php-7.2.1
./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-
pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --
with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --
with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --
disable-fileinfo
make -j 4 && make install
cp php.ini-production /etc/php.ini 复制配置文件
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 复制服务
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d/
cp www.conf.default www.conf
service php-fpm start
apachectl restart

(4)进行博客搭建
unzip /app/wordpress-4.9.1-zh_CN.zip
mv /app/wordpress/ /usr/local/httpd24/htdocs/websrv1/
cd /usr/local/httpd24/htdocs/websrv1/
cp wp-config-sample.php wp-config.php
vim wp-config.php 编辑文件,设置数据库名和用户名密码
define('DB_NAME', 'blogdb');
define('DB_USER', 'bloguser');
define('DB_PASSWORD', '123789');
define('DB_HOST', 'localhost');
mysql
create database blogdb;
grant all on blogdb.
to bloguser@'localhost' identified by '123789';
flush privileges;
setfacl -R -m u:apache:rwx websrv1/
http://172.18.62.73/websrv1/ 输入到浏览器进行登录访问

27、CentOS 7安装LAMP(PHP-FPM模式)

安装PHP-FPM
首先要卸载PHP
yum install php-fpm
查看php-fpm所对应的配置文件
rpm -ql php-fpm
/usr/lib/systemd/system/php-fpm.service
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
/run/php-fpm

28、CentOS 7安装LAMP(PHP-FPM模式)

PHP-FPM常见配置
daemonize = no //是否将程序运行在后台
listen = 127.0.0.1:9000 //FPM 监听地址
listen.backlog = -1 //等待队列的长度 -1表示无限制
listen.allowed_clients = 127.0.0.1 //仅允许哪些主机访问
pm = dynamic //PM是动态运行还是静态运行
//static 固定数量的子进程,pm.max_childen
//dynamic子进程数据以动态模式管理
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
pm.max_requests = 500

29、CentOS 7安装LAMP(PHP-FPM模式)

php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session //设置session存放位置
启动PHP-FPM
systemctl start php-fpm

30、CentOS 7安装LAMP(PHP-FPM模式)

安装httpd包
yum install httpd
查看Httpd mod_fcgi模块是否加载
httpd -M | grep fcgi
proxy_fcgi_module (shared)
添加FCGI的配置文件
DirectoryIndex index.php
ProxyRequests off //是否开启正向代理
ProxyPassMatch ^/(..php)$ fcgi://127.0.0.1:9000/var/www/html/$1 //开启FCGI反向代理
//前面的/相对于后面的/var/www/html而言,后面的$1是指 前面的/(.
.php)
重启Httpd:systemctl start httpd

31、CentOS7编译安装LAMP

在centos7上编译安装LAMP:
mairadb:通用二进制格式,mariadb-5.5.56
httpd:编译安装,httpd-2.4.25
php5:编译安装,php-5.6.30
phpMyAdmin:安装phpMyAdmin-4.4.15.10-all-languages
Xcache:编译安装xcache-3.2.0
php5.4依赖于mariadb-devel包
顺序:mariadb-->httpd-->php

32、CentOS7编译安装LAMP

二进制安装mariadb
ftp://172.16.0.1/pub/Source/7.x86_64/mariadb/mari adb-5.5-46-linux-x86_64.tar.gz
tar xvf mariadb-5.5-46-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ls -sv mariadb-5.5.46-linux-x86_64 mysql
cd mysql
chown -R root.mysql ./*
mkdir /mydata/data -p
chown -R mysql.mysql /mydata/data
mkdir /etc/mysql

33、CentOS7编译安装LAMP

cp support-files/my-large.cnf /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
[mysqld]加三行
datadir =/mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON
bin/mysqld --help --verbose |less
scripts/mysql_install_db --user=mysql -datadir=/mydata/data
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
service mysqld start

34、CentOS7编译安装LAMP

/usr/local/mysql/bin/mysql 测试是否成功
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin/:$PATH

35、CentOS7编译安装LAMP

编译安装httpd-2.4
yum install pcre-devel apr-devel apr-util-devel openssl-devel
./configure --prefix=/usr/local/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite
--with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-
shared=all --with-mpm=prefork
make -j 4 && make install

36、CentOS7 php模块方式编译安装LAMP

编译安装php-5.6
相关包:
libxml2-devel bzip2-devel libmcrypt-devel (epel)
./configure --prefix=/app/php --with-mysql=/usr/local/mysql --with-openssl --
with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-png-dir --with-jpeg-dir --
with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --
with-apxs2=/app/httpd24/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-
scan-dir=/etc/php.d --with-bz2
make -j 4 && make install

37、CentOS7 php模块方式编译安装LAMP

编译安装php-7.1.7
./configure --prefix=/app/php --enable-mysqlnd -with-mysqli=mysqlnd --with-openssl --with-
pdomysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib
--withlibxml-dir=/usr --enable-xml --enable-sockets -with-apxs2=/app/httpd24/bin/apxs --with-
mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts
--disable-fileinfo
注意:php-7.0以上版本使用--enable-mysqlnd --withmysqli=mysqlnd ,原--with-mysql不再支持

38、CentOS7 php模块方式编译安装LAMP

为php提供配置文件
cp php.ini-production /etc/php.ini
编辑apache配置文件httpd.conf,以使apache支持php
vim /etc/httpd24/conf/httpd.conf
1加二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2 定位至DirectoryIndex index.html
修改为DirectoryIndex index.php index.html
apachectl restart

39、CentOS7 fpm方式编译安装LAMP

tar xvf php-7.1.7.tar.bz2
cd php-7.1.7/
./configure --prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--disable-fileinfo

40、CentOS7 fpm方式编译安装LAMP

cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
service php-fpm start

41、CentOS7 fpm方式编译安装LAMP

配置httpd支持php
vim /app/httpd24/conf/httpd.conf
取消下面两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
修改下面行

DirectoryIndex index.php index.html

加下面四行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
ProxyPassMatch ^/(.*.php)$
fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1

42、CentOS6上编译安装LAMP

在centos6上编译安装LAMP:
mairadb:通用二进制格式,mariadb-5.5.56
httpd:编译安装,httpd-2.4.27
php5:编译安装,php-5.6.30
Wordpress: 安装wordpress-4.8-zh_CN.tar.gz
Xcache:编译安装xcache-3.2.0
php5.4依赖于mariadb-devel包
实现顺序:mariadb-->httpd-->php

43、编译安装PHP-FPM模式的LAMP

编译httpd和二进制安装mariadb
安装相关包
bzip2-devel libxml2-devel libmcrypt-devel(epel源)
编译安装php
cd php-5.6.30/
./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-
pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --
with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --
with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --
disable-fileinfo
make -j 4 && make install

44、编译安装PHP-FPM模式的LAMP

实现php的配置文件和服务脚本
mkdir /etc/php5 /etc/php5.d/
cd php-5.6.30/
cp php.ini-production /etc/php5/php.ini
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
chkconfig --add php-fpm
chkconfig --list php-fpm

45、编译安装PHP-FPM模式的LAMP

编辑php配置文件
cd /app/php5/etc
cp php-fpm.conf.default php-fpm.conf
vim /app/php5/etc/php-fpm.conf
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 5 和pm.start_servers一致
pid = /app/php5/var/run/php-fpm.pid
service php-fpm restart

46、编译安装PHP-FPM模式的LAMP

修改httpd24的配置文件
vim /app/apache24/conf/httpd.conf
说明:启用httpd的相关模块
在Apache httpd 2.4以后已经专门有一个模块针对FastCGI 的实现,此模块为
mod_proxy_fcgi.so,它其实是作为 mod_proxy.so模块的扩充,因此,这两个模块都要加载
去掉下面两行注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module
modules/mod_proxy_fcgi.so

47、编译安装PHP-FPM模式的LAMP

添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改为: DirectoryIndex index.php index.html
加下面两行
ProxyRequests Off 关闭正向代理
ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
service httpd24 restart

48、编译安装PHP-FPM模式的LAMP

测试
vim /app/httpd24/htdocs/index.php
如下:
$link = mysql_connect('127.0.0.1','root','magedu');
if ($link)
echo "Success...";
else
echo "Failure...";
mysql_close();
phpinfo();
?>

转载于:https://blog.51cto.com/angwoyufengtian/2126399

你可能感兴趣的:(LAMP实现)