实现LAMP架构
LAMP介绍
LAM(M)P:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python
WEB资源类型:
静态资源:原始形式与响应内容一致,在客户端浏览器执行
动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
Web相关语言
客户端技术: html,javascript,css,jpg
服务器端技术:php, jsp,python,asp
CGI
CGI:Common Gateway Interface(通用网关接口)
可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
请求流程:
Client -- (httpd) --> httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql
php: 脚本编程语言、嵌入到html中的嵌入式web程序语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
LAMP工作原理
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性能的改进
PHP Zend Engine
1> Zend Engine是开源的、PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生Andi Gutmans和Zeev Suraski所开发,Zend也正是此二人名字的合称。后来两人联合创立了Zend Technologies公司
2> Zend Engine 1.0于1999年随PHP 4发布,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。Zend Engine为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语言方面发挥了重要作用
3> Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式opcode(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode
PHP的Opcode
Opcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens)
2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式
3、Compilation 将表达式编译成Opcode
4、Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能
扫描-->分析-->编译-->执行
php配置
(1)php:脚本语言解释器
(2)配置文件:/etc/php.ini, /etc/php.d/*.ini
(3)配置文件在php解释器启动时被读取
(4)对配置文件的修改生效方法
Modules:重启httpd服务
FastCGI:重启php-fpm服务
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
注释符:较新的版本中,已经完全使用;进行注释
#:纯粹的注释信息
;:用于注释可启用的directive
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配置
php.ini的核心配置选项文档: http://php.net/manual/zh/ini.core.php
php.ini配置选项列表:
http://php.net/manual/zh/ini.list.php
php语言格式
<?php
...php code...
?>
php代码
格式1
<?php
echo "<h1>Hello world!</h1>"
?>
格式2
<h1>
<?php echo "Hello world!" ?>
</h1>
php测试代码
<?php
echo date("Y/m/d H:i:s");
phpinfo();
?>
Php使用mysqli扩展连接数据库
Php使用mysqli扩展连接数据库的测试代码
<?php
$mysqli=new mysqli("mysqlserver",“username",“password");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
实验演示:
A主机:192.168.34.101
B主机:192.168.34.102
(1)在B主机上安装mariadb-server服务并启动服务
[root@centos777~]#yum install mariadb-server -y
[root@centos777~]#systemctl start mariadb
(2)在B主机上创建一个测试用户
grant all on *.* to test@'192.168.34.%' identified by 'centos';
(3)在A主机安装php-mysql包
[root@centos7html]#yum install php-mysql -y
(4)在A主机的/var/www/html目录下写PHP文件
[root@centos7html]#cd /var/www/html
[root@centos7html]#vim mysqli.php 写入php脚本
<?php
$mysqli=new mysqli("192.168.34.102","test","centos");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
(5)在网站上测试页面效果,输入192.168.34.101/mysqli.php即可访问到代码结果
Php使用PDO(PHP Data Object)扩展连接数据库
使用pdo扩展连接数据库的测试代码1
主机A:192.168.34.101
主机B:192.168.34.102
(1)修改主机A的php脚本
[root@centos7html]#vim pdo.php
<?php
$dsn='mysql:host=192.168.34.102;dbname=test';
$username='test';
$passwd='centos';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>
(2)主机B的数据库服务启动
systemctl start mariadb
(3)在网站上进行测试页面
输入192.168.34.101/pdo.php即可访问当代码结果
使用pdo扩展连接数据库的测试代码2
(1)修改主机A的php脚本
cd /var/www/html
vim pdo1.php
<?php
try {
$user='test';
$pass='centos';
$dbh = new PDO('mysql:host=192.168.34.102;dbname=mysql', $user, $pass);
foreach($dbh->query('SELECT user,host from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
(2)在网站上进行测试页面
常见LAMP应用
PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
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
下载网址:https://www.phpmyadmin.net/downloads/
LAMP部署:
(1)下载PhpMyAdmin包,并传到linux系统上,并解压改名
rz 传到linux包
[root@centos7html]#tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz 解压包
[root@centos7html]#mv phpMyAdmin-4.0.10.20-all-languages pma 起名为pma
(2)查看需要需要哪些包,实现LAMP的前提,安装对应的包,启动mariadb,httpd服务
[root@centos7pma]#yum install php-mbstring -y
[root@centos7pma]#yum install php
[root@centos7pma]#yum install php-mysql
[root@centos7pma]#yum install maridb-server
[root@centos7pma]#yum install httpd
(3)在修改后目录名的pma下,修改配置文件名称,只需要将配置文件的密码进行修改随机修改即可
[root@centos7pma]#cd pma
[root@centos7pma]#cp config.sample.inc.php config.inc.php
[root@centos7pma]#vim config.inc.php
(4)修改完配置之后需要重启httpd服务,并在网站输入本地IP地址加上pma目录名
systemctl restart httpd
192.168.34.101/pma
创建一个数据库wordpress
创建一个用户并授权连接192.168.34.%主机
实现wordpress博客搭建
WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用
官网:https://cn.wordpress.org/
(1)官网下载wordpress包,并将包解压缩
[root@centos7html]#rz
[root@centos7html]#unzip wordpress-5.0-zh_CN.zip
[root@centos7html]#pwd
/var/www/html
(2)安装相关的软件包
[root@centos7html]#yum install php -y
[root@centos7html]#yum install php-mysql -y
[root@centos7html]#yum install mariadb-server -y
[root@centos7~]#yum install httpd -y
(3)切换到wordpress目录下,并将wp-config-sample.conf改名称
[root@centos7html]#cd wordpress/
[root@centos7wordpress]#ls
index.php wp-activate.php wp-comments-post.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
license.txt wp-admin wp-config-sample.php wp-includes wp-login.php wp-signup.php
readme.html wp-blog-header.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
[root@centos7wordpress]#cp wp-config-sample.php wp-config.php
(4)此时wordpress博客已经搭建完毕,我们来登陆看一下里边内容,填写完信息之后,点击安装wordpress就会安装大量的表
布署Discuz网站
官网:https://www.discuz.net/forum.php
Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议
(1)将Discuz包传到linux中,并解压缩
[root@centos7html]#cd /var/www/html
[root@centos7html]#rz
[root@centos7html]#unzip Discuz_X3.3_SC_UTF8.zip
[root@centos7html]#ls
Discuz_X3.3_SC_UTF8.zip pdo1.php phpMyAdmin-4.0.10.20-all-languages.tar.xz readme utility wordpress-4.9.4-zh_CN.tar.gz
mysqli.php pdo.php pma upload wordpress
(2)开始Discuz安装
[root@centos7html]#setfacl -R -m u:apache:rwx upload/
(3)开始安装upload
在网页上输入192.168.34.101/upload,然后根据向导直接往下安装
默认选择全新安装,然后下一步
设置论坛账号密码:
此时登录论坛账号和密码:
(4)安装完论坛之后将apache用户的权限取消
[root@centos7html]#setfacl -R -m u:apache:- upload/
布署fastcgi
A主机:192.168.34.100(安装数据库)
B主机:192.168.34.102 (安装的是php、httpd服务,处理php程序)
(1)B主机上安装php和httpd相应的包
[root@centos777~]#yum install php-fpm php-mysql -y
[root@centos7~]#yum install httpd -y
(2)在A主机安装mariadb-server,启动mysql服务,并创建一个test账号,授予所有权限
[root@centos7~]#yum install mariadb-server -y
[root@centos7~]#systemctl start mariadb
MariaDB [(none)]> create database wordpress; 创建一个数据库
MariaDB [(none)]> grant all on *.* to test@'192.168.34.%' identified by 'centos';创建一个数据库账号
(3)在B主机上查看php-fpm包信息,并修改指定的配置文件
修改配置文件并重新启动php服务
[root@centos777~]#vim /etc/php-fpm.d/www.conf
[root@centos777~]#systemctl restart php-fpm.service
(4)在B主机上新建一个目录,并在目录下创建一个pdo.php程序
修改完配置之后最好重新启动php服务:systemctl restart php-fpm.service
[root@centos777~]#mkdir /data/html
[root@centos777~]#cd /data/html
[root@centos777html]#vim pdo.php 目的是为了连接数据库
<?php
try {
$user='test';
$pass='centos';
$dbh = new PDO('mysql:host=192.168.34.100;dbname=mysql', $user, $pass); 连接A主机的数据库
foreach($dbh->query('SELECT user,host from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
(5)在B主机上新建一个配置文件,并修改相关内容
[root@centos7~]#vim /etc/httpd/conf.d/fcgi.conf 新建一个配置文件,并修改相关内容
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.34.102:9000/data/html/$1
[root@centos7~]#cd /var/www/html
[root@centos7html]#echo 192.168.34.101 > index.html 新建一个index.html文件
[root@centos7html]#systemctl restart httpd 重新启动httpd服务
(6)测试搭建效果:
下来基于fastcgi搭建wordpress
(1)将wordpress包导入到linux中,然后解压此包
[root@centos777html]#cd /data/html
[root@centos777html]#rz
[root@centos777html]#unzip wordpress-5.0-zh_CN.zip
(2)修改wordpress包里边的配置文件
[root@centos777html]#cd wordpress/
[root@centos777wordpress]#ls
index.php wp-activate.php wp-comments-post.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
license.txt wp-admin wp-config-sample.php wp-includes wp-login.php wp-signup.php
readme.html wp-blog-header.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
[root@centos777wordpress]#cp wp-config-sample.php wp-config.php
[root@centos777wordpress]#vim wp-config.php
查看搭建wordpress博客效果:http://192.168.34.102/wordpress/wp-admin/install.php
显示此效果,是因为此时是基于php页面进行查找结果,本机如果没有静态页面就无法找到
此时在B主机上,需要在/var/www/html目录下在解压一份wordpress包,就可以找到静态的php页面:
[root@centos777html]#cd /var/www/html
[root@centos777html]#ls
index.html wordpress wordpress-5.0-zh_CN.zip
[root@centos777html]#unzip wordpress-5.0-zh_CN.zip
实现LAMP架构的更多相关文章
- Netlog 的数据库及 LAMP 架构
Database Sharding@Netlog 详细的描述了 Netlog 数据库架构的演变过程,文章浅显易懂,非常值得学习.本文数据.图片均来自:Database Sharding at Netl ...
- LNMP 与 LAMP 架构的区别及配置解决方案
2014-12-31 10:33| 发布者: digitser| 查看: 5618| 评论: 0|原作者: liangsheng 摘要: LNMP 与 LAMP 架构的区别及配置解决方案 LNMP 的 ...
- Apache web服务器(LAMP架构)(week3_day4)--技术流ken
apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...
- 末学者笔记--apache编译安装及LAMP架构上线
apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...
- LAMP架构部署和动态网站环境的配置
实验环境: 操作系统:centos 7.5 服务器IP:192.168.10.5 运行用户:root 连接工具:xshell工具 web环境:Linux+apache+php+mariadb(LAMP ...
- Apache web服务器(LAMP架构)
Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...
- LAMP架构(三)
第十九课 LAMP架构(三) 目录 一.配置防盗链 二.访问控制Directory 三.访问控制FilesMatch 四.限定某个目录禁止解析php 五.限制user_agent 六.php相关配置 ...
- LAMP架构(二)
第十八次课 LAMP架构(二) 目录 一.Apache默认虚拟主机 二.Apache用户认证 三.域名跳转 四.Apache访问日志 五.访问日志不记录静态文件 六.访问日志切割 七.静态元素过期时间 ...
- LAMP架构上(一)
第十七课LAMP架构上(一) 目录 一.LAMP架构介绍 二.MySQL.MariaDB介绍 三.MySQL安装 四.MariaDB安装 五.Apache安装 六.安装PHP5 七.安装PHP7 八. ...
- rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构
rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构 2017年10月01日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~准备阶段~~~~~~~~~~~~~ ...
随机推荐
- fiddler https 抓包
手机上https抓包: http://blog.csdn.net/wangjun5159/article/details/52202059 需要给fiddler安装插件CertMaker for iO ...
- ubuntu16.04 TLS安装java
apt-get install software-properties-commonadd-apt-repository ppa:webupd8team/javaapt-get updateapt-g ...
- Tools - 关于Network
Tcpdump homepage - tcpdump wiki - tcpdump Wireshark homepage - wireshark wiki - wireshark Wireshark基 ...
- 【Aizu - 0189】Convenient Location (最短路 Floyd算法)
Convenient Location 直接翻译了 Descriptions 明年毕业的A为就业而搬家.就职的公司在若干城市都有办公室,不同天出勤的办公室也不同.所以A在考虑住在哪去各个办公室的时长最 ...
- Memcached的安装与常用命令
一.概述 MSM:Memcached-Session-ManagerMemcached是一款高性能.分布式的内存对象缓存系统 二.安装Memcached 在安装Memcached之前,我们需要先安装上 ...
- VMware中 CentOs虚拟机的安装教程
首先点击创建新的虚拟机 选择典型安装,点击下一步 这里我们选择稍后安装操作系统,然后点击下一步 这里我们操作系统选择Linux操作系统,版本选择CentOs 7 64位,然后点击下一步 这里我们可以修 ...
- Python: 对于DataFrame.loc传入列表和传入元组输出区别的理解
def test(): import pandas as pd tuples = [ ('cobra', 'mark i'), ('cobra', 'mark ii'), ('sidewinder', ...
- java源码 -- AbstractCollection抽象类
简介 AbstractCollection是一个抽象类,它实现了Collection中除了iterator()和size()之外的所有方法.AbstractCollection的主要作用是方便其他类 ...
- Java Socket 的工作机制
转载,请加上原文链接: 目录 socket 对象的创建时间 socket 通信可能会造成死锁 socket 对象的创建时间 这里需要一点TCP的知识, TCP状态分析请看 --> TCP转态转换 ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的getTestSuite模块
getTestSuite主要是用于在testData里面获取测试集以及对应的测试数据,包括2个主要的方法,一个是获取测试集,一个是获取测试集里面要执行的测试用例 获取测试集方法: from Util. ...