作者:admin 日期:2023-09-12 瀏覽: 次
全網最全的保姆級教程:在蘋果舊手機上安裝Linux系統,秒變服務器
如果我告訴你在蘋果舊手機上運行一個linux系統,聽起來是不是非常的匪夷所思,但是真相是確實可以,而且還能讓你的蘋果舊手機秒變服務器。
我是阿灝,前面給大家分享過如何利用一個閑置的安卓舊手機來打造成一個便利的云服務器???
| 舊手機這樣玩,你家就是云服務中心
| 手機上如何部署一個博客站
| 用舊手機打造一個免費云盤存儲空間,你不是最后一個知道的
今天給大家要帶來的是如何利用閑置的蘋果舊手機打造一個博客服務
內容非常干,需要花費一定的時間閱讀
來吧,我們開始!!!
我們的博客服務還是選擇DjangoBlog這個項目,簡單但不失通用性:
博客項目地址
https://gitee.com/lylinux/DjangoBlog
先來講講思路,所謂思路正確等于成功了一半,跟之前安卓手機上部署一個博客服務大同小異:手機上如何部署一個博客站
1. 下載蘋果手機上的終端命令行軟件
通過調研發現,在蘋果手機上比較主流的支持終端命令行操作的軟件有下面幾款:
可在對比軟件的實施可行性、易操作性方面后,最終還是選擇了iSH這款軟件,在官方appstore直接下載即可。
安裝后,打開iSH Shell,我們就直接來到了命令行終端界面:
我們可以看到這是一個叫Alpine的系統,Alpine是一個linux系統的發行版,跟大多數系統像ubuntu、centos等一樣,都支持最基本的linux命令;
到這里,我們就完成了第一步,我們相當于給蘋果手機安裝上了一個linux系統模擬器;
2. 安裝基礎環境和python環境
就在我準備安裝python環境去試圖部署一個博客服務的時候,問題如洪水猛獸向我襲來;在iSH Shell上安裝Python環境沒有Termux上安裝那么順心,因為遇到了很多問題,如網絡連接、軟件下載、編譯等等。
問題1 —— 軟件安裝源問題
因為alpine系統默認的安裝源下載速度非常慢,因此我換成了aliyun下載源
打開/etc/apk/repositories目錄, 修改鏡像源為:
http://mirrors.aliyun.com/alpine/v3.16/main
如下圖所示:
鏡像源更換完畢后,下載更新速度明顯提升
問題2 —— 手機操作不方便的問題
iSH Shell的終端命令行,沒有命令記錄功能,也沒有命令提示功能,操起氣來相當受阻,浪費時間。因此最方便的就是通過電腦遠程連接手機終端來解決,于是準備手機上安裝sshd服務,安裝sshd服務,只需要安裝openssh庫即可:
# 安裝openssh
apk add openssh
# 生成公私鑰,一路回車即可
ssh-keygen -A
# 修改內容,允許root用戶遠程登陸
vim /etc/ssh/sshd_config
# 啟動sshd服務
/usr/sbin/sshd
# 在電腦上遠程登錄到你的手機
ssh root@你的蘋果手機ip
接下來我們就可以在電腦上遠程操作我們的蘋果手機了??
問題3 —— 安裝Python環境不成功
最后我們迎來了一個非常致命的問題,也就是安裝python環境,大家都知道運行一個python的服務,兩個包是必不可少的,一個是python環境包,一個是pip安裝服務包。
我們通過apk add python3 來成功安裝了python環境包;
但是當安裝pip服務的時候,每次都會安裝到一半甚至快要完成的時候,服務卻卡住了,真是非常頭疼。
這時候腦袋里萌生了一個令我自己都不敢相信的念頭??????
難道就不能在電腦上把python服務編譯成一個大的文件,然后移植到手機上來用嗎?
看過我之前云盤部署視頻(用舊手機打造一個免費云盤存儲空間,你不是最后一個知道的)的小伙伴可能都知道,當時我們就是把前端模塊放在電腦上編譯的,編譯成功后移植到了手機上成功跑起來,沒錯,所以接下來我要做的就是把python程序在電腦上編譯,編譯成功后再移植到手機上運行。
果然,黃天不負有心人
???讓我找到了一個神奇的工具???
Pyinstaller
PyInstaller 是一個用來將 Python 程序打包成一個獨立可執行軟件包,支持 Windows、Linux 和 Mac OS X 平臺。
東臺數據恢復
于是,我們成功把問題轉化為:
如何將Python程序打包成一個在蘋果手機上可以獨立運行的可執行文件????
看到這里如果還有點懵的小伙伴,我來稍微解釋一下,因為在編寫和運行python程序的過程中,是依賴一系列的python依賴庫的,而python的底層又是C語言寫的,所以勢必會依賴大量的C動態鏈接庫的支持,而Pyinstaller工具支持的就是將python程序以及python程序的依賴庫進行打包,打成一個獨立的可執行文件,那么就可以直接移植到其他平臺去運行了。
而我們要把python程序打包成一個iSH這款軟件上獨立運行的程序,而iSH模擬的是Alpine這款linux系統,那么就一定要求兩邊的操作系統是一致的,于是我們就要在電腦上安裝一個跟iSH一樣的alpine系統,然后在這個系統里對python程序進行編譯打包,最后將打包好的程序移植到手機上即可。
有了這樣的想法,我們就先來安裝這樣一個系統,最方便的應該是用虛擬機來跑這樣一個系統,關于虛擬機,推薦用下面兩款中的一個即可:
我已經用虛擬機搭建好了整套環境
如果嫌麻煩的,也可以直接下載我的虛擬機環境,直接玩起來即可
下載鏈接如下:
https://pan.baidu.com/s/118lLR4ew86eeJkWxZF7x2g?pwd=7k56
安裝好虛擬機后,我們需要用虛擬機來安裝Alpine 這個系統,我們在這里下載Alpine系統鏡像即可:
# alpine鏡像下載地址
https://www.alpinelinux.org/downloads/
不出意外,大家下載的iSH Shell中Alpine系統都是x86 32位系統,所以我們只要下載上圖中的系統就行。
下載完成后,打開我們的虛擬機軟件來載入Alpine系統鏡像,用虛擬機來安裝操作系統會非常的快,經過如下幾個步驟,即可完成系統鏡像的載入,并啟動系統;
然后一路點擊,直到啟動虛擬機(默認登陸用戶:root):
這里不得不提下,安裝完虛擬機后,不要急著啟動,我們可以先進入設置界面,將你的磁盤空間加大,這樣就不會遇到后面磁盤空間不夠的煩心事了:
設置完磁盤空間后,可以啟動alpine系統了,如果你的系統已經打開,那么只能先關閉,設置完磁盤空間后,再重新打開。
(默認登陸用戶:root)
根據上圖中的提示,我們可以用setup-alpine命令來對系統進行初始化,我們一路回車即可(除了用戶名密碼設置):
系統基本環境和網絡環境都已經初始化好了。
然后我們來用setup-disk命令初始化磁盤,這一步的主要目的是為了防止重啟虛擬機后安裝的軟件包消失,做了無用功:
磁盤初始化完成后,用reboot命令來重啟虛擬機即可。
完成所有初始化的設置后,我們還是像之前在蘋果手機上設置一樣,替換默認的安裝源為aliyun安裝源,然后再來安裝一些系統軟件:
apk update
apk add vim
apk add gcc g++ binutils make
apk add zlib zlib-dev
apk add git
apk add python3-dev
apk add libffi
apk add libffi-dev
apk add build-essential
apk add mysql-dev
apk add libmysqlclient
apk add libmysqlclient-dev
apk add libmariadbclient-dev
apk add jpeg
apk add jpeg-dev
apk add openssl-dev
apk add openssl
apk add libssl libssl-dev
apk add bzip2-dev
apk add zlib1g-dev
apk add libz-dev
apk add libc-dev
apk add readline-dev
apk add ncurses-dev
apk add sqlite-dev
apk add tk-dev
apk add gdbm-dev
apk add db4-dev
apk add libcap-dev
apk add xz-dev
安裝完基礎系統軟件后,開始來安裝python環境以及pip服務包,看過我們前幾期手機打造云服務器視頻(手機上如何部署一個博客站)的小伙伴肯定知道,我們要部署的這個博客服務是使用python3.9版本跑成功的,所以我們直接安裝python3.9的服務,系統默認的是python3.10 ,所以我們可以通過源碼編譯的方式來安裝即可:
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
tar xzf Python-3.9.6.tgz
cd Python-3.9.6
https://mp.weixin.qq.com/configure --enable-optimizations --enable-shared
make altinstall
python3.9 -V
pip3.9 -V
https://pip.pypa.io/en/stable/installation/
python和pip安裝完成后,就可以按照開源博客項目的部署教程來即可:
https://gitee.com/lylinux/DjangoBlog
這里不得不再提一個你可能會遇到的坑,在運行下面這句命令的時候,可能會遇到一個錯誤:磁盤沒有足夠的空間???
pip3.9 install -Ur requirements.txt
可以通過加上前綴來解決:
TMPDIR=/ pip3.9 install -Ur requirements.txt
3. 運行訪問博客服務
項目部署運行成功后,我們就來開始最關鍵的一步了,用pyinstaller工具打包Python項目。
首先來安裝pyinstaller工具:
# 安裝pyinstaller工具
pip3.9 install pyinstaller
# 檢查是否安裝成功
pyinstaller -v
然后我們用pyinstaller工具打包我們的python項目
這里提供了一份打包的配置文件,可以按需拿取
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['manage.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=['haystack.urls','haystack.routers','djangoblog.whoosh_cn_backend','tzdata','compressor','rcssmin','rjsmin'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='manage',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
大廠數據恢復
將上面的這份配置文件保存在開源博客項目的根目錄,命名為manage.spec,如下圖所示:
然后開始指定這個配置文件進行打包
pyinstaller manage.spec
打包完成后,可以看到在dist目錄下,生成了一個單獨的可執行文件,大概60M左右:
然后復制下面的代碼保存成hook-jieba.py文件,并移動到Pyinstall安裝目錄下的hooks目錄(這里可以根據自己機器上的環境來移動文件即可)
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files("jieba")
# 移動文件至Pyinstaller的hooks目錄下
# 根據自己機器上的hooks目錄移動即可
cp hook-jieba.py /usr/local/lib/python3.9/site-packages/PyInstaller/hooks
然后運行我們剛打包好的dist目錄下的這個大文件
TMPDIR=/ https://mp.weixin.qq.com/manage runserver --noreload 0.0.0.0:8000
項目啟動成功后,就可以訪問我們虛擬機中的博客服務了, 然而這并非是終點:
通過分析上面的報錯頁面,是由于找不到靜態資源,如html、css、js這樣的文件而導致頁面訪問失敗,于是通過測試,把靜態文件移動到相關的目錄下,并再次刷新頁面,就能訪問成功了;
移動靜態資源到相關目錄
離大功告成還有最后一步
虛擬機中訪問博客服務已經成功了,接下來我們只需要把這些相關文件全部上傳到手機上相應目錄即可:
這樣,在手機上就能成功跑起來這個博客項目了。
Wow ?。?!是不是很酷
PS:
我已經用虛擬機搭建好了整套環境
如果嫌麻煩的,也可以直接下載我的虛擬機環境,直接玩起來即可
下載鏈接如下:
https://pan.baidu.com/s/118lLR4ew86eeJkWxZF7x2g?pwd=7k56
???歡迎有興趣的小伙伴一起交流討論???