在树莓派上搭建PHP家庭相册管理程序
家里的照片實(shí)在是太多了,找了很多軟件,都達(dá)不到想要的查看圖片的效果,現(xiàn)分享一個在在樹莓派上搭建一個PHP家庭相冊程序,可以按文件夾方式查看,可以按日歷方式查看,還可以用關(guān)鍵字查詢,查詢到的照片可以全屏幻燈片播放,相信有很多同學(xué)跟我一樣,想搭建一個PHP相冊程序,可以隨時隨地查看自己的照片。OK,廢話不說,先看看下面是效果圖
登錄窗口
文件夾方式看圖
日歷方式看圖
頁面設(shè)置
可以全屏幻燈片播放查詢到的所有圖片
其它的功能,待同學(xué)們安裝好的自己去發(fā)現(xiàn)了。
接下來,詳細(xì)介紹搭建過程,大致分為,在樹莓派上先搭建PHP環(huán)境,python3運(yùn)行環(huán)境,samba共享文件夾環(huán)境,ssh遠(yuǎn)程訪問樹莓派功能,再copy我的相冊管理程序源代碼放到自己的樹莓派上加簡單的設(shè)置,即可使用 了。
一、樹莓派上先搭建PHP環(huán)境
硬件需求:
1、樹莓派3B或以上版本,樹莓派4有USB3.0,網(wǎng)絡(luò)也跟快。
2、樹莓派電源(5V 2A)
3、16GB TF卡或以下(裝樹莓派系統(tǒng), CLASS 10以上,速度會快一點(diǎn))
4、USB讀卡器(用于將Linux系統(tǒng)鏡像燒錄到TF卡)
5、顯示器轉(zhuǎn)接線(調(diào)試的時候用,當(dāng)SSH遠(yuǎn)程訪問搭建好就可以不用了)
6、移動硬盤(或其它的代替品,用于存放照片)
我自己的移動硬盤
軟件需求
1、樹莓派鏡像
2019-09-26-raspbian-buster-full.img 下面是下載地址
https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip
2、Win32 Diski Mager,下面是下載地址
https://sourceforge.net/projects/win32diskimager/
安裝直接下一步,選擇上面解壓鏡像 2019-09-26-raspbian-buster-lite.img 設(shè)備選擇 SD卡 設(shè)備
安裝完成后,將TF卡取出裝到樹莓派上,準(zhǔn)備開啟樹莓派之旅。如果安裝成功,通電樹莓派,等待一會就有畫面出來,新版本的系統(tǒng)要求先進(jìn)行設(shè)置,如下圖
點(diǎn)Next進(jìn)行國家設(shè)置,我的設(shè)置如下
下一步設(shè)置系統(tǒng)的登錄密碼
下一步是設(shè)置屏幕顯示,隨便設(shè)置都行,我的設(shè)置如下
下一步是設(shè)置WiFi和密碼
設(shè)置好后,系統(tǒng)會檢測更新,發(fā)果沒有更新源,很有可能更新不上,先不管能不能更新,稍后更新源列表后再更新。
最后一點(diǎn),設(shè)置好后點(diǎn)Restart
再等一會就可進(jìn)入系統(tǒng)了。進(jìn)入系統(tǒng)后,建議將IP設(shè)置為靜態(tài),再設(shè)置SSH
有線網(wǎng)絡(luò)選eth0,無線網(wǎng)絡(luò)選wlan0
然后跟據(jù)自己的實(shí)際情況填寫靜態(tài)IP地址
再進(jìn)行SSH設(shè)置,菜單->Preferences->Raspberry Pi Configuration
再選擇Interfaces下面的SSH啟用,如下圖
重新啟動后,可以不用顯示器了,接下來用遠(yuǎn)程連接工具Putty即可。百度一下,隨處可下載.
配置好下面的IP,PORT再選擇SSH,點(diǎn)Open,如果上面的設(shè)置沒有問題,就可以遠(yuǎn)程連接樹莓派了。
輸入用戶名:pi 和剛才設(shè)置的密碼后,進(jìn)行樹莓派的后臺
接下來,需要先更新源列表,因國外的源速度太慢,下面是我的源列表。
先后輸入下面的命令
#備份源列表
#用nano打開源列表
sudo nano /etc/apt/sources.list下面的我的源列表:
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main non-free contrib rpi deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main non-free contrib rpideb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib rpi deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib rpideb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib rpideb http://mirrors.scau.edu.cn/raspbian/raspbian/ jessie main contrib non-free deb http://mirrors.scau.edu.cn/raspbian/raspbian/ stretch main contrib non-free deb http://mirrors.scau.edu.cn/raspbian/raspbian/ buster main contrib non-freedeb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ jessie main contrib non-free deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ stretch main contrib non-free deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ buster main contrib non-free
修改完成后,按Ctrl+x退出nano,退出之前點(diǎn)Y確認(rèn)保存。
源列表修改完后,需要更新源,升級,這個過程需要一定時間,可以去煮開水喝口茶了。
命令如下 :
更新過程中,如下圖片
升級過程中
升級過程中,可能會有一些軟件包下載不到位等情況,建議多執(zhí)行幾次上面的2條命令,再執(zhí)行
接下來是軟件安裝,搭建運(yùn)行環(huán)境
#for debian buster 用下面的命令.
sudo apt-get install default-mysql-server -y
配置的時候選擇apache2再點(diǎn)OK
這里點(diǎn)Yes
輸入數(shù)據(jù)庫的密碼
需要執(zhí)行下面的命令才能在網(wǎng)頁打開
到此,如果一切正常,打開瀏覽器,輸入樹莓派的IP/phpmyadmin,即可訪問phpMyAdmin了
但這時,我們輸入用戶名和密碼的時候發(fā)現(xiàn)出錯了。 #1698 - Access denied for user ‘root’@‘localhost’
我們還需要做以下配置
Fix #1698 - Access denied for user ‘root’@‘localhost’ issue.
sudo mysql -u root -p #輸入密碼后,連續(xù)輸入以下命令 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'admin'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; exit
再去瀏覽器打開phpmyadmin,已經(jīng)可以正常登錄
下面是給數(shù)據(jù)庫增加遠(yuǎn)程訪問的,我們的相冊管理程序不需要使用。
/*********************************************************
***************************************************************************************************************/
接下來,是配置sudo,讓php程序可能以管理員的身份調(diào)用python腳本
# 當(dāng)我們在PHP中調(diào)用pyhon時如果出現(xiàn)錯誤: sudo: no tty present and no askpass program specified # 還需要修改sudo配置文件,直接鍵如visudo命令編輯配置文件:sudo visudo # 將Defaults requiretty修改為 #Defaults requiretty, 表示不需要控制終端。 # 否則會出現(xiàn)sudo: sorry, you must have a tty to run sudo# 增加行 Defaults visiblepw # 否則會出現(xiàn) sudo: no tty present and no askpass program specified# 賦予www-data用戶執(zhí)行svn權(quán)限 # 如,增加行: www-data ALL=(ALL) NOPASSWD: ALL # 注:NOPASSWD可以使在命令執(zhí)行時不需要交互輸入www 用戶的密碼# www用戶為nginx或apache的運(yùn)行用戶
按Ctrl+x再輸入Y保存并退出
如果這里把sudo文件的語法搞錯了就麻煩了,很多權(quán)限的命令都不能執(zhí)行,不幸的是,我就搞錯了,不過下面是解決方法,同學(xué)們?nèi)绻麤]有出現(xiàn)這樣的問題,以下5步可以SKIP
重啟nginx或apache,讓用戶重新獲得權(quán)限。
sudo service apache2 restart接下來是安裝samba網(wǎng)絡(luò)共享環(huán)境
將我們的移動硬盤連接到樹莓派,并給我們放照片的文件設(shè)置共享
安裝NTFS-3G,用來掛載我們NTFS文件格式的移動硬盤
我的UUID如下圖
修改配置文件
如下圖
安裝 samba
到下面的時候可以直接點(diǎn)No
增加共享用戶
/*************************************
刪除一個共享用戶
***************************************/
配置Samba
可以直接復(fù)制下面的文本即可,因為每個用戶都有一個配置文件,下面global后的第一行
[global]config file = /etc/samba/smb.conf.%Uworkgroup = WORKGROUPlog file = /var/log/samba/log.%mmax log size = 1000logging = filepanic action = /usr/share/samba/panic-action %dserver role = standalone serverobey pam restrictions = yesunix password sync = yespasswd program = /usr/bin/passwd %upasswd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .pam password change = yesusershare allow guests = nosecurity = userpassdb backend = tdbsambrowseable = no[homes]comment = Home Directoriesbrowseable = noread only = yescreate mask = 0700 directory mask = 0700 valid users = %S [printers]comment = All Printersbrowseable = nopath = /var/spool/sambaprintable = yesguest ok = noread only = yescreate mask = 0700[print$]comment = Printer Driverspath = /var/lib/samba/printersbrowseable = yesread only = yesguest ok = no配置個人文件
sudo nano /etc/samba/smb.conf.gunnar可以直接復(fù)制下面的文本做一點(diǎn)適當(dāng)?shù)男薷募纯?/p> [global]workgroup = WORKGROUP config file = /etc/samba/smb.conf.%Ulog file = /var/log/samba/log.%mmax log size = 1000logging = filepanic action = /usr/share/samba/panic-action %dserver role = standalone serverobey pam restrictions = yesunix password sync = yespasswd program = /usr/bin/passwd %upasswd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .pam password change = yesmap to guest = bad userusershare allow guests = yessecurity = userpassdb backend = tdbsambrowseable = no[homes]comment = Home Directoriesbrowseable = noread only = yescreate mask = 0700directory mask = 0700valid users = %S[printers]comment = All Printersbrowseable = nopath = /var/spool/sambaprintable = yesguest ok = noread only = yescreate mask = 0700 [print$]comment = Printer Driverspath = /var/lib/samba/printersbrowseable = yesread only = yesguest ok = no[Album]comment = My Picture Filespath = /mnt/usbdisk1/album #這里的路徑最好不要改動,后面python需要從這里找所有文件夾browseable = yesavailable = yesvalid users = gunnarwrite list = gunnarpublic = nocreate mask = 750directory mask = 750
下面兩條命令都可以重啟samba服戶
sudo /etc/init.d/samba restart sudo service smbd restart如果一切正常,在Windos命令行下輸入樹莓派的IP地址,就可以看到我們的共享文件了
如果配置有問題,請自行百度,下面幾條測試命令供參考
/**********************************************************************
測試samba配置文件
Test share folder in Linux
sudo apt-get install smbclient -y smbclient -L //localhost/mnt/data -U root # 列出所有共享 smbclient -L localhost -U user%password**********************************************************************/
到目錄為止,我們有了共享文件夾,然后所我們的照片全部放到這個文件夾下
/mnt/usbdisk1/album 這個文件夾下最好放文件夾,不要放照片,照片放在這個文件夾的文件夾下。
另外,這個文件夾下如果有一個文件夾叫photo,那么,只有PHP相冊管理的登錄用戶的id=1才能查看,其他任何用戶都不能看到,也算是一種隱藏吧。但要在文件共享里設(shè)置為不共享就更完美,請自行研究。
接下來是搭建PYTHON所需要的第三方庫
pymysql, exifread
等安裝安成,將我的源代碼
鏈接: https://pan.baidu.com/s/111LQFZ0wNcifNFoBlUD5TA 提取碼: dwme
解壓后放到
/var/www/html/下,再執(zhí)行:
如果沒有操作失誤,恭喜你成功了!開始檢驗吧!
如果需要外網(wǎng)訪問,注冊花生殼再做適當(dāng)處理就好了,請自行百度。
如有什么問題,可以與我討論!pg2222@163.com
G. Peng
20200301
總結(jié)
以上是生活随笔為你收集整理的在树莓派上搭建PHP家庭相册管理程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1098: 零起点学算法05——除法算术
- 下一篇: 联想小新air14笔记本黑屏_联想小新a