LNMP 環境搭建

A. 軟件環境

Linux ubuntu 16.04 LTS 下載地址
Nginx nginx-1.12.0下載地址
PHP php-7.1.4下載地址
MySQL mysql-5.7.18下載地址php

在運行全部命令以前,請執行 apt-get updatehtml

因爲採用源碼包編譯安裝,因此須要一個 c 編譯器,若是提示爲找到 c 編譯器,那麼請執行 sudo apt-get install gcc 命令安裝 c compiler。可是你可能會碰到仍然找不到 c compiler cc 的狀況,請執行:apt-get install build-essentialmysql

編譯安裝所須要的軟件包,須要 make 依賴:linux

sudo apt-get install make

nginx 依賴的環境包:
Pcre pcre-8.40下載地址(有可能出現安裝了也仍然提示未找到,apt-get install libpcre3-dev詳情請看
Pcre2 pcre2-10.23下載地址
zLib zlib-1.2.11下載地址nginx

php 依賴的環境包:
libssl-dev,安裝方法:apt-get install libssl-dev
libxml2-dev,安裝方法:apt-get install libxml2-dev
libcurl4-gnutls-dev,安裝方法:sudo apt-get install libcurl4-gnutls-dev
libzip-dev 安裝方法:apt install libzip-devweb

php gd 庫須要的依賴:redis

  • libpng-devapt-get install libpng-dev
  • libjpeg-devapt-get install libjpeg-dev
  • libxpm-devapt-get install libxpm-dev
  • freetype-官網下載,無需如此麻煩 apt-get install libfreetype6-dev

另外,若是缺乏什麼 .h 這類的頭文件,請根據錯誤提示,例如 apt-get install libfreetype**freetype* 這樣安裝解決!sql

系統升級到  ubuntu 17.07
php 升級到  php-7.1.8

這個時候會報錯:libcurl 問題

find /usr -iname '*curl*'
// 建立一個軟鏈接(系統升級致使 curl 默認路徑改了,php 找不到了.....)
ln -s /usr/include/x86-linux-...../curl /usr/include/curl

php 編譯安裝擴展 phpize 命令 依賴的依賴包
m4,安裝方法:apt-get install m4
autoconf,安裝方法:apt-get install autoconfthinkphp

mysql 依賴的包:
libaio1,安裝方法:apt-get install libaio1ubuntu

若是出現 libpcre.so.1 找不到的錯誤,請手動連接:sudo ln -s /usr/local/lib/libpcre.so.1 /lib/libpcre.so.1

B. 安裝Linux系統

C. 安裝環境所需的依賴包

D. 安裝 Nginx

sudo tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
sudo ./configure 
        # 這個目錄要本身事先建立好
        --prefix=/usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0
        # 支持 tcp/udp 負載均衡
        --with-stream
sudo make
sudo make install

設置 nginx.conf 文件

// 修改運行用戶
user root;
// 修改日誌文件路徑
error_log logs/error.log;

http {
    // 加大上傳文件大小限制
    client_max_body_size 2048M;
    // 加大 nginx 等待 php cgi響應的時間
    fastcgi_read_timeout 3600s; 
    // 新增自定義配置文件路徑(省得在默認配置文件中新增數據)
    include 'vhost/*.conf';
}

而後在 vhost 目錄下,建立 www.conf 配置文件:

server {
    server_name test.com;
    listen 80;
    index index.html;
    root /myself/web/test;
    
    location / {
        autoindex on;
    }
}

E. 測試 Nginx

cd /usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0/conf
sudo gedit nginx.conf # 修改配置文件,添加 域名(具體看 windows 下 nginx.conf 配置文件)
sudo gedit /etc/hosts # 修改 hosts 文件,添加相應域名
cd ../sbin
sudo ./nginx # 便可!不要 sudo start ./nginx ,他會提示報錯的。

瀏覽器打開域名查看結果。

F. 安裝PHP-7.1.4

tar -zxvf php-7.1.4.tar.gz
cd php-7.1.4
sudo ./configure 
             // php 主體文件所在目錄
             --prefix=/usr/local/WebEnv/php-7.1.4
             // 默認配置文件在 ./lib 目錄下
             // 注意這裏是目錄!!
             // 請不要使用這個編譯選項,php 安裝完成後,請使用 php --ini
             // 查看配置文件路徑,而後修改。即推薦使用默認路徑
             // --with-config-file-path=/usr/local/webEnv/php-7.1.4
             --with-mysqli=mysqlnd 
             --with-pdo-mysql=mysqlnd 
             --with-openssl
             --with-tsrm-pthreads
             --with-curl
             --with-gd
             --with=swoole
             // 注意如下四個選項,須要提早安裝相關依賴!
             // 最後 freetype 這個選項,請使用 find / -iname 'freetype*' 來查找具體位置
             // 如下注釋掉的 php 編譯選項再也不須要,php 會自動查找
             // --with-png-dir=/usr/lib
             // --with-jpeg-dir=/usr/lib
             // --with-xmp-dir=/usr/lib
             // --with-freetype-dir=/usr/local/include/freetype2
             
             --enable-mbstring 
             --enable-ftp 
             --enable-pcntl 
             --enable-sysvmsg 
             --enable-sysvsem
             --enable-sysvshm 
             --enable-zip 
             --enable-sockets 
             --enable-mysqlnd
             --enable-bcmath
             --enable-maintainer-zts  
             --enable-fpm
sudo make
sudo make install

簡化版命令(可直接運行):
./configure --prefix=/usr/local/WebEnv/php-7.1.4 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with-gd --with=swoole --enable-mbstring  --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-zip --enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm && make && make install

修改 php.ini

須要複製 php 壓縮包解壓後的 php.ini-production/usr/local/WebEnvironment/PHP-7.2.0/lib/php.ini

// 增長上傳文件大小
post_max_size = 2048M
// 單個上傳文件的最大大小
upload_max_filesize = 10M
// 單次最大上傳文件數量
max_file_uploads = 200
// 設置擴展路徑
extension_dir = "/usr/local/WebEnvironment/PHP-7.2.0/extensions"
// 添加自定義擴展
extension = redis.so
// php 事件擴展
extension = ev.so
extension = gd.so
// 設置時區
date.timezone = PRC
// 設置 php 最大佔用內存
memory_limit = 512M
// 打開錯誤提示
display_errors = On

基本 ok。

G. 安裝 MySQL-5.7.18

如下方式非源碼編譯安裝,沒法指定安裝目錄!若是須要指定安裝目錄,請查看 mysql-8.x 源碼編譯安裝

tar -zxvf mysql-5.7.18.tar.gz
mv mysql-5.7.18 /usr/local/mysql
cd /usr/local
// 它自己沒有 data 目錄,須要自行建立(更高版本已經有 data 目錄,無需重複建立)
sudo mkdir -m 755 data
cd bin
// 初始化 Data 目錄內容
sudo ./mysqld --initialize-insecure 
// 啓動,必須以 root 身份啓動
sudo ./mysqld --user=root
----------- 另行啓動一個 terminal ---------------------------------
// 設置密碼
sudo ./mysqladmin -u root password 123456
// 登陸測試
mysql -u root -p
// 配置文件(本身建立 my.cnf,默認文件名,配置文件路徑:etc 目錄下,能夠是 /etc,也能夠是 /usr/local/mysql/etc)
sudo mkdir - m 755 /usr/local/mysql/etc
// 編輯配置文件
sudo gedit /usr/local/mysql/etc/my.cnf

// 配置文件內容(設置編碼)
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

H. nginx 添加虛擬主機

nginx.conf 中設置的 include vhost/* 路徑

cd conf/vhost
sudo vim vhost.conf

// 添加以下內容,保存
server {
    server_name test.com;
    root /var/Website/Test;
    index index.php index.html;
    charset utf-8;
    
    location / {
        // 這邊配置成單一入口訪問(例如你用的PHP框架是 Laravel 就要求要單一路口)
        // 這邊的含義是:
        // $uri     若是是一個文件,直接返回
        // $uri/    若是是一個目錄,直接返回
        // 最後一個參數表示重定向!
        // 不然返回 /index.php?$query_string;
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php(.*) {
        // php 處理程序監聽的 tcp 端口
        fastcgi_pass 127.0.0.1:9000;
        // 肯定腳本名稱
        # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        // 傳遞請求參數
        # fastcgi_param QUERY_STRING $query_string;
        // 必需要包含 fastcgi_params 預約義參數
        include fastcgi_params;
    }
}

server {
    server_name pma.com;
    root /var/Website/TestOther;
    index index.html;
    charset utf-8;
    
    location / {
        
    }
    
    # 靜態資源處理
    # 例如:http://test.com/test.jpg
    # 他會從 /data 目錄下獲取,而不是從 /var/Website/TestOther 目錄下獲取
    # 注意匹配順序,正則優先,而後 前綴
    location ~ \.(gif|jpg|png)$ {
        root /data;
    }
}

I. php-fpm 解釋

參考文章

cgi、fastcgi、php-cgi、php-fpm 之間的聯繫和區別

配置文件路徑:

// php-fpm 配置文件
etc/php-fpm.conf.default

// 進程池配置文件路徑
etc/php-fpm.d/www.conf.default

// php.ini 配置文件(要從解壓出來的壓縮包根目錄下拷貝重命名)
etc/php.ini

注意了,php-fpm.conf 配置文件是 php-fpm 程序的配置文件,www.confphp-fpm.conf 配置文件的一部分(擴展),只是 php 將其獨立出來了。他們是一個總體,這邊修改的是 www.conf

user  = root # 這邊能夠新建立用戶,也能夠直接使用 root 用戶(省事,我就 root 用戶了)
group = root # 同上
listen = 127.0.0.1:9000 # 只能有一個 listen(我被坑的最慘的部分!覺得能夠 listen 多個!實際上不能!)

J. 設置軟鏈接

sudo ln -s /path/to/php/sbin/php-fpm /bin/php-fpm
sudo ln -s /path/to/nginx/sbin/nginx /bin/nginx
sudo ln -s /path/to/mysql/bin/mysqld /bin/mysqld

K. 啓動測試

Nginx

// windows 下啓動
start nginx

// linux 下啓動
sudo nginx # 啓動
sudo nginx -s reload # 從新啓動(重載配置文件)
sudo nginx -s stop # 快速中止
sudo nignx -s quite # 優雅中止
sudo nginx -s reopen # 從新打開日誌文件(要在 nginx 啓動的狀態下執行纔有效)

PHP:

// 指定配置文件啓動
// -c 指定 php 運行時配置文件
// -y 指定 php-fpm 運行時配置文件
// -R 可選,運行 root 身份運行 php-fpm
sudo php-fpm -c php.ini -y php-fpm.conf -R
// 一般的啓動方式應該以下:
sudo php-fpm -R

mysql

sudo mysqld --user=root
相關文章
相關標籤/搜索