原連接
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 update
和apt-get upgrade
。 - 個人建議全程使用root權限安裝軟件。
2.安裝Nginx
我使用的鏡像竟然預裝了Apache2,我都懷疑我用的是不是lite版。可能是我沒什么見識吧。我不喜歡用這個,所以我將其完整刪除了。參考shell如下:
-
apt- get remove --purge apache* -y
-
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:
-
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
- 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
-
/etc/ init.d/nginx restart
-
/etc/ init.d/php7-fpm restart
-
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
如果參數對應的是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;
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
以default
文件為模版,在sites-enabled文件夾下建立網站配置文件,shell參考如下:
-
cp default my.conf
-
vim my.conf
- 1
- 2
- 1
- 2
配置站點信息,參考如下:
-
#個人建議在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;
-
}
- 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
中找到) - 修改其中的bind-address為
bind-address = 0.0.0.0
- 保存並重啟mysql服務后生效
- 官方文檔https://mariadb.com/kb/zh-cn/configuring-mariadb-for-remote-client-access/
- 編輯
完結
經過這一波折騰后,我的小型站點就可以在樹莓派上運行了,感覺還是很美滋滋的。
過一段可能會考慮在樹莓派上安裝一個NAS服務,充分發掘其價值。