#实现LAMP架构php
1. LAMP介绍
什么是LAM(M)P 一套开源组合,用来构建应用程序服务器css
L:linux
A:apache (httpd) 承载客户端链接,处理静态资源,经过客户端适配器转发动态资源至后端服务器
M: mysql, mariadb 数据库选择,与编程语言没有关系,与程序员解决方案有关系
(M):memcached
P:php, perl, python 程序运行所须要的环境
数据分类html
非机构化数据 数据结构不规则或不完整,没有预约义的数据模型,不方便用数据库二维逻辑表来表现的数据
结构化数据 可使用关系型数据库表示和存储,表现为二维形式的数据。通常特色是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的
半结构化数据 半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其余数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层
WEB资源类型前端
静态资源 原始形式与响应内容一致,在客户端浏览器执行
动态资源 原始形式一般为程序文件,须要在服务器端执行以后,将执行结果返回给客户端,客户端与服务器端看到的源码不一样
httpd怎么处理动态资源python
httpd只是一个纯粹的静态http协议,所能完成的工做为分析用户请求报文,理解用户请求资源,根据本地的路径映射基于本地磁盘加载内容,将内容自己封装为一个响应报文,并发还给客户端
咱们不少时候指望web程序经过MIME识别出用户请求类型后,将执行结果返回给用户,而不是请求的内容,这就须要经过适配机制(例如CGI),将用户的动态资源请求,转发到后端服务器(例如php),将客户端请求执行后以数据流的形式,经过web服务器响应给用户
CGI:Common Gateway Interface(通用网关接口) 可让一个客户端,从网页浏览器经过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准mysql
请求流程: Client – (httpd) --> httpd – (cgi) --> application server (program file) – (mysql) --> mysql
客户端发送一个请求访问动态页面,经过http协议访问网站
httpd服务器不能处理动态资源,经过cgi协议,发送给cgi应用程序
cgi应用程序执行后,经过mysql调用数据,再经过httpd将结果返回给客户端
FastCGI 早期CGI与web服务是在同一台主机上的,web服务器承载大量的用户请求服务于静态资源,同时还须要调用另外一个组件来执行动态资源,生成结果,给单台服务器带来巨大压力 FastCGI,经过套接字来完成先后端的分离,前端服务器经过反向代理的方式与后端服务器通讯,当动态文件数据量较大时,一般不会放在本地的文件中,为了加速较大量数据的解锁,须要设置专业的数据存储系统,
不须要文件自身作处理,只须要经过API调对方的服务接口
剥离数据与文件的关系,单独存储
php PHP是通用服务器端脚本编程语言,其主要用于web开发以实现动态web页面,它也是最先实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,所以,其也能够在大多数系统上做为一个独立的shell来使用,意味着php能够在其交互式窗口直接运行linux
官方网站 官网:http://www.php.net/
Zend Engine 开源的、PHP脚本语言的解释器,将PHP代码的处理过程分红了两个阶段
分析PHP代码并将其转换为称做Zend opcode的二进制格式opcode(相似Java的字节码),并将其存储于内存中
使用Zend Engine去执行这些转换后的Opcode
php的加速器 基于PHP的特殊扩展机制如opcode缓存扩展也能够将opcode缓存于php的共享内存中,从而可让同一段代码的后续重复执行时跳过编译阶段以提升性能。这些加速器并不是真正提升了opcode的运行速度,而仅是经过分析opcode后并将它们从新排列以达到快速执行的目的
APC (Alternative PHP Cache) 遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4 项目地址:http://pecl.php.net/package/APC
eAccelerator 源于Turck MMCache,早期的版本包含了一个PHP encoder和PHP loader,目前encoder已经不在支持。 项目地址: http://eaccelerator.net/
XCache 快速并且稳定的PHP opcode缓存,通过严格测试且被大量用于生产环境,收录EPEL源 项目地址:http://xcache.lighttpd.net/
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
NuSphere PhpExpress NuSphere的一款开源PHP加速器,它支持装载经过NuSphere PHP Encoder编码的PHP程序文件,并可以实现对常规PHP文件的执行加速。 项目地址:http://www.nusphere.com/products/phpexpress.htm
2. 在httpd中使用php的方法
3. 实现LAMP架构
以模块(Modules)方式实现 CentOS 7:涉及安装程序 Modules:httpd, php, php-mysql, mariadb-server CentOS 6:涉及安装程序 Modules:httpd, php, php-mysql, mysql-server
安装,若是已经安装了httpd,直接安装php,会经过依赖关系会默认安装php-cli和php-common
[ root@hai7-7 ~] $yum install php
安装成功后,会在/etc/httpd/conf.d/下生成新的配置文件,php.conf
[ root@hai7-7 ~] $vim php.conf
< FilesMatch \.php$>
SetHandler application/x-httpd-php <= = 全部以.php结尾的文件,都交给httpd-php处理
< /FilesMatch>
DirectoryIndex index.php <= = 设置默认主页
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session" <= = 保存session目录
在httpd模块目录下,/etc/httpd/conf.modules.d/会增长一个php模块配置文件,10-php.conf
[ root@hai7-7 conf.modules.d] $vim 10-php.conf
< IfModule prefork.c> <= = 只要在prefork.c模型下才会装载名为php5_module的模块
LoadModule php5_module modules/libphp5.so
< /IfModule> 也就是说httpd以线程模式运行的话,须要装入的模块为php-zts,在extras仓库
检查php5模块是否已装载,若是未加载,须要检查配置文件和安装的程序包是否相匹配
root@hai7-7 conf.modules.d] $httpd -M
测试,在httpd页面路径下建一个.php文件,而后访问主页,若是能够看到php设置环境界面,说明php模块能够正常运行
[ root@hai7-7 html] $vim index.php
< ?php
phpinfo( ) ;
?>
安装mysql,同时让php支持链接mysql,须要组件为 php-mysq
[ root@hai7-6 ~] $yum -y install mariadb-server php-mysql
在web服务器主机,编辑一个测试代码
< ?php
$conn = mysql_connect( '127.0.0.1' ,'root' ,'' ) ; < 本机测试用,生产环境不能够用root,配置文件容易丢
if ( $conn )
echo "OK" ;
else
echo "Failure" ;
?>
重启服务后,访问web页面,若是出现“Failure”错误,说明php扩展没有问题,只是链接数据库失败,多是数据库没有启动,或者帐号密码错误,或者数据服务器端口错误等。若是出现ok界面,说明能够正常链接至数据库,IMP平台也就搭建成功,php程序放在网页目录下就能够对外提供服务了
以FastCGI实现(php-fpm) php包与php-fpm包是互斥的,只能安装一种,若是测试机上有php须要先卸载 FastCGI涉及程序:httpd, php-fpm, php-mysql, mariadb-server
安装程序包,httpd、php-mysql、mariadb-server
[ root@hai7-7 ~] $yum install httpd php-mysql php-fpm mariadb-server -y
修改mysql数据库配置文件,不容许反向解析ip
[ root@hai7-7 ~] $vim /etc/my.cnf.d/server.cnf
[ mysqld]
skip_name_resolve= ON
httpd要适配到FastCGI服务端,依赖于模块proxy_fcgi_module,2.4默认启动状态,2.2须要在epel源安装
[ root@hai7-7 ~] $httpd -M | grep cgi
proxy_fcgi_module ( shared)
编辑fastCGI服务器端配置文件/etc/php-fpm.conf
用来配置php守护进程工做特性(如何管理本身的进程),/etc/php.ini依然生效,用来配置加载那些模块,修改了模块设置,就须要要重启php-fpm服务
[ root@hai7-7 ~] $vim /etc/php-fpm.conf
include= /etc/php-fpm.d/*.conf <= = 模块化配置加载此目录下全部的配置文件
[ global]
pid = /run/php-fpm/php-fpm.pid <= = 守护进程的pid
error_log = /var/log/php-fpm/error.log <= = 错误日志
log_level = notice <= = 日子记录级别
daemonize = no <= = 表示是否以守护进程的方式运行,定义为no,由于要托管到 systemd上
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
; Pool Definitions ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
; See /etc/php-fpm.d/*.conf <= = Connection Pool链接池的定义都在php-fpm.d/下模块化的配置文件中
定义链接池的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[ root@hai7-7 ~] $vim /etc/php-fpm.d/www.conf
[ www] <= = 链接池的名字,此名能够自定义
listen = 127.0.0.1:9000 <= = 监听在哪一个地址哪一个端口上,本机全部ipv4地址可用修改成0.0.0.0
listen.backlog = -1 <= = 队列长度,-1表示在服务器承载范围内不设限,队列时放在内存中的,防止didos攻击,推荐设限
user = apache <= = 表示子进程以哪一个身份运行
group = apache
pm = dynamic <= = 定义管理链接池的模式,有两个值static和dynamic
static: <= = 静态模式,直接启用全部子进程
dynamic: <= = 动态管理模式
following directives:
pm.max_children:'最大链接数,动态静态都有用,默认值50,经过压测肯定'
pm.start_servers:'服务启动时启动的进程数,此参数动态模式有用,默认值5'
pm.min_spare_servers:'空闲进程数,此参数动态模式有用,默认值5'
pm.max_spare_servers:'最大空闲进程数,此参数动态模式有用,默认值35'
pm.max_requests = 500 <= = 进程最大服务数,达到此值就会kill生成新的,设为0表示不设限
pm.status_path = /status <= = pm状态页面
ping.path = /ping <= = 判断服务工做状态的URL
ping.response = pong <= = 判断/ping后返回的结果,能够自定义
php_value[ session.save_handler] = files <= = 定义会话管理模式
php_value[ session.save_path] = /var/lib/php/session <= = 会话保存路径,确保此文件存在,且apache有读写权限
建立session(会话)管理目录,而且修改成apache具备读写权限
[ root@hai7-7 ~] $mkdir /var/lib/php/session
[ root@hai7-7 ~] $chown apache.apache /var/lib/php/session/
在虚拟主机上配置http,须要手动指明默认主页文件使用index.php1. '编辑http配置文件,添加FCGI的配置'
[ root@hai7-7 data] $vim /etc/httpd/conf.d/text.conf
DirectoryIndex index.php <= = 指明默认主页文件为index.php
< VirtualHost *:80>
ServerName www.v9.com
DocumentRoot /data/virtual/v9.com
ProxyRequests Off <= = 关闭正向代理
ProxyPassMatch ^/( .*\.php) $ fcgi://192.168.50.115:9000/apps/vhosts/b.net/$1 <= = 反向代理,以php结尾的URL,转发给fcgi由/apps/vhosts/b.net/$1 提供,后面的$1 是指前面的/( .*\.php)
< Directory “/data/virtual/v9.com” > <= = 受权限制目录 Options None AllowOverride None Require all granted < /Directory> < /VirtualHost>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在指定的页面路径下建一个网页测试文件,重启服务
[ root@hai7-7 v9.com] $ vim /data/virtual/v9.com/index.php
< ?php
phpinfo( ) ;
?>
4. 常见LAMP应用
phpmyadmin 一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
获取站点 下载:https://www.phpmyadmin.net/downloads/
布置phpmyadmin
将工具包解压后,移动至httpd服务的DocumentRoot下,作一个指向软链接,方便切换版本
1. '解压文件'
[ root@hai7-7 ~] $tar xf phpMyAdmin-4.0.10.20-all-languages.tar.gz
2. '移动至页面目录下'
[ root@hai7-7 ~] $mv phpMyAdmin-4.0.10.20-all-languages /data/virtual/
3. '作软链接'
[ root@hai7-7 ~] $ln -sv phpMyAdmin-4.0.10.20-all-languages v9.com
进入phpMyAdmin-4.0.10.20-all-languages目录,将配置文件模板,修改成配置文件,去掉sample
[ root@hai7-7 ~] $cp config.sample.inc.php config.inc.php
修改配置文件config.inc.php
[ root@hai7-7 ~] $vim /data/virtual/phpMyAdmin-4.0.10.20-all-languages/config.inc.php
$cfg [ 'blowfish_secret' ] = '123456' ; <= = 输入一个随机字符串
$cfg [ 'Servers' ] [ $i ] [ 'host' ] = 'localhost' ; <= = 修改链接地址,与数据库中受权的用户地址要相同
安装php相关组件,重启服务后,即在httpd页面登入工具,帐号密码为数据库受权的帐户
yum install php-mbstring <= = 多字符支持
yum install php-mcrypt <= = 加密相关
systemctl restart php-fpm <= = 重启php-fpm
WordPress WordPress是一款开源的我的网站搭建程序,用户能够在支持PHP和MySQL数据库的服务器上架设属于本身的网站
获取地址 https://cn.wordpress.org/
部署WordPress
将得到的压缩包,解压到网页目录中,进入目录找到配置文件模板,将其重命名为wp-config.php
[ root@hai7-7 ~] $cd /var/www/html/wordpress-4.9
[ root@hai7-7 wordpress-4.9] $cp wp-config-sample.php wp-config.php
修改配置文件权限,保证Apache有读写权限
[ root@hai7-7 ~] $chmod 666 wp-config.php
在数据库中建立一个网站专用数据库,专用帐户
[ root@hai7-7 ~] $mysql
MariaDB [ ( none) ] > CREATE DATABASE wpdb;
MariaDB [ ( none) ] > GRANT ALL ON phptest.* TO 'wpuser' @'172.20.0.%' IDENTIFIED BY 'centos' ;
编辑配置文件,修改以下项,以链接数据库
[ root@hai7-7 ~] $vim /var/www/html/wordpress-4.9/wp-config.php
define( 'DB_NAME' , 'phptest' ) ; <= = 指定数据库名
define( 'DB_USER' , 'root' ) ; <= = 指定用户名
define( 'DB_PASSWORD' , '' ) ; <= = 指定密码
define( 'DB_HOST' , '192.168.50.115' ) ; <= = 指定主机
或者将配置文件删除,访问网站,会出现配置页面,填写相关信息后,会生成配置文件,将内容复制到wordpress目录下生成一个配置文件wp-config.php
5. 将httpd/fpm分别以独立主机运行
6 搭建虚拟主机,在同一台服务器上运行2个网站
实验目标 实现LAMP架构,在web服务器上维护两个网站
使用的网页资源
wordpress-4.9.4-zh_CN.tar.gz
Discuz_X3.2_SC_UTF8.zip
搭建过程
数据库服务器
先搭建数据库服务器,这里以服务器C(107)为例
[ root@hai7-6 ~] $yum install mariadb-server
计划运行两个网页,因此在数据库中创建相应数据库和帐户
1. '为wordpress网页创建数据库和帐户'
[ root@hai7-6 ~] $mysql -e "CREATE DATABASE wpdb;GRANT ALL ON wpdb.* TO wpuser@'192.168.50.%' IDENTIFIED BY 'centos'"
2. '为Discuz网页创建数据库和帐户'
[ root@hai7-6 ~] $mysql -e "CREATE DATABASE Dzdb;GRANT ALL ON Dzdb.* TO dzuser@'192.168.50.%' IDENTIFIED BY 'centos'"
php-fpm服务器
服务器B(110),安装php-fpm,链接数据库组件php-mysql
[ root@hai7-6 ~] $yum install php-fpm php-mysql
分别创建2个网站对应的网页目录,Discuz稍后重命名
[ root@hai7-6 ~] $mkdir /data/wordpress
在官网获取页面文件包wordpress-4.9.4-zh_CN.tar.gz和Discuz_X3.2_SC_UTF8.zip,分别解压至对应网页目录
[ root@hai7-6 ~] $tar xvf wordpress-4.9.4-zh_CN.tar.gz
[ root@hai7-6 ~] $unzip Discuz_X3.2_SC_UTF8.zip
'Discuz解压后的目录为upload,重命名为discuz'
[ root@hai7-6 ~] $mv upload/ discuz
修改wordpress配置文件
1
2
3
4
5
6
7
8
9
10
11
12
1. '进入wordpress目录下,将配置文件模板修改成配置文件'
[ root@hai7-8 ~] $mv wp-config-sample.php wp-config.php
2. '修改配置文件'
[ root@hai7-8 ~] $vim /data/wordpress/wp-config.php
/** WordPress数据库的名称 */
define( 'DB_NAME' , 'wpdb' ) ;
/** MySQL数据库用户名 */
define( 'DB_USER' , 'wpuser' ) ;
/** MySQL数据库密码 */
define( 'DB_PASSWORD' , 'centos' ) ;
/** MySQL主机 */
define( 'DB_HOST' , '192.168.50.107' ) ;
让Apache对discuz目录具备写权限
[ root@hai7-8 /data] $setfacl -R -m u:apache:rwx discuz/
httpd服务器
安装httpd服务
[ root@hai7-8 ~] $yum -y install httpd
修改httpd配置文件,定义两个虚拟主机,并受权目录[ root@hai7-8 ~] $vim /etc/httpd/conf.d/test.conf
DirectoryIndex index.php <= = 指定默认网页文件为index.php
< VirtualHost *:80> <= = 设立虚拟主机
ServerName www.wordpress.net <= = 服务名
DocumentRoot /data/wordpress/ <= = web服务页面路径
ProxyRequests Off <= = 不启用正向代理
ProxyPassMatch ^/( .*\.php) $ fcgi://127.0.0.1:9000/data/wordpress/$1 <= = 启用反向代理
< Directory "/data/wordpress/" > <= = 受权虚拟主机服务目录
Require all granted
< /Directory>
< /VirtualHost>
< VirtualHost :80> <= = 第二个虚拟机 ServerName www.discuz.net DocumentRoot /data/discuz/ ProxyRequests Off ProxyPassMatch ^/( . .php) $ fcgi://127.0.0.1:9000/data/discuz/$1 < Directory “/data/discuz/” > Require all granted < /Directory> < /VirtualHost>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
客户端 在客户端D上修改hosts文件,模拟DNS解析,登陆网页检测
[ root@hai6 ~] $vim /etc/hosts
192.168.50.110 www.wordpress.net www.discuz.net
7 CentOS7编译安装LAMP,基于fastcgi方式
编译环境
httpd可移植运行库 apr-1.6.3.tar.gz apr-util-1.6.1.tar.gz
Apache源码 httpd-2.4.34.tar.bz2
mariadb二进制文件 mariadb-10.2.15-linux-x86_64.tar.gz
php解释器 php-7.1.18.tar.bz2
页面文件 wordpress-4.9.4-zh_CN.tar.gz
编译顺序 mariadb–>httpd–>php mariadb和httpd前后能够随意,php依赖于mariadb,须要最后安装
编译流程
准备开发包组
[ root@hai7-8 ~] $yum groupinstall "Development Tools"
编译httpd
安装依赖包
[ root@hai7-7 ~] $yum install pcre-devel openssl-devel expat-devel -y
官方下载httpd源码,以及依赖的apr包(apr-1.6.3.tar.gz、apr-util-1.6.1.tar.gz 、httpd-2.4.34.tar.bz2),导入linux中,而后解压缩
[ root@hai7115 srcd] $tar xf apr-1.6.3.tar.gz
[ root@hai7115 srcd] $tar xf apr-util-1.6.1.tar.gz
[ root@hai7115 srcd] $tar xf httpd-2.4.34.tar.bz2
将apr和apr-util整个目录拷贝到httpd-2.4.34/srclib/目录下,而且更名(必须)为apr和apr-util
[ root@hai7115 srcd] $cp -r apr-1.6.3 httpd-2.4.34/srclib/apr
[ root@hai7115 srcd] $cp -r apr-util-1.6.1 httpd-2.4.34/srclib/apr-util
编译,./configure做用,检查系统环境和配置生成makefile文件,检查全部所须要的编译操做的依赖环境是否能够知足,若是能够知足,将检查结果和命令行定义的选项特性结合makefile.in生成为makefile文件 –enable-so \ enable表示启用某个内建特性; –disable表示禁用程序自带的特性; –with表示须要调用另一个软件程序一块儿安装; –without表示不结合;
1
2
3
4
5
6
7
8
9
10
11
12
13
'进入httpd解压后的目录,运行configure'
./configure\
--prefix= /app/httpd24\
--enable-so\ <= = 是否支持动态模块
--enable-ssl\ <= = 是否支持加密
--enable-cgi\
--enable-rewrite\
--with-zlib\
--with-pcre\ <= = 正则表达式
--with-included-apr\ <= = 表示已经将apr相关须要编译的内容放在httpd相关的路径下,能够一块儿编译
--enable-modules= most\ <= = 是否支持大部分模块
--enable-mpms-shared= all\
--with-mpm= prefork <= = 是否支持mpm的prefork工做模型
构造和安装,make为项目管理工具,组织项目间的依赖关系,让最终的构建者可以快速构建项目代码,调用GCC等编译器,编译成特定程序包。 安装步骤为大量的cp操做,将编译好的二进制程序放到对应目录下,make install会调用相应脚本执行cp动做。 建立apache帐号,不建立系统默认启动的帐号为daemon
1. '构造和安装 '
[ root@hai7115 httpd-2.4.34] $make -j 8 && make install
2. '建立用户'
[ root@hai7-7 ~] $useradd -r -s /sbin/nologin apache
3. '修改配置文件中的用户项,将httpd帐号修改成apache'
[ root@hai7-7 ~] $vim /app/httpd24/conf/httpd.conf
User apache
Group apache
编译安装目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ root@hai7-8 /app/httpd24] $ll
bin
build
cgi-bin <= = 动态资源存放目录,cgi脚本
conf
error <= = 错误页(例如访问页面不存在返回404等)
htdocs <= = 网页测试页面
icons
include <= = 调用当前开发库作二次开发,须要知道API接口有哪些接口可被调用,对于c语言而言,都在include里用头文件标识
lib <= = 当前程序提供的库文件,分为共享库和开发库,共享库,被本程序的多个程序或程序包共享使用,开发库时作二次开发的的调用接口
logs <= = 日志文件
man <= = 帮助手册
manual <= = 超连接手册,须要web服务进行访问,在主配置文件中启用
modules <= = 以编译的模块
将二进制程序放入PATH变量中,启动测试,测试所见页面文件来自/app/httpd24/htdocs目录下
1. '加入PATH列表'
[ root@hai7-7 ~] $echo PATH= /app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh
2. '重启生效'
[ root@hai7-7 ~] $. /etc/profile.d/lamp.sh
让自编译httpd开机启动,将其放入系统启动脚本rc.local,加上执行权限。或者写启动脚本,写启动脚本能够用service控制启动
1. '将启动程序放在启动脚本中'
[ root@hai7-7 rc.d] $vim /etc/rc.d/rc.local
/app/httpd24/bin/apachectl
2. '加上执行权限'
[ root@hai7-7 rc.d] $chmod +x /etc/rc.d/rc.local
二进制编译数据库
解压数据库二进制包到指定目录下,目录必须/usr/local
[ root@hai7-7 ~] $tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local
解压后程序名为mariadb,须要修改成mysql,建一个软链接,创建一个系统mysql帐号,修改全部者和所属组
1. '进入解压目录'
[ root@hai7-7 ~] $cd /usr/local/
2. '创建软链接,重命名程序'
[ root@hai7-7 local/] $ln -s mariadb-10.2.15-linux-x86_64/ mysql
3. '创建系统帐户'
[ root@hai7-7 local/] $useradd -r -s /sbin/nologin mysql
4. '修改权限'
[ root@hai7-7 local] $chown -R mysql.mysql mysql/
准备数据目录
1. '创建数据库目录'
[ root@hai7-7 ~] $mkdir /app/mysql
2. '将目录所属组所属者修改成mysql'
[ root@hai7-7 ~] $chown mysql.mysql /app/mysql
3. '运行解压包带的脚本,生成系统数据库,必须在解压目录(/usr/local/mysql)运行,指定路径为新建的数据库目录,指定帐号'
[ root@hai7-7 mysql] $scripts /mysql_install_db --datadir= /app/mysql --user= mysql
准备配置文件
1. '在etc下建一个独立配置文件目录'
[ root@hai7-7 ~] $mkdir /etc/mysql
2. '拷贝二进制包中模板来修改'
[ root@hai7-7 ~] $cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf
3. '修改配置文件,指定数据库目录'
[ root@hai7-7 ~] $vim /etc/mysql/my.cnf
[ mysqld]
datadir= /app/mysql
准备服务脚本,压缩包有模板文件,而后加入服务脚本启动列表中
[ root@hai7-7 ~] $cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[ root@hai7-7 ~] $chkconfig --add mysqld
将mysql下的bin放入PATH变量中,加入httpd自定义变量文件中
[ root@hai7-7 bin] $vim /etc/profile.d/lamp.sh
PATH= /app/httpd24/bin:/usr/local/mysql/bin:$PATH
'生效一下'
[ root@hai7-7 bin] $. /etc/profile.d/lamp.sh
跑一下安全脚本mysql_secure_installation后,为wordpress创建一个使用的帐号
'创建wordpress网页用的帐号和数据库'
[ root@hai7-7 bin] $mysql -e "CREATE DATABASE wpdb2;GRANT ALL ON wpdb2.* TO wpuser@'localhost' IDENTIFIED BY 'centos'"
编译php
安装依赖包 libxml2-devel
:php有些功能启用时,须要使用代码处理xml格式的文档,必须兼容使用xml的开发库 bzip2-devel
:php自己使用压缩解压功能,所依赖的库 libmcrypt-devel
:加密解密功能(epel)
[ root@hai7-7 bin] $yum -y install libxml2-devel bzip2-devel libmcrypt-devel
解压php源码文件,进入目录,运行configure 基于模块方式编译,加以下项,不可与fpm模式共用,使用apxs2编译成httpd模块 –with-apxs2=/app/httpd24/bin/apxs 基于fpm模式编译 –enable-fpm 注意:php-7.0以上版本使用–enable-mysqlnd --with-mysqli=mysqlnd ,原–with-mysql再也不支持
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1. '解压源码包'
[ root@hai7-7 data] $tar xvf php-7.1.18.tar.bz2
2. '进入目录'
[ root@hai7-7 data] $cd php-7.1.18/
3. '运行configure'
[ root@hai7-7 php-7.1.18] $./configure --prefix= /app/php \
--enable-mysqlnd \
--with-mysqli= mysqlnd \ <= = 链接数据库的3种方法之一
--with-openssl \
--with-pdo-mysql= mysqlnd \ <= = 链接数据库的方法之一,基于对象方式来访问数据的接口
--enable-mbstring \ <= = 支持多字节
--with-freetype-dir \ <= = 与字体处理相关联的库
--with-jpeg-dir \ <= = 与图形处理相关的
--with-png-dir \ <= = png图形处理相关
--with-zlib \ <= = 压缩解压缩相
--with-libxml-dir= /usr \ <= = 处理xml格式文档
--enable-xml \ <= = 启用xml功能
--enable-sockets \ <= = 支持基于sockets本地进行通信
--enable-fpm \ <= = 基于fpm工做
--with-config-file-path= /etc \ <= = 指明config路径
--with-config-file-scan-dir= /etc/php.d \ <= = 模块化配置文件路径
--enable-maintainer-zts \ <= = mpm若是是prefork不须要此项,此项为启用线程化的php模块
--disable-fileinfo 禁止访问file信息
4. '构造和安装'
[ root@hai7-7 php-7.1.18] $make -j 8 && make install
将php的bin目录加入PATH变量
[ root@hai7-7 bin] $cat /etc/profile.d/lamp.sh
PATH= /app/httpd24/bin:/usr/local/mysql/bin:/app/php/bin:$PATH
为php提供配置文件,在编译目录下复制一份到etc目录下,命名为php.ini,默认设置,除时区外,一般不须要修改 php.ini-development(开发环境)和php.ini-production(生成环境),两者配置参数不一样,根据环境选择
[ root@hai7-7 ~] $cp /data/php-7.1.18/php.ini-production /etc/php.ini
在Apache配置文件中加入一些设置,让其识别php程序,创建一个独立子配置文件1. '先在主配置文件中加入include,让其能够包含子配置文件'
[ root@hai7-7 ~] $vim /app/httpd24/conf/httpd.conf
Include conf/extra/php.conf
2. '创建子配置文件,加入FCGI配置项'
[ root@hai7-7 ~] $cd /app/httpd24/conf/extra/
[ root@hai7-7 extra] $vim php.conf
AddType application/x-httpd-php .php <= = 让httpd能够识别php文件
AddType application/x-httpd-php-source .phps
ProxyRequests Off <= = 不启动正向代理 ProxyPassMatch ^/( .*.php) $ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1 <= = 启动反向代理```
启用httpd的两个模块,定位到LoadModule,去掉注释便可,指定默认页面文件为php
[ root@hai7-7 ~] $vim /app/httpd24/conf/httpd.conf
DirectoryIndex index.php index.html <= = 指定默认页面文件为php文件,没有在读取html
LoadModule proxy_module modules/mod_proxy.so <= = 须要启动的模块
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so <= = 须要启动的模块
准备启动脚本
1. '将解压目录下init.d.php-fpm文件做为模板,拷贝到init.d中'
[ root@hai7-7 ~] $cp /data/php-7.1.18/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
2. '为其加上执行权限'
[ root@hai7-7 ~] $chmod +x /etc/init.d/php-fpm
3. '加入到启动服务列表'
[ root@hai7-7 ~] $chkconfig --add php-fpm
准备php配置文件,和www的子配置文件
1
2
3
4
5
6
7
8
9
10
11
12
1. '编译后已经生成,只是文件后缀不符合要求,进入/app/php/etc目录,修改后缀,启动服务'
[ root@hai7-7 ~] $cd /app/php/etc
[ root@hai7-7 etc] $cp php-fpm.conf.default php-fpm.conf <= = 主配置文件
2.' 进入 /app/php/etcphp-fpm.d'
[ root@hai7-7 etc] $cd php-fpm.d/
[ root@hai7-7 php-fpm.d] $cp www.conf.default www.conf <= = 子配置文件
3. '在子配置文件中修改运行帐号,还能够定义监听端口等'
[ root@hai7-7 php-fpm.d] $vim www.conf
user = apache <= = 将运行帐号修改成apache
group = apache
4. '启动服务'
[ root@hai7-7 php-fpm.d] $service php-fpm start
workpress
解压workpress文件,拷贝到网页文件目录下(/app/httpd24/htdocs/)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1. '解压文件'
[ root@hai7-7 data] $tar xvf wordpress-4.9.4-zh_CN.tar.gz
2. '拷贝到页面目录下'
[ root@hai7-7 data] $cp -r wordpress/* /app/httpd24/htdocs/
3. '准备wordpress的配置文件'
[ root@hai7-7 htdocs] $cp wp-config-sample.php wp-config.php
4. '修改配置,链接数据库'
[ root@hai7-7 htdocs] $vim wp-config.php
/** WordPress数据库的名称 */
define( 'DB_NAME' , 'wpdb2' ) ;
/** MySQL数据库用户名 */
define( 'DB_USER' , 'wpuser' ) ;
/** MySQL数据库密码 */
define( 'DB_PASSWORD' , 'centos' ) ;
/** MySQL主机 */
define( 'DB_HOST' , 'localhost' ) ;
8 CentOS6编译安装PHP-FPM模式的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
实现顺序 mariadb–>httpd–>php
编译过程
安装相关包 bzip2-devel libxml2-devel libmcrypt-devel(epel源)
编译安装php
进入解压目录 cd php-5.6.30/
编译安装
运行configure脚本 ./configure --prefix=/app/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --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/php5 --with-config-file-scan-dir=/etc/php5.d --with-bz2
构造和安装 make -j 4 && make install
实现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
编辑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
修改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 添加以下二行 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
测试 vim /app/httpd24/htdocs/index.php
< ?php
$link = mysql_connect( '127.0.0.1' ,'root' ,'magedu' ) ;
if ( $link )
echo "Success..." ;
else
echo "Failure..." ;
mysql_close( ) ;
phpinfo( ) ;
?>
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet">
</div>