Ubuntu 18.04上nginx+php環境搭建


轉載自:https://blog.csdn.net/qq_36290650/article/details/90411807;添加和修改了部分內容

一、說明

正在嘗試基於nginx+php搭建web服務器,中途遇到不少問題。掙扎了三四個小時終於完成了,這里分享下經驗。

實驗環境

操作系統:Ubuntu 18.04 64位

nginx:1.14.0

php:7.2.17-0

php-fram:php7.2-fpm
二、實驗步驟

1、安裝必要程序以及依賴

    #安裝程序包
    sudo apt-get install php7.2
    sudo apt-get install php7.2-fpm     #nginx與php之間的橋梁(這個貌似在安裝php7.2的時候就自動安裝了)

    sudo apt remove apache2* #刪除自動安裝的Apache2,注意最后面有星號

    sudo apt autoremove  # 清除Apache2的依賴
    sudo apt-get install nginx
     
    #安裝必要依賴
    sudo apt-get install php-json
    sudo apt-get install php-curl
    sudo apt-get install php7.2-mysql
    sudo apt-get install php7.2-cgi

2、打開 http://127.0.0.1,出現下面界面則表示安裝成功

有可能顯示為阿帕奇主頁,不要緊張,可以嘗試刪除 /var/www/html/index.html(這是因為nginx的一個Server的根木錄也是/var/www/html,而安裝php的時候會自動安裝apache2導致往這里寫了這個index.html靜態文件,哪怕是卸載了Apache2,但是由nginx提供的index.html還是變成了Apache的)

3、配置php-frm

(1)編輯fpm配置文件

    sudo gedit /etc/php/7.2/fpm/php.ini
     
    #修改參數如下:
    # 778行 ;cgi.fix_fathinfo=1  更改為  cgi.fix_fathinfo=1

    sudo gedit /etc/php/7.2/fpm/pool.d/www.conf
     
    #修改參數如下
    #  36行 listen = 127.0.0.1:9000 (原先值是/run/php/php7.2-fpm.sock)
    #  62行 listen.allowed_clients = 127.0.0.1(這個根據自己情況設置,可以不管他)
    # 113行 pm.max_children = 50
    # 139行 pm.max_requests = 500
    # 340行 request_terminate_timeout = 0
    # 344行 rlimit_files = 1024
    # 以上部分,包括但不限於去除前面的";"(注,上面的我就改了個listen)

(2)編寫php測試程序

創建文件: /var/www/html/index.php,內容如下:

    <h1>
        <span> hello, this is test page </span>
    </h1>

創建文件: /var/www/html/info.php,內容如下:

<?php phpinfo(); ?>(如果全是php代碼沒有html似乎可以不用后面的?>)

(3)配置nginx

sudo gedit /etc/nginx/sites-available/default

第44行,在index.html前面加入index.php

第56-62行,用如下內容替換(不是替換,其實就是取消注釋):(這里其實只需要保留fastcgi_pass 127.....和一個include snippets/...的配置即可,其他的nginx都幫我們寫好了)

    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

(4)重啟服務

    sudo service php7.2-fpm restart
    sudo service nginx restart (-s reload即可)【這兩個都是會開啟自動啟動的(如果是用apt安裝的話)】

【個人修改注:它的原理其實就是nginx發現是php文件然后發現有配置這種文件的cgi,然后就將它發送給php-fpm(9000端口)去處理返回一個靜態數據,然后再由nginx返回,其實這個時候php-fpm就已經類似我們的后端服務了,而.php文件就類似后端服務的模板文件,不過區別在於.php文件是由nginx獲取給php處理,而java后端的模板文件則是nginx將一個請求轉發給java服務,java服務發現這個請求是請求模板文件,然后處理為靜態文件返回】(所以真心沒看出來PHP的優勢是什么,為啥那么多公司用。。)

【可以在/var/www/html/里創建一個比如叫shopping-app的目錄,表示這里存放的是shopping-app這個應用的前端文件,同時配置一個nginx配置來訪問此目錄所有文件,然后將這個目錄作為php項目的目錄,在里面添加各種.php文件

,這樣就能用vscode來打開該目錄進行PHP文件開發了】

三、檢驗成果

1、瀏覽器訪問 http://127.0.0.1 或者 http://127.0.0.1/index.php

2、瀏覽器訪問 http://127.0.0.1/info.php

3、瀏覽器訪問 http://127.0.0.1/index.nginx-debian.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM