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