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


連接

 

0.環境說明

  • 設備:樹莓派Raspberry Pi 3b
  • 鏡像:raspbian-stretch-lite (2017-11-29)
  • 網關:普通路由器NETGEAR R6220
  • 接入方式:有線接入

1.配置系統

  • 鏡像下載地址:https://www.raspberrypi.org/downloads/raspbian/
  • 燒錄工具:Win32DiskImager
  • 燒錄完成后在boot分區創建一個名稱為”ssh”的文件,用記事本創建,沒有后綴名。
  • 初次登錄用戶名pi,密碼raspberry,修改密碼sudo passwd pi
  • (自選)安裝編輯工具vim:apt-get install vim
  • 更換源為阿里的源http://mirrors.aliyun.com/raspbian/raspbian/,修改文件/etc/apt/sources.list,替換兩個鏈接,去掉第二行連接前的注釋。
  • 更新軟件庫並更新軟件apt-get updateapt-get upgrade
  • 個人建議全程使用root權限安裝軟件。

2.安裝Nginx

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

  1.  
    apt- get remove --purge apache* -y
  2.  
    apt- get autoremove --purge -y
  • 1
  • 2
  • 1
  • 2

安裝Nginx參考shell如下:

apt-get install nginx
  • 1
  • 1

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

3.安裝PHP7及其部分插件

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

  1.  
    apt -get install software-properties-common
  2.  
    add-apt-repository ppa:ondrej/php
  3.  
    apt -get update
  4.  
    apt -get install php7.0 php7.0-fpm php7.0-mysql php7.0-common
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • 前兩行是在安裝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
  • 1
  • 1

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

5.1.重啟服務shell

  1.  
    /etc/ init.d/nginx restart
  2.  
    /etc/ init.d/php7-fpm restart
  3.  
    service mysql restart
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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
  • 1
  • 1

找到參數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參考:

  1.  
    #在http{}內有
  2.  
    #include /etc/nginx/conf.d/*.conf;
  3.  
    #include /etc/nginx/sites-enabled/*;
  4.  
    #我建議修改為
  5.  
    include /etc/nginx/conf.d/*.conf;
  6.  
    include /etc/nginx/sites-enabled/*.conf;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

default文件為模版,在sites-enabled文件夾下建立網站配置文件,shell參考如下:

  1.  
    cp default my.conf
  2.  
    vim my.conf
  • 1
  • 2
  • 1
  • 2

配置站點信息,參考如下:

  1.  
    #個人建議在server{}中刪除root和index
  2.  
    location / {
  3.  
    root /home/www;
  4.  
    index index.php index.html;
  5.  
    try_files $uri $uri/ =404;
  6.  
    }
  7.  
    location ~\.php $ {
  8.  
    root /home/www;
  9.  
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;#socket mode
  10.  
    #fastcgi_pass 127.0.0.1:9000;#tcp mode
  11.  
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  12.  
    include fastcgi_params;
  13.  
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注意!!注意!! 
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-address為bind-address = 0.0.0.0
    • 保存並重啟mysql服務后生效
    • 官方文檔https://mariadb.com/kb/zh-cn/configuring-mariadb-for-remote-client-access/

完結

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


免責聲明!

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



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