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

鏈接php

 

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以下:html

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

安裝Nginx參考shell以下:mysql

apt-get install nginx
  • 1
  • 1

Nginx的配置先放一下,所有安裝以後講。nginx

3.安裝PHP7及其部分插件

若是使用apt-get直接安裝,默認安裝的是5.6版本的php,若是但願安裝PHP7,參考如下shell:sql

  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命令參考以下: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重啓,可是。。。我不習慣apache

5.2.配置php-fpm

此處須要選擇Nginx鏈接到php服務的形式,tcp模式或者socket模式。vim

首先要找到www.conf文件,這個文件很差找,不一樣的平臺會致使文件位置不一樣。 
個人文件位置在/etc/php/7.0/fpm/pool.d,網上的教程還有在etc/php-fpm.d的。php7

編輯www.conf文件參考:ssh

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服務,充分發掘其價值。

相關文章
相關標籤/搜索