2020年2月26日 星期三

再來一次,重灌第一代樹莓派作業系統

重灌的理由是
在機子裡的版本太舊了
是debian7版wheezy
現在的Raspbian都已經是10版buster
這造成了去年底舊版的wheezy就無法有更新可用
而且原本灌的是桌面版,還是用NOOB版灌的
但目前只當個小伺服器用,其它不必要的軟體過於肥大
也想減肥減肥
趁著最近一點空檔
備份了重點資料後
就開始重灌成lite版,進行昇級的不歸路啦!


重灌作業系統是很簡單啦
SD卡抽出來,插到電腦裡,把事先下載好的raspbian新版
用寫入軟體(之前用Win32diskimager,現在用balenaEtcher)寫入
OK,完成了
接下來就是苦難的開始 XDXDXD
要面對的一堆又一堆又一堆的設定
本來嘛,想想也不難,因為設定檔都有備份下來
雖然要花一點時間就是了,畢竟是第一代樹莓派,速度很慢
哼哼,大錯特錯啦

一開始是沒遇到什麼問題
先用pi跟raspberry登錄
然後進raspi-config
改密碼 *****************
改區域 zh_tw.utf8
改時區 taipei
開SSH伺服
開鏡頭
結束,重開機,換回一般電腦用ssh連線繼續

接著,灌mysql...
sudo apt-get install mysql-server
啊,忘了已經被買走,現在要用mariadb
改一下
sudo apt-get install mariadb-server
裝好了來試一下進mysql
進不去...
上網查才想起來第一次不用密碼
而且要用sudo
sudo mysql -u root -p
進去後改密碼
再裝apache2
sudo apt-get install apache2
裝新的php第7版
sudo apt-get install php
好啦LAMP完工啦[註]

基礎網路伺服器環境完成,繼續裝其它工具
開始裝phpmyadmin
裝完選apache2當伺服器
然後輸入mysql的密碼...
結果第一次說失敗,無法連線到資料庫,因為密碼部分有問題
嚇得我一身冷汗,想說是不是卡在mariadb不應該先改密碼
好險第二次重試時OK了
來,連看看可不可以用啦
!失敗!
?怎麼可能?
上網找找找,然後與備份的東西比對
這才發現,舊的apache2設定資料夾裡有帶phpmyadmin.conf
網路找到的另一個解法是把phpmyadmin.conf路徑寫在apache2.conf內
決定用第二個解法
可是接著又遇到另一個問題
進入匯入的頁面時,會跳出錯誤
又該上網找解決之道了
https://blog.johnsonlu.org/install-phpmyadmin-on-ubuntu/
最後依這個介紹,修正phpmyadmin裡的兩行程式,完成。
不過這個其實不影響匯入的運作。
只是Warning而已

好了,那我要開https的伺服運作啦
登登登,Apache2重啟不了...
重對一下設定,嗯嗯,忘了開ssl的模組設定
把mod-available資料夾裡的ssl.conf與ssl.load看是複製還是連結的方式
通通拉到mod-enabled資料夾中,下面是用連結
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mod-enabled/ssl.conf
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mod-enabled/ssl.load
接著啟動apache2服務
結果還是不行...再看一下錯誤訊息
少載了socache_shmcb的模組,好吧
sudo ln -s /etc/apache2/mods-available/socache_shmcb.load /etc/apache2/mod-enabled/socache_shmcb.load
然後,啟動Apache2成功啦
但網站連不上去

這邊很快就發現,Ports沒開
因為我的安全連線網路是另外開非443的port
趕緊打開ports.conf,把Listen XXX加進去
但網站還是打不開
顯示無法存取.........
然後對了設定好一陣子都找不太到問題
最後才發現是指令更動的問題
原先的
Order Deny,Allow
Allow from all
在Apache2.4後改成Require all granted了
加入後,終於讀得了裡面的內容了

正想說苦難到此為止了
接著把原本自己寫的PHP放回去網站上
發現執行有誤讀不了資料庫
仔細一查,PHP7不支援原本的mysql指令
一堆mysql的寫法都要改掉啊啊啊啊啊啊啊
雖然說舊指令與新指令差異還不致於太大
大多就是mysql_xxxx→mysqli_xxxx
配合notepadd++有目錄尋找與取代功能改起來還算OK
但仔細檢討下來還不止這樣
原本抓取row值後,可以用物件方式取得各欄位的值
例如$row->money,現在一律只能用$row['money']的方式
而用了後者的方式,就不能直接嵌入字串中
只能用加入的方式
//例如,原本的寫法,結果會顯示成「本月開銷  元」
echo "本月開銷$row->money元";
//要正常顯示,只能改成以陣列取值的方式,並把變數拉到字串外
echo "本月開銷".$row['money']."元";
這邊改起來好痛苦啊,一個一個找,一個一個換
嗚嗚嗚嗚

整個從開始灌OS到php的mysql問題解決
大概花了8個小時左右才搞定
希望這次重灌再撐個4年吧

[註]LAMP是指Linux+Apache+Mysql(Mariadb)+PHP的組合,是互動式網站伺服器有名的免費組合
[補]2021/08/30修正一些輸入錯誤的地方

沒有留言: