zoukankan      html  css  js  c++  java
  • LAMP架构

    LAMP架构

    LAMP:

    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工作原理

    image-20210628080307953

    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);
    ?>
    

    image-20210628081743705

    (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)在网站上进行测试页面 

    image-20210628081913220

    常见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
    

    image-20210628082124406

    (3)在修改后目录名的pma下,修改配置文件名称,只需要将配置文件的密码进行修改随机修改即可

    [root@centos7pma]#cd pma
    [root@centos7pma]#cp config.sample.inc.php  config.inc.php
    [root@centos7pma]#vim config.inc.php
    

    image-20210628082213843

    (4)修改完配置之后需要重启httpd服务,并在网站输入本地IP地址加上pma目录名

    systemctl  restart httpd
    

     192.168.34.101/pma

    image-20210628082300942

    创建一个数据库wordpress

    image-20210628082350955

    创建一个用户并授权连接192.168.34.%主机

    image-20210628082507176

    image-20210628082606442

    实现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
    

    image-20210628082947337

    (4)此时wordpress博客已经搭建完毕,我们来登陆看一下里边内容,填写完信息之后,点击安装wordpress就会安装大量的表

    image-20210628083058760

    布署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,然后根据向导直接往下安装

    image-20210628083238137

    默认选择全新安装,然后下一步

    image-20210628083304528

    设置论坛账号密码:

    image-20210628083338506

    此时登录论坛账号和密码:

    image-20210628083407125

    (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包信息,并修改指定的配置文件

    image-20210628083745898

    修改配置文件并重新启动php服务

    [root@centos777~]#vim /etc/php-fpm.d/www.conf
    [root@centos777~]#systemctl restart  php-fpm.service
    

    image-20210628083846626

    (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();
    }
    ?>
    

    image-20210628083941967

    (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)测试搭建效果:

    image-20210628084043626

    下来基于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 
    

    image-20210628084135322

    查看搭建wordpress博客效果:http://192.168.34.102/wordpress/wp-admin/install.php

    显示此效果,是因为此时是基于php页面进行查找结果,本机如果没有静态页面就无法找到

    image-20210629074214261

    此时在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
    

    image-20210629074310776

    转载至:https://www.cnblogs.com/struggle-1216

    很高兴各位朋友能欣赏作品,本文版权归作者和博客园共有,欢迎转载,请在文章页面明显位置给出原文出处,否则将追究法律责任。 原文链接: https://www.cnblogs.com/strugger-0316
  • 相关阅读:
    django4-模板进阶
    django3-视图函数进阶
    django1-web开发基础知识
    django2-登录与出版社
    django3-路由系统进阶
    web前端-bootstrap
    Java发送邮件--web.xml配置,Java代码配置
    yii框架美化访问路径,去掉index.php/?r=部分
    JAVA集合框架的特点及实现原理简介
    详解:Java字符串类型"switch"的底层原理
  • 原文地址:https://www.cnblogs.com/strugger-0316/p/14970672.html
Copyright © 2011-2022 走看看