一.LAMP介绍
(1)LAM(M)P:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python
WEB资源类型:
静态资源:原始形式与响应内容一致
动态资源:原始形式通常为程序文件,需要在服务器端执 行之后,将执行结果返回给客户端
Web相关语言 客户端技术: javascript,html 服务器端技术:php, jsp,python
(2)CGI:Common Gateway Interface
可以让一个客户端,从网页浏览器通过http服务器向执行在 网络服务器上的程序传输数据;
CGI描述了客户端和服务器程 序之间传输的一种标准
程序=指令+数据
指令:代码文件
数据:数据存储系统、文件
请求流程: Client -- (httpd) --> httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql
php: 脚本编程语言、嵌入到html中的嵌入式web程序语言 基于zend编译成opcode(二进制格式的字节码,重复运行,可 省略编译环境)
(3)LAMP工作原理
工作流程说明:
- 当客户端请求的资源是静态资源时,web服务器会将静态资源直接返回客户端
- 当客户端请求的资源是动态资源时,httpd的php会进行相应的动态资源运算,当该过程还需要数据库的运算时,php还要连接数据库获取数据并进行推算,运算的结果会通过web服务器将动态资源转化为静态资源返回客户端
二.PHP简介
(1) PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最 早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供 了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
(2)PHP Zend Engine——开源的、PHP脚本语言的解释器
作用:为PHP提供了内存和资源管理的功能以及其它的一些标准服务 ,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语 言方面发挥了重要作用
(3)Zend Engine的出现将PHP代码的处理过程分成了两个阶段
首先是分析PHP代码并将其转换为称作Zend opcode的二进制 格式(类似Java的字节码),并将其存储于内存中;
第二阶段 是使用Zend Engine去执行这些转换后的Opcode
(4)PHP的Opcode
Opcode是一种PHP脚本编译后的中间语言,类似于Java的 ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经 过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
总结来说就是经过了扫描-->分析-->编译-->执行了这四个过程
(5)php的配置文件
1.配置文件:/etc/php.ini, /etc/php.d/*.ini
对php配置文件修改后的重启服务有两种方法
基于Modules: 重启httpd服务即可
基于FastCGI:重启php-fpm服务
注释符:较新的版本中,已经完全使用;进行注释 #:纯粹的注释信息 ;:用于注释可启用的directive
2.php中常见的设置
max_execution_time= 30 最长执行时间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 开启短标签,如<? phpinfo();?>
实验:基于php语言脚本的练习
cd /var/www/html中,在该目录下编辑a.php和b.php脚本
vim a.php
1 <h1>
2 <?php echo "hello world!"?>
3 </h1>
4
vim b.php
1 <h1>
2 <?php
3 echo "hello php2!";
4 phpinfo();
5 ?>
6 </h1>
修改b.php
1 <h1>
2 <?php
3 echo "hello php2!";
4 echo date ("Y/m/d h:i:s");——显示时间
5 phpinfo();
6 ?>
7 </h1>
vim /etc/php.ini
重启服务:systemctl restart httpd
也可以将index.html改为index.php,将index.php设为默认主站点
cd /var/www/html
cp b.php index.php
vim /etc/httpd/conf/httpd.conf
三.LAMP
(1)LAMP
httpd:接收用户的web请求;静态资源则直接响应;动态资源 为php脚本,对此类资源的请求将交由php来运行
php:运行php程序
MariaDB:数据管理系统
http与php结合的方式
CGI
FastCGI
modules (将php编译成为httpd的模块,默认方式)
MPM:
prefork: libphp5.so
event, worker: libphp5-zts.so
(2)LAMP的安装
CentOS 7:
Modules:httpd, php, php-mysql, mariadb-server
FastCGI:httpd, php-fpm, php-mysql, mariadbserver
systemctl start httpd.service systemctl start mariadb.service
CentOS 6:
Modules:httpd, php, php-mysql, mysql-server
FastCGI:默认不支持
service httpd start service mysqld start
注意:要使用prefork模型
(3)Php使用mysql扩展连接数据库
实现过程:以centos7,centos6最小化安装两台主机为实验主机
在centos6(最小化安装)中,通过yum install 安装mysql和mysql-server
开启mysql服务,进行编辑创建新的数据库
mysql> create database testdb;
mysql> grant all on testdb.* to testuser@'192.168.136.%' identified by 'centos';——授权并创建用户和设置密码
在centos7中,安装php-mysql。并vim /var/www/html/b.php
1 <h1>
2 <?php
3 $conn = mysql_connect('192.168.136.173','testuser','centos');
4 if ($conn)
5 echo "OK";
6 else echo "Failure";
7 mysql_close();
8 echo date ("Y/m/d h:i:s");
9 phpinfo();
10 ?>
11 </h1>
方法二:Php使用mysqli扩展连接数据库的测试代码
<?php
$mysqli=new mysqli("mysqlserver",“username",“password");
if(mysqli_connect_errno()){
echo "连接数据库失败!";
$mysqli=null; exit; }
echo "连接数据库成功!";
$mysqli->close();
?>
四.LAMP的应用
PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站 主机上的MySQL的数据库管理工具,让管理者可用Web接口管理 MySQL数据库
WordPress是一种使用PHP语言开发的博客平台,用户可以在支持 PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用
1.部署phpMyadmin
在官网上www.phpmyadmin.net下载 phpMyAdmin-4.0.10.20-all-languages.zip
cd /app 执行rz命令
在/var/www/html/进行解压
unzip /app/phpMyAdmin-4.0.10.20-all-languages.zip
创建软链接 ln -s phpMyAdmin-4.0.10.20-all-languages/ pma
进入pma
cp config.sample.inc.php config.inc.php
vim config.inc.php
安装php-mbstring,重启服务
进行登录后可以管理本机的数据库
2.在web端创建数据库
创建新的用户
设置用户用户名和密码,设置成功后点击执行
设置权限,进行授权
选择wpdb数据库,选择全选,点击执行
进行测试实验
3.设置wordpress
官网下载:https://cn.wordpress.org/
cd /app
rz
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /var/www/html
cd /var/www/html
ln -s wordpress/ blog
cd wordpress/
vim wp-config-sample.php
显示无法写入,可以手动创建文件,并将内容复制进去,或是修改权限来实现
在 /var/www/html中设置
setfacl -R -m u:apache:rwx wordpress/*
setfacl -R -m u:apache:rwx wordpress/
或者 cp wp-config-sample.php wp-config.php
vim wp-config.php
将数据库名称,数据库用户名和连接的主机名,密码进行修改
设置成功
进行安装
设置站点名称和用户名,密码
成功后,修改权限
在web端登陆访问