1. 程式人生 > >樹莓派使用apt-get安裝配置Nginx+PHP7+MySQL(MariaDB)附帶部分細節

樹莓派使用apt-get安裝配置Nginx+PHP7+MySQL(MariaDB)附帶部分細節

最近使用樹莓派搞定了一個小專案,現在樹莓派閒置了,正好拿來做一個小型Web伺服器進行功能測試。沒想到配置的過程比我想象的複雜,好多小細節是用雲伺服器的時候沒遇見過的。我已經嘗試寫的很簡潔了,各位可以根據需要有選擇的食用。

0.環境說明

  • 裝置:樹莓派Raspberry Pi 3b
  • 映象:raspbian-stretch-lite (2017-11-29)
  • 閘道器:普通路由器NETGEAR R6220
  • 接入方式:有線接入

1.配置系統

  • 燒錄工具:Win32DiskImager
  • 燒錄完成後在boot分割槽建立一個名稱為”ssh”的檔案,用記事本建立,沒有後綴名。
  • 初次登入使用者名稱pi
    ,密碼raspberry,修改密碼sudo passwd pi
  • (自選)安裝編輯工具vim:apt-get install vim
  • 更新軟體庫並更新軟體apt-get updateapt-get upgrade
  • 個人建議全程使用root許可權安裝軟體。

2.安裝Nginx

我使用的映象竟然預裝了Apache2,我都懷疑我用的是不是lite版。可能是我沒什麼見識吧。我不喜歡用這個,所以我將其完整刪除了。參考shell如下:

apt-get remove --purge apache* -y
apt-get autoremove --purge -y

安裝Nginx參考shell如下:

apt-get install nginx

Nginx的配置先放一下,全部安裝之後講。

3.安裝PHP7及其部分外掛

如果使用apt-get直接安裝,預設安裝的是5.6版本的php,如果希望安裝PHP7,參考以下shell:

apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-common
  • 前兩行是在安裝php7的ppa源
  • 更新源列表後才可安裝PHP7(PHP7.0和PHP7.1通用)
  • 最後一行安裝了PHP7.0主體,與Nginx對接的php7.0-fpm外掛,與mysql對接的php7.0-mysql外掛,常用函式工具php7.0-common外掛。
    PHP的配置也有點複雜,放在後面講。

4.安裝MySQL(MariaDB)

使用apt-get命令安裝的MySQL預設是MariaDB發行版,我不是很會改,貌似只能編譯安裝才能避免這個問題。我比較懶,只能接受了。還好差別不大。
安裝MySQL(MariaDB)的shell命令參考如下:

apt-get install mysql-server mysql-client

5.配置Nginx+PHP7+MySQL(MariaDB)

5.1.重啟服務shell

/etc/init.d/nginx restart
/etc/init.d/php7-fpm restart
service mysql restart

Nginx和php-fpm也可以用service重啟,但是。。。我不習慣

5.2.配置php-fpm

此處需要選擇Nginx連線到php服務的形式,tcp模式或者socket模式

首先要找到www.conf檔案,這個檔案不好找,不同的平臺會導致檔案位置不同。
我的檔案位置在/etc/php/7.0/fpm/pool.d,網上的教程還有在etc/php-fpm.d的。

編輯www.conf檔案參考:

vim  /etc/php/7.0/fpm/pool.d/www.conf

找到引數listen = /run/php/php7.0-fpm.sock

socket

如果引數對應的是XXXX.sock說明php-fpm是通過socket模式與Nginx聯絡的。
如果引數對應的是127.0.0.1說明php-fpm是通過socket模式與Nginx聯絡的。

可以根據自己的需要進行修改,請記住該引數,這將會在配置Nginx時用到。

5.3.配置Nginx

不知道為啥,apt-get安裝出來的Nginx比yum安裝出來的配置檔案寫的更分散,各種include
正常情況下配置檔案nginx.conf就可以了,但是我的平臺上nginx.conf檔案中引入了sites-enabled資料夾中的全部配置檔案,這就很。。。煩
修改配置檔案nginx.conf參考:

#在http{}內有
#include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
#我建議修改為
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;

default檔案為模版,在sites-enabled資料夾下建立網站配置檔案,shell參考如下:

cp default my.conf
vim my.conf

配置站點資訊,參考如下:

#個人建議在server{}中刪除root和index
location / {
    root /home/www;
    index index.php index.html;
    try_files $uri $uri/ =404;
}
location ~\.php$ {
    root /home/www;
    fastcgi_pass   unix:/run/php/php7.0-fpm.sock;#socket mode
    #fastcgi_pass   127.0.0.1:9000;#tcp mode
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

注意!!注意!!
fastcgi_pass一定要對應我上述的php-fpm連線方式,如果是tcp模式,請修改為對應的地址和埠。否則會出現502 Bad Gateway
Tip:
若測試時出現404 Not found,一般情況都是root對應的路徑設定錯誤。
若測試時出現502 Bad Gateway,一般情況都是fastcgi_pass對應的模式設定錯誤。

在配置後儲存配置檔案,在root對應的資料夾下建立測試檔案,重啟Nginx,嘗試使用主機的IP訪問。
建議先使用<?php phpinfo();?>進行測試,若不成功。。。請自習加油調整配置
Nginx的配置可以參考我的另一篇文章:http://blog.csdn.net/qq_36731677/article/details/77376140

5.4.配置MySQL(MariaDB)

我把我遇到的問題和解決方案都分條寫在下面了,可有選擇性的食用。

  • php連線mysql失敗:安裝php7.0-mysql外掛,在mysql內分配正確的使用者名稱和許可權(請自行百度)。
  • shell登入mysql:mysql -u root -p預設無密碼,直接回車。
  • 允許遠端連線:在mysql內執行命令,參考UPDATE mysql.user SET host=% WHERE user='root';FLUSH PRIVILEGES;
  • 遠端連線發生100061錯誤:
    • 編輯my.ini檔案(在MariaDB中為my.cnf,我的在/etc/mysql資料夾中,然後檔案告訴我它直接引入了兩個檔案,淦)
    • 找到[mysqld]欄位(不是[mysql]欄位)(在MariaDB中需要在/etc/mysql/mariadb.conf.d資料夾中的50-server.cnf中找到)
    • mysqld
    • 修改其中的bind-addressbind-address = 0.0.0.0
    • 儲存並重啟mysql服務後生效

完結

經過這一波折騰後,我的小型站點就可以在樹莓派上運行了,感覺還是很美滋滋的。
過一段可能會考慮在樹莓派上安裝一個NAS服務,充分發掘其價值。