zoukankan      html  css  js  c++  java
  • lnmp环境快速搭建及原理解析

    刚开始学习php的时候是在wamp环境下开发的,后来才接触到 lnmp 环境当时安装lnmp是按照一大长篇文档一步步的编译安装,当时是真不知道是在做什么啊!脑袋一片空白~~,只知道按照那么长的一篇文档一步步的来做就能实现lnmp的搭建。最近工作闲暇之余又想起来了这个悲惨的事情,然后我就想能不能不看文档就把lnmp环境搭建起来呢(当然我知道有一键安装脚本这个东东,我们暂时把它忽略因为它真的是太简单啦)?当时我的想法是反正  l(linux)+ n(nginx)+ m(mysql)+ p(php)设计到的东西也就这四种,那我使用 apt-get (ubuntu 系统为例)直接安装不就好啦,至于每个软件之间的通讯那就再另想办法了,无非是通过什么配置或者驱动什么的连接起来的,于是我变开始了我的折腾之旅。。。。

    所谓实践是要以理论来做基础的,先上一张我自己理解的图镇楼

    原理嘛就在楼上我觉得我画的还是挺通俗易懂的~~

    在lnmp中关键性的就两点:

    1.nginx接收客户端发来的请求后找到对应的执行脚本文件再用php-fpm来解释执行脚本文件并将结果返回给客户端

    2.php通过php扩展pdo、mysql、或者mysqli来操作mysql数据库实现对数据的存储

    只要将以上两点能够实现那么基础的lnmp环境也就搭建好啦!

    应广大网友的要求下面我要开始我的表演啦,啊不,是研究~~

    首先交代下环境 腾讯云服务器(ubuntu 16.4 系统) 这样的话lnmp中的 l 就有啦

    接下来将 nginx 、mysql 、php先安装好。依次执行如下命令

    sudo apt-get update
    
    sudo apt-get install nginx
    
    sudo apt-get install php
    
    sudo apt-get install  mysql-server

    安装好后如图:

    下面我们先实现下 nginx 和 php的通讯,这里我们先要明确下nginx的配置文件在什么地方,这里可以使用以下命令找一下

    sudo find / -name nginx.conf

    找到文件     /etc/nginx/nginx.conf  我们打开该文件修改下配置添加如下代码:

    server {
            listen       8200;
            server_name  localhost;
    
    
            location / {
                root   /usr/share/nginx/html;  #填写项目的根目录
                index  index.php index.html index.htm;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            location ~ .php$ {
                root           /usr/share/nginx/html; #填写项目的根目录
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    
    
        }

    访问 8200 端口会看到nginx的经典页面,但是这时我们访问的是静态页面也就是html页面而不是PHP页面。不过配置中已经将php的相关配置写好啦,我们先将 nginx与php之间通讯需要使用的php-fpm安装上之后再讲如何配置。 这里还是使用 apt-get 工具

    sudo apt-get install php-fpm

    安装好之后找到  php-fpm的配置文件  "/etc/php/7.0/fpm/pool.d/www.conf" ,打开该文件我们会看到这条语句

    listen = /run/php/php7.0-fpm.sock

    这里监听的 listen 值 与 nginx.conf 中  fastcgi_pass 的值是相对应的

    www.conf(php-fpm) 中的listen值 nginx.conf  中的fastcgi_pass
    /run/php/php7.0-fpm.sock
    unix:/run/php/php7.0-fpm.sock
     9000  127.0.0.1:9000

    这里我们使用第一种方式 并且编写一个php文件查看是否配置成功(不要忘了执行php7.0-fpm将php-fpm运行起来),如图所示,说明我们现在将第一个问题解决啦实现了php与nginx之间的通讯

    开始解决第二个问题:如何将php 与 mysql通讯这里我们使用 php_pdo这个扩展实现操作数据库,在上面的截图我们可以看到已经安装了php扩展,那么我们来写一个pdo连接的程序来测试下;

    <?php
    //连接数据库  
    $dsn="mysql:dbname=mysql;host=127.0.0.1";
    //数据库的用户名  
    $user="root";
    //数据库的密码  
    $password="123456";
    //生成PDO对象  
    $object = new PDO($dsn,$user,$password);
    //执行添加  
    $sql="select * from user";
    $result = $object->query($sql);
    echo "一共从表中获取到".$result->rowCount()." 条记录:<br>";
    foreach($result as $row){
            echo $row['User']."<br>";
    }

    然后直接访问 8200 接口,然后。。。。崩溃啦,返回500错误,我们看下nginx的报错日志

    PHP message: PHP Fatal error:  Uncaught PDOException: could not find driver in /usr/share/nginx/html/index.php:9

    简单的翻译下就是没有找到 mysql 驱动。。。开始看见这个报错的时候我是一脸蒙蔽。。什么驱动?不是有pdo就可以了吗??? 图样图森破啊,普及下mysql驱动的事情

    php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式

    这里主要包括 mysqlnd 和 libmysql 两种驱动但是我们选择第一种,什么?你问为什么?简单啊!按照惯例执行

    sudo apt-get install php-mysqlnd

    再来看下刚才的页面

    好啦。到这里我们的lnmp环境就搭建完啦。全程只是用了apt-get 这个工具,是不是很爽~~

    当然这只是适用于搭建简单的lnmp环境如何需要编译其他模块还是建议使用编译安装的方式,找个时间将编译安装的的各个细节再研究下~~~,生命不息学习不止!

  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/itsuibi/p/10798256.html
Copyright © 2011-2022 走看看