lnmp環境快速搭建及原理解析

来源:https://www.cnblogs.com/itsuibi/archive/2019/05/04/10798256.html
-Advertisement-
Play Games

剛開始學習php的時候是在wamp環境下開發的,後來才接觸到 lnmp 環境當時安裝lnmp是按照一大長篇文檔一步步的編譯安裝,當時是真不知道是在做什麼啊!腦袋一片空白~~,只知道按照那麼長的一篇文檔一步步的來做就能實現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環境如何需要編譯其他模塊還是建議使用編譯安裝的方式,找個時間將編譯安裝的的各個細節再研究下~~~,生命不息學習不止!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 好幾天沒有更新了,直接上效果吧,哈哈!(我想這個應該大部分都會!哈哈哈!) 代碼如下: html: css: 大家一起努力吧!! ...
  • ```js class TrieNode { constructor(data){ this.data = data this.children = new Array(26) this.isEndingChar = false this.text = '' } } class TrieTree {... ...
  • 如果第二次看到我的文章,歡迎右側掃碼訂閱我喲~ 👉 每周五早8點 按時送達。當然了,也會時不時加個餐~ Z哥在前面的三篇文章里和你一起聊了「高性能」主題下與「緩存」相關的內容。這次和你來聊聊提高性能的另一個大招——「非同步」。 如果你已經對「非同步」有所瞭解的話,這次可以讓你有更深刻的理解。如果你對「 ...
  • [TOC] 一. 簡述一致性哈希演算法 這裡不詳細介紹一致性哈希演算法的起源了, 網上能方便地搜到許多介紹一致性哈希演算法的好文章. 本文主要想動手實現一致性哈希演算法, 並搭建一個環境進行實戰測試. 在開始之前先整理一下 演算法的思路 : 一致性哈希演算法通過把每台伺服器的哈希值打在哈希環上, 把哈希環分成不 ...
  • const:靜態常量,也稱編譯時常量(compile-time constants),屬於類型級,通過類名直接訪問,被所有對象共用! a、叫編譯時常量的原因是它編譯時會將其替換為所對應的值; b、靜態常量在速度上會稍稍快一些,但是靈活性卻比動態常量差一些; c、靜態常量,隱式是靜態的,即被stati ...
  • 背景 電商中有這樣的一個場景: 1. 下單成功之後送積分的操作,我們使用mq來實現 2. 下單成功之後,投遞一條消息到mq,積分系統消費消息,給用戶增加積分 我們主要討論一下,下單及投遞消息到mq的操作,如何實現?每種方式優缺點? 方式一 step1:start transaction step2: ...
  • 老王的股票 大家好,我是小趙,目前任職藏劍山莊高級鑄劍師,在山莊裡和我玩的比較好的有老王和老劉他們幾個,都是組長級別的二貨們,經常混在一起打牌。 今天上午閑得蛋疼晃悠晃悠的晃到的老王的地盤,看到老王在埋頭寫程式: 這老王似乎在炒股票,好專業的樣子。 於是我伸手拍了拍老王的肩膀:“幹啥呢?”。 老王一 ...
  • [toc] 一.題目要求 我們在剛開始上課的時候介紹過一個小學四則運算自動生成程式的例子,請實現它,要求: 能夠自動生成四則運算練習題 可以定製題目數量 用戶可以選擇運算符 用戶設置最大數(如十以內、百以內等) 用戶選擇是否有括弧、是否有小數 用戶選擇輸出方式(如輸出到文件、印表機等) 最好能提供圖 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...