开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

+++++++LAMP布署Wordpress、phpMyadmin

简介:
+关注继续查看

常见动态资源服务模型

  • LAMP Linux Apache Mariadb|Mysql|Mongdb Php|Perl|Python

  • LAMMP Linux Apache Mariadb|Mysql|Mongdb Memocache Php|Perl|Python

  • LNMP Linux Nginx Mariadb|Mysql|Mongodb Php|Perl|Python

  • LNMMP Linux Nginx Mariadb|Mysql|Mongodb Memocache Php|Perl|Python

  • LAMT Linux Apache Mariadb|Mysql|Mongdb Tomcat

  • LNMT Linux Nginx Mariadb|Mysql|Mongdb Tomcat

httpd静态资源的响应模型

客户端通过http协议连接静态资源服务器

httpd动态态资源的响应模型

程序文件需要在虚拟机(PHP, Perl, Tomcat, Python)中运行后响应。

如果虚拟中的程序运行过程中需要数据库时,就通过连接数据库的驱动,驱动内提供的函数库完成封装报文、解封装报文和与mysql服务器交互。

  • CGI 

    • 静态资源: fork自身用子进程响应。

    • 动态资源:CGI调用对应程序,fork自身,程序作为子进程运行

    • 在同一个主机上通信IPC:

        消息队列、共享内存、旗语、套接字
        message queue, shared memor, semaphores, unix socket
    • 缺陷: **httpd处理的请求过多**

  • FastCGI 

    • 跨主机通信IPC:

        套接字、远程过程调用
        socket, rpc
  • 动态网站特性

    • 静态资源>动态资源(一个PV内1/10个为动态)

    • 1/100个需要mysql的数据[在应用程序服务器中]

    • 加强后端服务器的性能

  • httpd与php结合的方式

    • CGI: 作为HTTPD子进程<与tomcat, perl, python整合>

    • Modules: php作为httpd的模块, httpd调用模块不用生成子进程

    • FastCGI: 独立的服务器

文件查询和数据库查询的区别

  • 操作文件时都需要将数据载入内存中

    • 将文件中的所有数据块加载至内存进行查找

  • 数据库管理系统:[可以将数据存储为较小的数据集],查询时只用装载较小的数据集

    • 将部分字段抽取<复制>出来,做为一个较小的数据集,存储的位置有指向原位置的指针

    • 将抽取出的字段按特定的逻辑,再抽取一份,做为一个小的数据集

    • 查找到的key对应的指针会指向原位置所在的行[每行或多行为一个数据块] 

php解释器与mysql交互

php解释器中运行的php代码/程序,需要用到mariadb时,用驱动,连接mariadb

php

服务器端脚本编程语言,动态网站开发语言:php, asp, ruby, c, bash<解释器,提供程序功能>

  • 代码执行过程

    扫描(词法分析) --> parsing(语义分析-->表达式) --> compilation(表达式-->opcode) --> exec(opcode-->机器指令)

php加速方式

请求相同的动态资源时,之前缓存在内存中的opcode相同代码可以重复利用

即使是prefork,进程间也可以共用opcode

注意:prefork每个进程独立的,进程有自己的内存空间,不能使用其他进程内资源

存储系统

  • 文件系统: 文件 操作文件时,需要内核的系统调用

  • SQL数据库: mariadb, mysql, oracle, ms_sql 交互时,用驱动[函数库]连接

  • no_sql: redis, mongodb, hbase

  • new_sql: <存储,基于分布式模式,管理的存储的系统>

rpm提供LAMP组合布署开源程序

wordpress, phpMyadmin, discuss

CentOS 6rpm安装LAMP

  • 配置yum源

      # install -d /media/cdrom
      # mount -r /dev/cdrom /media/cdrom
      # mv -v /etc/yum.repos.d/CentOS-Base.repo{,.bak}
      # vim /etc/yum.repos.d/CentOS-Base.repo
          [C6CentOS]
          name=CentOS 6
          failovermethod=priority
          baseurl=file:///media/cdrom
                  http://mirrors.aliyun.com/centos/6/os/i386/
          gpgcheck=0
          enabled=1
          [EPEL]
          name=Fedora EPEL
          failovermethod=priority
          baseurl=http://mirrors.aliyun.com/epel/6/i386/
                  http://mirrors.sohu.com/fedora-epel/6/i386/
          gpgcheck=1
          gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-6
          enabled=1
  • 安装

      # yum -y install httpd php php-mysql mysql-server
  • 配置

      # rpm -ql php    
      /etc/httpd/conf.d/php.conf              //提供httpd的配置文件
      /usr/lib/httpd/modules/libphp5.so       //提供给httpd的模块
      PS:此模块仅能运行prefork模型, worker|event模型:libphp5-zts.so模块
      # httpd -M
       php5_module (shared)                   //模块已经被装载
  • 启用httpd, mysql

      # service httpd start
      # service mysqld start
    • 测试httpd

        # ss -tnl
        在Windows浏览器中键入IP地址测试
        http://
    • 测试mysql

        # ss -tnl
        # mysql
        mysql>
  • 测试

    • php程序执行环境

        # vim /var/www/html/index.php
        <?php 
            phpinfo();
        ?>

    • 测试php程序通过驱动连接mysql服务器

      php-mysql驱动所提供的调用: mysql_connect, mysql_close php代码以';'结尾

         # vim /var/www/html/index.php
         <?php
         $link=mysql_connect('localhost','root','');
         if($link)
            echo "Success";
        else
            echo "Failure";
        mysql_close();
        ?>

        停止服务
        # service mysqld stop

布署wordpress[个人博客站点]

  • 获取wordpress wordpress中文站点

  • 服务器环境要求

    PHP 5.2.4或更新版本

    MySQL 5.0或更新版本

    Apache mod_rewrite模块(可选,用于支持“固定链接”和“站点网络”功能)

  • 下载链接: wordpress-4.8.1-zh_CN.zip

  • 展开并配置

      # unzip wordpress-4.8.1-zh_CN.zip
      # cp -a wordpress /var/www/html/
      # cd /var/www/html/
      # ln -sv wordpress wp            //便于升级
      # cd wp
      # cp wp-config-sample.php wp-config.php
      # vim  wp-config.php 
          define('DB_NAME', 'wpdb');
          define('DB_USER', 'wpuser');
          define('DB_PASSWORD', 'wppass');
  • mysql中添加用户

      # mysql
      mysql> GRANT ALL ON *.* TO 'wpuser'@'localhost' IDENTIFIED BY 'wppass';
      mysql> GRANT ALL ON *.* TO 'wpuser'@'127.0.0.1' IDENTIFIED BY 'wppass';
      mysql> FLUSH PRIVILEGES;
      mysql> CREATE DATABASE wpdb;
      mysql> \q
  • 在Windows主机中,输入CentOS虚拟主机的IP测试

    http://172.16.100.1/wp

布署phpMyadmin[mysql Web GUI]

  • 获取phpMyadminphpMyadmin官网

    • 旧版本与PHP 5.2和MySQL 5兼容。不支持PHP 5.5或更新版本。至2017年4月1日为止。

    • 当前版本与PHP 5.5至7.1和MySQL 5.5及更高版本兼容。

    • 下载链接: phpMyAdmin-4.7.4-all-languages.zip

    • 下载链接: phpMyAdmin-4.0.10.20-all-languages.zip

    • 获取版本

        # rpm -q php
        # rpm -q mysql
        # rpm -q httpd
    • 展开并配置

        # unzip phpMyAdmin-4.0.10.20-all-languages.zip
        # cp -a phpMyAdmin-4.0.10.20-all-languages.zip /var/www/html
        # cd /var/www/html/
        # ln -sv phpMyAdmin-4.0.10.20-all-languages pma
        # cd pma
        # cp config.sample.inc.php config.inc.php
        # openssl rand -hex 16
        e870cf5bb5e30295ca0389f77b469919
        # vim config.inc.php 
        $cfg['blowfish_secret'] = ' e870cf5bb5e30295ca0389f77b469919'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
        ['AllowNoPassword'] = false; //拒绝空密码登陆
    • mysql中给root用户添加密码

        # mysql
        mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('magedu');
        mysql> SET PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('magedu'); 
        mysql> FLUSH PRIVILEGES;
        mysql> \q
    • 在Windows主机中,输入CentOS虚拟主机的IP测试

      http://172.16.100.3/pma

    • 安装php扩展: php-mbstring

        # yum install php-mbstring   //A module for PHP applications which need multi-byte string handling
        [root@localhost pma]# rpm -ql php-mbstring
        /etc/php.d/mbstring.ini
        /usr/lib/php/modules/mbstring.so   //提供了php的扩展模块或库
    • 重载httpd,因为php是httpd的模块

        # rpm -ql php
        /etc/httpd/conf.d/php.conf
        /usr/lib/httpd/modules/libphp5.so  //php是httpd的模块
      
        # service httpd reload
    • 再次测试 

CentOS 7rpm安装LAMP

  • 安装

      # yum -y install httpd php php-mysql mariadb-server
  • 启动

     # systemctl start httpd.service
     # systemctl start mariadb.service

给php添加xcache模块,实现缓存加速

  • 安装前测试

      # ulimit -n 65535
      # php -m
      [Zend Modules]
      [root@localhost pma]# ab -c 1000 -n 4000 172.16.100.3/pma
      Server Software:        Apache/2.2.15
      Server Hostname:        172.16.100.3
      Server Port:            80
    
      Document Path:          /pma
      Document Length:        310 bytes
    
      Concurrency Level:      1000                   //并发数  
      Time taken for tests:   5.968 seconds
      Complete requests:      4000                   //请求数
      Failed requests:        0
      Write errors:           0
      Non-2xx responses:      4003
      Total transferred:      2137602 bytes
      HTML transferred:       1240930 bytes
      Requests per second:    670.23 [#/sec] (mean)  //每秒请求数
      Time per request:       1492.033 [ms] (mean)   //每批请求所需要的时间
      Time per request:       1.492 [ms] (mean,      //每个请求所需要的时间
      Transfer rate:          349.77 [Kbytes/sec]    //3MiB带宽
    
      Connection Times (ms)
                    min  mean[+/-sd] median   max
      Connect:        0  338 613.4    157    3130   //客户端建立连接
      Processing:     1  379 771.3    168    4759   //服务器处理请求
      Waiting:        0  322 700.7    133    4505   //服务器响应
      Total:        187  716 1088.9    329    5798  //一次完整的事务
  • 安装xcache

      # yum -y install php-xcache // Fast, stable PHP opcode cacher
    
      查看安装所提供的模块:
      # rpm -ql php-xcache
      /etc/php.d/xcache.ini
      /usr/lib/php/modules/xcache.so      //为php提供的模块
  • 重载httpd

      # service httpd reload
      # php -m
      [Zend Modules]
      XCache
      XCache Cacher
      XCache Coverager
      XCache Optimizer
  • 测试

    • 预热

        # ab -c 10 -n 100 www.mykernel.cn/pma
        # ab -c 10 -n 100 www.mykernel.cn/pma
        # ab -c 10 -n 100 www.mykernel.cn/pma
    • 测试

        [root@localhost pma]# ab -c 1000 -n 4000 172.16.100.3/pma
        Server Software:        Apache/2.2.15
        Server Hostname:        172.16.100.3
        Server Port:            80
      
        Document Path:          /pma
        Document Length:        310 bytes
      
        Concurrency Level:      1000
        Time taken for tests:   6.510 seconds
        Complete requests:      4000
        Failed requests:        0
        Write errors:           0
        Non-2xx responses:      4006
        Total transferred:      2139204 bytes
        HTML transferred:       1241860 bytes
        Requests per second:    614.46 [#/sec] (mean)     //每秒请求
        Time per request:       1627.457 [ms] (mean)      
        Time per request:       1.627 [ms] (mean, across all concurrent requests)
        Transfer rate:          320.91 [Kbytes/sec] received
      
        Connection Times (ms)
                      min  mean[+/-sd] median   max
        Connect:        0  180 590.6      4    3014
        Processing:     0  531 1086.5    101    6376
        Waiting:        0  527 1086.1     97    6372
        Total:         75  711 1431.8    106    6477
      
        Percentage of the requests served within a certain time (ms)
          50%    106
          66%    114
          75%    145
          80%    542
          90%   3210
          95%   4408
          98%   5325
          99%   6081
         100%   6477 (longest request)
         ...

有问题反馈

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

  • 邮件:lccnx@foxmail.cn

  • QQ: 2192383945

感激










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1969713,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WordPress网站选择LNMP环境和LAMP环境哪个好?
WordPress建网站选择LNMP环境还是LAMP环境服务更好呢?现在建站常用的两大环境服务是 LNMP和LAMP,因为这两种环境易用,好上手,所以普及率一直很高。比如我们常用的宝塔面板,在初次登陆界面就会提示二选一。要想知道哪个好用,我们先来详细了解这两款环境服务。
182 0
Phpmyadmin搭建
Phpmyadmin搭建
1118 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
CentOS Nginx PHP JAVA多语言镜像使用手册
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载