樹莓派搭建web服務(wù)器

一柴墩、初始設(shè)置

1.軟件源更換為國內(nèi)源

sudo nano /ect/apt/sources.list 進入軟件源列表編輯
注釋原來的deb開頭內(nèi)容(官方軟件源,粘貼下面內(nèi)容)
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi

一定要注意這個坑(wheezy-->buster)翩概,查看自己樹莓派的版本:
lsb_release -c
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

sudo reboot 重啟
sudo apt-get update 更新

image.png

2.設(shè)置時區(qū)

sudo dpkg-reconfigure tzdata 進入configuring tzdata界面選擇Asia牲距,Shanghai,回車確認
date 查看現(xiàn)在的時間

二钥庇、服務(wù)器搭建

1.安裝nginx服務(wù)器牍鞠、php

傳統(tǒng)LAMP組合對raspberry顯得較為笨重,為了保證服務(wù)器的高效運行评姨,
這里選擇LNMP(linux+nginx+MariaDB+php)

sudo apt-get install nginx 安裝nginx服務(wù)器
(安裝完會自動開啟nginx难述,默認開機啟動Nginx,如果不想開機啟動Nginx吐句,修改/etc/init.d/nginx文件)
sudo /etc/init.d/nginx start 啟動nginx

sudo apt-get install php5-fpm php5-sqlite 樹莓派4不支持php5,我們來安裝php7
sudo apt-get update 目前官方源已經(jīng)有PHP7.3的版本胁后,不用添加其它下載源就能安裝。首先更新軟件列表
sudo apt install -y -t buster (php7.3-fpm php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-imap php7.3-opcache php7.3-sqlite3 php7.3-xml php7.3-xmlrpc php7.3-zip) 安裝PHP7.3

php -v 查看php版本號
php -i|grep "Loaded Configuration File" 查看php.ini配置文件位置
Loaded Configuration File => /etc/php/7.3/cli/php.ini 顯示配置文件位置(通過命令行調(diào)用php時使用此位置)
配置文件有兩個嗦枢,另外一個在/etc/php/7.3/fpm/php.ini(通過fpm調(diào)用php(例如nginx)使用)

在瀏覽器輸入樹莓派的IP地址攀芯,可以看到“Welcome to nginx!”。
或者使用命令行:
curl 127.0.0.1

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
.....

能夠輸出html說明nginx安裝成功文虏。

php-fpm常用管理命令
sudo systemctl start php7.3-fpm 開啟php-fpm
sudo systemctl stop php7.3-fpm 關(guān)閉php-fpm
sudo systemctl restart php7.3-fpm 重啟php-fpm
vi /etc/php/7.3/fpm/php-fpm.ini 編輯php-fpm配置文件

默認的網(wǎng)站根目錄:/var/www/html
nginx配置文件目錄:/etc/nginx/
nginx主配置文件位置:/etc/nginx/nginx.conf

nginx常用管理命令
sudo systemctl start nginx 啟動nginx
sudo systemctl stop nginx 關(guān)閉nginx
sudo systemctl enable nginx 設(shè)置nginx開機啟動

2.配置nginx解析php

sudo vi /etc/nginx/sites-enabled/default 編輯配置nginx文件
index index.php index.html index.htm index.nginx-debian.html; 添加index.php

location ~ \.php$ {
        include snippets/fastcgi-php.conf;
    #
    #   # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    #   # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000;
}

sudo systemctl restart nginx 保存后重啟nginx
sudo vi /var/www/html/index.php 在網(wǎng)站根目錄創(chuàng)建一個php文件

<?php
phpinfo();  寫入以下代碼并保存侣诺,在瀏覽器中輸入樹莓派的IP地址即可看到phpinfo

3.安裝Mairadb數(shù)據(jù)庫

sudo apt-get install mariadb-server mariadb-client 安裝mariadb
sudo mysql_secure_installation 數(shù)據(jù)庫安全/初始化設(shè)置(根據(jù)提示設(shè)置數(shù)據(jù)庫root用戶密碼-pi、是否允許外網(wǎng)訪問等)

mysql -u root -p 嘗試登錄數(shù)據(jù)庫

ERROR 1698 (28000): Access denied for user ‘root’@’localhost’ 輸入上一步設(shè)置的密碼择葡,發(fā)現(xiàn)無法登錄
原因: 數(shù)據(jù)庫默認使用系統(tǒng)用戶登錄紧武,需要修改為使用密碼登錄剃氧。

sudo mysql -u root 登入數(shù)據(jù)庫依次執(zhí)行以下SQL:
use mysql #切換到mysql數(shù)據(jù)庫
update user set plugin='mysql_native_password'; #修改plugin字段
flush privileges; #刷新mysql的系統(tǒng)權(quán)限相關(guān)表敏储,保證在不重啟mysql服務(wù)器下直接生效
exit; #退出數(shù)據(jù)庫

mysql -u root -p 再次執(zhí)行即可通過密碼登錄數(shù)據(jù)庫,無需root權(quán)限執(zhí)行

mariadb配置文件保存在多個位置
/etc/mysql/mariadb.cnf
/etc/mysql/mariadb.conf.d/
/etc/mysql/conf.d/

mariadb常用命令
sudo systemctl start mariadb 啟動mariadb
sudo systemctl stop mariadb 關(guān)閉mariadb
sudo systemctl enable mariadb 設(shè)置mariadb開機啟動

4.配置數(shù)據(jù)庫MariaDB朋鞍、遠程連接

默認情況下MariaDB安裝好后都沒有配置訪問用戶的密碼已添,因此如果需要遠程連接時會無法連接妥箕。
因此需要先對root用戶設(shè)置密碼。

數(shù)據(jù)庫更舞,設(shè)置root密碼
sudo mysql -u root -p 回車進入數(shù)據(jù)庫畦幢,常規(guī)操作需要輸入密碼
use mysql; 切換到mysql數(shù)據(jù)庫
UPDATE user SET password=password('root') WHERE user='root'; 用戶root密碼設(shè)置為root
UPDATE user SET plugin='mysql_native_password' WHERE user = 'root'; 重啟mysql必須輸入正確密碼才能進入
flush privileges; 刷新
exit

sudo cat /etc/mysql/debian.cnf 查看默認密碼,一開始為空
sudo systemctl restart mariadb 重啟數(shù)據(jù)庫
mysql -u root -p 測試一下:密碼登錄mariadb缆蝉,驗證是否修改成功

允許遠程登錄
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf 數(shù)據(jù)庫MariaDB默認只監(jiān)聽127.0.0.1這個IP地址
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1 只監(jiān)聽了127.0.0.1這個IP宇葱,注釋起來就監(jiān)聽所有IP
sudo /etc/init.d/mysql restart 重啟服務(wù)

設(shè)置賬號權(quán)限,遠程登錄
此時從外部連不上刊头,先用mysql命令連接到MariaDB黍瞧,授予主機訪問權(quán)限
mysql -u root -p
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; 授予任意主機(%)訪問數(shù)據(jù)庫的所有權(quán)限,密碼root
#GRANT ALL PRIVILEGES ON *.* TO 'user'@'remoteip' IDENTIFIED BY 'password' WITH GRANT OPTION; 如果需要指定訪問主機原杂,可以把%替換為主機的IP或者主機名
#update user set host='%' where user='root' and host='localhost'; 上一條在user表中增加一條記錄印颤,若只想訪問而不想增加記錄可用此行
FLUSH PRIVILEGES; --更新權(quán)限
不能遠程的,嘗試打開數(shù)據(jù)庫服務(wù)器防火墻(CentOS7)

exit 退出數(shù)據(jù)庫 mysql
#sudo service mysql restart 重啟數(shù)據(jù)庫穿肄,配置生效

樹莓派數(shù)據(jù)庫基本指令---注意分號

update user set password=password(”xueok654123″) where user=’root’; 修改數(shù)據(jù)庫的密碼
show databases; 查看當前已經(jīng)建立的數(shù)據(jù)庫
create database xxx; 新建一個數(shù)據(jù)庫和表單(完成后使用show databases查看有沒有新建成功)
drop database xxx; 刪除xxx的數(shù)據(jù)庫
create table xx(id int(10),name varchar(10)); 新建一個table名字叫xx,和他的兩個域
show tables; 查看表單
describe xx; 查看表單有什么域
select * from xx; 查看相關(guān)表單信息
insert into xx(id,name) values (%d,%s)",[“1”,“sss”]) 插入數(shù)據(jù)

5.p上傳下載

生成一個網(wǎng)站管理員用戶年局,用于ftp上下載網(wǎng)站文件
sudo useradd webadmin 增加一個用戶,用戶名為webadmin
sudo passwd webadmin 修改用戶webadmin的密碼(密碼:webadmin)
sudo chown -R webadmin /var/www/html 讓用戶webadmin擁有www根目錄的所有權(quán)
sudo usermod -d /var/www/html webadmin 將用戶webadmin的登錄目錄更改為www根目錄

sudo apt-get install vsftpd 安裝vsftpd服務(wù)器 (約400KB)
sudo service vsftpd start 啟動ftp服務(wù)
sudo vi /etc/vsftpd.conf 編輯vsftdp的配置文件

找到以下行咸产,定義一下
anonymous_enable=NO 表示:不允許匿名訪問
local_enable=YES 設(shè)定本地用戶可以訪問矢否。
write_enable=YES 設(shè)定可以進行寫操作
local_umask=022 設(shè)定上傳后文件的權(quán)限掩碼。

sudo service vsftpd restart 重啟vsftpd
OK脑溢,配置完成兴喂,用戶webadmin登錄ftp后,將直接進入www根目錄焚志,并可上下載文件\創(chuàng)建目錄\刪除文件等等.

存盤退出

測試一下:
使用Xftp衣迷,輸入主機IP,用戶名pi酱酬,密碼pi壶谒,F(xiàn)TP的路徑:/home/pi
主機IP,用戶名webadmin膳沽,密碼webadmin汗菜,F(xiàn)TP的路經(jīng):/var/www/html

三、排錯

nginx故障

配置好服務(wù)器重啟挑社,nginx無法啟動陨界,打不開php

nginx -t 檢測所修改的配置文件是否有語法錯誤。排錯先確定問題再逐一驗證痛阻,重點關(guān)注[emerg]
sudo service nginx restart 重啟nginx
sudo service nginx status 查看nginx的狀態(tài)

可通過xftp登錄查看/比較內(nèi)容

參考鏈接
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#66912ad2180f4d01822df0773571ec33
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#a357ea1719794d5cb7ce4e43165ac2af
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#38d15c18982a47558c87c7f3d58cbb4a
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#d92c6f05c3c2440ab6a900f9f63395b5
https://www.notion.so/web-03acaa94022d476fbdadeda1436e7a2b#4b037432315e4adca491d70b3cf7446c

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菌瘪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俏扩,老刑警劉巖糜工,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異录淡,居然都是意外死亡捌木,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門嫉戚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刨裆,“玉大人,你說我怎么就攤上這事彬檀〈抻担” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵凤覆,是天一觀的道長链瓦。 經(jīng)常有香客問我,道長盯桦,這世上最難降的妖魔是什么慈俯? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮拥峦,結(jié)果婚禮上贴膘,老公的妹妹穿的比我還像新娘。我一直安慰自己略号,他們只是感情好刑峡,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著玄柠,像睡著了一般突梦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羽利,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天宫患,我揣著相機與錄音,去河邊找鬼这弧。 笑死娃闲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的匾浪。 我是一名探鬼主播皇帮,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛋辈!你這毒婦竟也來了属拾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捌年,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挂洛,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡礼预,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虏劲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片托酸。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柒巫,靈堂內(nèi)的尸體忽然破棺而出励堡,到底是詐尸還是另有隱情,我是刑警寧澤堡掏,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布应结,位于F島的核電站,受9級特大地震影響泉唁,放射性物質(zhì)發(fā)生泄漏鹅龄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一亭畜、第九天 我趴在偏房一處隱蔽的房頂上張望扮休。 院中可真熱鬧,春花似錦拴鸵、人聲如沸玷坠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽八堡。三九已至,卻和暖如春聘芜,著一層夾襖步出監(jiān)牢的瞬間秕重,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工厉膀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溶耘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓服鹅,卻偏偏與公主長得像凳兵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子企软,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350