(一)专题介绍:移动端安卓手机改造成linux服务器linux服务器中安装软件、部署前后端分离项目实战
快捷目錄
- 前言
- 一、涉及到的相關技術簡介
- 二、具體實現過程及踩坑雜談
- 1.安卓手機改造成linux系統實現方案
- 2.改造后的手機Linux中軟件的安裝
- 3.手機Linux中安裝MySQL5.7踩坑實錄
- 4.手機Linux中安裝軟件的正確方法
- 三、Linux服務器部署前后端分離項目流程
- 1. 前提準備(安裝必要軟件,搭建環境):
- 2. 前后端分離項目的詳細部署過程:
- 總結
前言
總體概述: 本篇文章隸屬于“手機改造服務器 部署前后端分離項目”系列專欄,該專欄將分多個板塊,每個板塊獨立成篇 來詳細記錄:手機(安卓)改造成個人服務器(Linux)、Linux中安裝軟件、配置開發環境、部署JAVA+VUE+MySQL5.7前后端分離項目,以及內網穿透實現外網訪問等全過程。具體內容見各篇介紹。
~
本文目的:本文旨在分享如何實現將一部手機改造成linux服務器,改造后的Linux中軟件的安裝,以及 整個過程中碰到的問題和解決方案,重點關注點在于記錄實現過程中踩到的坑。所以大家可以根據自己的情況,選擇性閱讀本專欄的各篇文章及內容。
寫前小插曲:
相信大家平時一般都是通過購買服務器、域名來做點事情,不出意外 俺之前也是zai樣子搞,但是想想每次都得掏錢買服務器才能搞事情,我就肉疼萬分哈哈哈。其實我之前就一直有想法將自己的手機整成一個Linux服務器,體驗一把不用掏錢就能擁有一臺自己的服務器,然后在上面盡情造作的快感比如在上面部署個項目啊什么的。你不妨跟我一起想一下這個場景:有一臺屬于自己的個人服務器隨身攜帶著,時不時的遠程連接上操作一番是不是賊爽,重點是既提升了Linux技能,又掌握了Linux平臺下安裝軟件、開發與部署項目等等,是不是想想就很nice!
咳咳,言歸正題,想法歸想法但光想也沒鳥用。身為一名普通打工仔,平時一直忙于給老板打工從不敢摸魚,生怕老板的寶馬變青桔 hahaha…所以抽不出身來落地實現這個想法。這不最近擠啊擠終于海綿里擠出了一丟丟時間,一不小心就將我的手機改造成了一臺Linux服務器(Debian Linux)。對,你沒聽錯,這不是在做夢,是真的實現并體驗了一番!當然了,至于怎么整成Linux不是本文的重點內容,本文重點在于記錄一下移動端手機改造成Linux服務器后,Linux中安裝軟件過程中踩到的各種坑,同時總結整理出正確可行的方法,分享出自己的心得,希望能幫助到更多有同樣需求的朋友少走彎路,快速實現目的,從而騰出更多的時間來做自己喜歡的事情,比如喝著java享受生活。
一、涉及到的相關技術簡介
本欄目專題涉及到的關鍵詞主要有:Linux 、Java、MySQL、Nginx、Redis等,但對于它們及相關的技術在此就不作介紹了,姑且認為讀者已具備并掌握相應技術,本文的主角是Linux與MySQL。
Linux: 我們都知道Linux是一套免費使用和自由傳播的類Unix操作系統,因此有許多分支發行版及衍生版本。Linux支持多用戶、多任務、多線程和多CPU,在安全、穩定、性能等諸多方面都有優勢,多用作服務器操作系統,想必大家在實際工作開發中都親身接觸感受過它的魅力吧。
作為 Linux界的第一個發行版,Debian是活躍開發中最古老,最穩定的 GNU/Linux 發行版之一,同時也是社區類Linux的典范,是迄今為止最遵循GNU規范的Linux系統。因其優良的穩定性及靈活擴展性,使得它在很多方面都是一個理想的環境:桌面、服務器、測試、開發… 所以本專題所有文章中提到的Linux均指的是Debian Linux。
MySQL: MySQL是一款非常優秀的關系型數據庫,因為其速度、可靠性和適應性而備受關注,很多大型網站都是用Mysql作為數據存儲,本文將較為詳細的記錄安卓手機Debian Linux上安裝mysql5.7的艱難歷險記。
二、具體實現過程及踩坑雜談
1.安卓手機改造成linux系統實現方案
對于Linux系統的使用,我們常見的做法是按需付費購買一定配置的服務器,或是通過虛擬機安裝、當然只要足夠任性還可以直接購買一臺硬件服務器等等。不過這些基本都是PC端體驗的,如果購買服務器就要花錢才能擁有而且還得持續花錢哈哈哈(不然到期了什么都沒了);如果選擇安裝虛擬機然后在虛擬機上安裝Linux,相信時間長了你就會慢慢嚼著這種方式體驗不爽(實體機得一直開機著、啟動慢、虛擬機占用內存大、使用過程中可能會卡頓等一系列問題)。因此,喜歡折騰的我開始踏上了研究探索新的體驗方式之路-----“將手機改造成Linux服務器”,所以才有了大家看到的這篇文章。在整個實現過程中收獲頗多,也學習到了很多相關的知識,所以決定出一個系列專題,分篇分享自己的所思所得。
目前手機端體驗Linux大致有兩種實現思路:
- 通過刷機直接將手機刷成Linux。由于安卓手機本身就是在Linux基礎上進行的二次開發,所以安卓系統用的就是linux內核,本質上就是精簡版的Linux,但這種方式有點繁瑣大多需要root,適配的驅動等;
- 通過安裝軟件來模擬Linux環境。市面上這類軟件有很多比如Termux、zerotermux、aidlearning、AidLux等。本人采用的是第二種虛擬化方式來實現,具體采用的是AidLearning的商業版本—AidLux。為撒子選擇AidLux?別問了問就是最好用哈哈哈我不是托說的是大實話。AidLux是基于ARM架構的跨生態(Android/鴻蒙+Linux)一站式AIoT應用快速開發和部署平臺APP,通過共享 Linux 內核實現了Android 和 Linux 生態融合,這就是說能夠為單一設備同時提供Android和Linux運行環境,所以我建議大家使用AidLux,而且AidLux本身就是一個Linux平臺,而Termux這些需單獨安裝Linux系統,并且AidLux擁有可視化界面,可在PC端控制AidLux,方便很多。
2.改造后的手機Linux中軟件的安裝
手機改造成Linux系統后,我們便可以進入Linux系統上手體驗了…期待的搓手手。以AidLux為例,可以直接在手機端進入到Linux系統進行操作,也可以通過AidLux提供的文件瀏覽器功能,在PC端瀏覽器輸入手機ip:8000端口訪問,或者采用傳統方式通過XShell等遠程工具連接到Linux。進入Linux系統之后就可以在里面安裝軟件、配置環境之類的從而為部署網站部署項目等做好準備工作。
Linux系統中安裝軟件的方法有好幾種,但是從本質上來講大致有三種類型: 通過Linux系統的包管理工具安裝(如yum,apt等,具體取決于Linux發行版類型)、通過二進制包安裝、通過源碼編譯安裝。
- 包管理工具安裝: Linux系統中大多數軟件的安裝可以通過此命令工具安裝。如果你的Linux是RedHat紅帽系列如RHEL、Fedora、Centos等,則可以通過輸入yum install 軟件名 直接安裝即可;如果是Debian系列如Debian、Ubuntu、Mint等及其衍生的版本,則通過apt/apt-get install 軟件名 安裝。 這種方式安裝的優勢/好處在于它在執行安裝過程中可以自行解決包依賴問題不用我們自己來處理依賴關系。
- 二進制包安裝: 對于有些軟件 包管理器工具上是沒有的,不能通過apt等直接安裝,這時候就可以用二進制包方式安裝了。二進制包是預先在linux機器上編譯好并打包好的文件,是別人制作好的可以直接安裝或者直接使用的軟件包,類似于windows里的.exe,具體來說就是.exe文件是適用于windows平臺的二進制包;deb包是適用于ubuntu等linux平臺的二進制包;RPM包是適用于redhat系列Linux的二進制包。所以Linux系統中 二進制包安裝方式根據是否需要安裝又分為兩種:
解壓即可用(類似于Windows平臺綠色版軟件)。如oracle jdk 的安裝,下載壓縮包解壓后配置好環境變量即可;
另一種是通過安裝腳本或安裝向導程序完成安裝。如下載解壓后的rpm包、deb包等 需要使用rpm命令、dpkg命令等包管理工具來安裝。由于這種方式運行的是編譯好的可執行二進制文件,快捷方便 但是也有缺點,比如安裝的環境必須與編譯時的環境一致或者相當;包與包之間存在著相互依賴的情況;卸載包時需要先把依賴的包卸載掉,如果依賴的包是系統所必須的,那就不能卸載這個包,否則會造成系統崩潰。總之rpm方式方便是方便但是安裝過程中如果出現多級包之間依賴的情況需要自己處理依賴,而且rpm包里各個rpm文件安裝順序不能隨意修改。 - 通過源碼編譯安裝: 編譯安裝可以根據需求來定制軟件, 可以指定安裝路徑, 可以指定某些模塊的功能開啟或者禁用,但是這種方式操作起來稍顯復雜,感興趣的可以自行去研究。
溫馨提示:
最后特別要強調的一點是:
在Linux中安裝軟件時,不管使用哪種方式去安裝,一定要下載與你的linux系統CPU架構匹配的安裝包!這句話很重要,后面還會再次提到并進行詳細解釋,雖然沒必要圈起來,而且考試也不會考hahaha,但是相信讀完這篇文章后你就會徹底明白有多重要。
本人當時就是因為這個問題在安裝MySQL5.7時踩了不少坑浪費了不少寶貴的時間。但話說回來任何事情都有兩面性,雖然失敗的感覺很讓人受挫,但是這個過程中可以收獲很多意想不到的知識與技能,可以很好的積累經驗正所謂吃一塹長一智!接下來我將圍繞這個問題展開,詳細跟大伙兒嘮嘮我的踩坑歷險記。。。。
3.手機Linux中安裝MySQL5.7踩坑實錄
在安裝軟件這件事上,其實AidLux做的挺到位的,因為AidLux作為一款智能物聯網(AIoT)應用開發和部署平臺,提供了具有統一交互體驗的跨平臺圖形化界面的完整linux系統,使安裝了AidLux的設備可為用戶同時提供Android和Linux運行環境,所以我們在此Linux中安裝軟件可以像在安卓系統上一樣 通過應用中心或命令行的形式安裝運行海量Linux軟件、編程語言及框架等,也可以根據自己的需求自行安裝指定版本的軟件。
當時在安裝JDK等其他軟件時都沒啥毛病,后來在安裝MySQL時,本來可以直接通過AidLux提供的命令或應用中心下載安裝,但不幸的是AidLux中提供的mysql其實是mysql的一個分支:MariaDB。考慮到我項目中經常使用的數據庫是MySQL5.7,雖然這兩個是兼容的應該影響不大,但是偏偏這個時候我強迫癥老毛病又犯了,就想安裝個MySQL5.7你說氣人不hahaha,,,,但是很遺憾的發現oracle官方提供的安裝包都是amd的(未提供arm/aarch64的任何形式的安裝包),所以只好下載了amd64的包,而且主要是 當時對這個問題認識還比較模糊,所以并沒有意識到問題的嚴重性沒有想到會給自己帶來這么多麻煩…吐舌頭,以至于接下來我各種能嘗試的方法都試遍了,能參考的博客什么的都翻了個底朝天恁是死活裝不成功。不管是apt,apt-get,rpm,dpkg等之類的命令大法,還是二進制安裝包,不管是下載deb包,rpm包通過命令自動安裝,還是下載deb包,rpm包的各個deb/rpm文件手動順序安裝,不是在安裝過程中提示Unable to locate package(根據網上說法換了各種源都沒解決,又安裝了其他工具命令等等之類的方法結果統統都無濟于事),就是執行中途各種報錯,最讓人崩潰的是前幾步都成功了到關鍵的最后一步給你報錯(氣的差點當場去世)!中間的無數次報錯經歷我就不列舉了。
最后在一個論壇里找見了一種解決辦法,說是通過命令sudo dpkg --add-architecture amd64即可,嘗試后的確原來的報錯不見了可是新一輪的問題又來了:提示缺少依賴,恐怖的地方在于這種依賴簡直就是黑洞式依賴,層層多級依賴(后來我想大概因為本身是arm64架構的,現在添加了amd64,雖然安裝包支持了但是系統上沒有任何amd64的底層lib庫文件),直接讓人安裝到懷疑人生,差點就要將電腦大卸八塊了!!!
你以為坎坷這就結束了?NoNoNo折磨還沒完呢,請耐心 聽我說謝謝你 啊呸說錯了,是耐心聽我繼續放哈哈哈,話說最后的最后,山窮水盡疑無路,以為柳暗花明又一村,我琢磨著既然安裝方式都不行,那我能不能找到一個二進制免安裝版的捏(前面講到過),于是找啊找啊找網上找到了二進制免安裝的,心里開始暗自欣喜并告訴吉幾馬桑要成功了準備擁抱世界吧!結果,,誰知正當我配置好mysql的配置文件my.cnf之后 自信的敲下./mysqld --initialize --user=mysqluser…命令進行數據庫初始化操作時:又報錯提示:Illegal instruction,尼瑪什么鬼,,, ,,笑容漸漸消失!經過又一輪百度之后,找到原因大概是非法的指令,不支持。按照網上說法,用mysql_install_db命令替換mysqld再次執行初始化時,提示: -bash: mysqld: command not found,嗯?又給勞資出了新花樣?沒關系換個姿勢再來,于是又一頓百度:說是Linux系統會將全部用戶的命令都會放在 usr/bin/ 目錄下,所以系統會默認查找/usr/bin/目錄下的命令,而MySQL的命令沒有出現在該目錄下,所以就會出現 -bash: mysql: command not found,通過拷貝或建立軟鏈接就可以解決。經歷了這么多次的挑戰,我趕腳自己似乎已初具福爾摩斯秘法開始懷疑可行度了,但還是照做了,運行完ln -s /usr/local/mysql/mysql-5.7-linux/bin/mysql_install_db /usr/bin之后,忐忑的再次執行了初始化命令,呵呵果不其然又是可惡的提示:Illegal instruction!!!!!
這下你們是不是開始思考我是否還活著哈哈哈。放心,作為一名程序員,遇到bug是我們的榮幸,沒有強大的內心和頑強的毅力怎么能征服bug呢,怎么能實現改造世界的夢想呢hahaha吹的有點過了,不過有首歌唱的是真好:心若在夢就在,只不過是從頭再來!不經一番寒徹骨,怎得梅花撲鼻香是吧,我相信只有我們想不到的沒有做不到的。
功夫不負有心人,終于在嘗遍了各種方法之后,我深刻的重新又認識了一次操作系統所依賴的處理器架構,立馬去了解學習了指令集、處理器架構等方面的知識。了解后可謂豁然開朗,找到了問題根源并成功解決了問題,現在回過頭來看,其實問題很簡單就是架構不匹配不支持!
4.手機Linux中安裝軟件的正確方法
在Linux中安裝軟件時,不管使用何種安裝方式,一定要在安裝前先查看確認自己Linux系統的cpu架構類型,然后下載與你的linux系統內核架構相匹配的安裝包。
- PC端Linux系統的CPU一般是x86、x86_64或amd64架構(三者其實是同一個東西不同叫法);
- 移動端設備CPU都是使用ARM架構(arm處理器的特性決定了它非常適合在移動通信領域使用,所以目前智能手機處理器都是采用的arm的架構),所以安卓手機中的Linux是基于arm的(可以通過arch等命令查看確認)。因此,對于安卓手機端Linux系統,就得下載arm/aarch64的軟件安裝包,其他amd64等架構的包都是安裝不成功的(因為arm架構的CPU是不支持不識別x86下amd架構的CPU的指令集的!),相信能看到這個地方的朋友,已經體會到了我嘗遍百草的不易哈哈,所以可能在大家看來很不起眼的一段話,卻是我經受沉痛的折磨教訓之后換來寶貴經驗哦。
三、Linux服務器部署前后端分離項目流程
大多數情況下,搭建服務器的目的就是來部署上線我們的項目,以提供給用戶去使用,提供服務給目標用戶。所以下面給出本專題的所有計劃內容:Linux服務器中部署前后端分離項目全流程。大家可以結合自身需求選擇閱讀本專題的系列文章。
1. 前提準備(安裝必要軟件,搭建環境):
- 安裝jdk (常用oracle jdk1.8)
oracle jdk1.8安裝教程 - 安裝數據庫(常用mysql5.7+ 或oracle等)
mysql5.7+版本 安裝教程 - 安裝Redis (非關系型內存數據庫,做緩存等用途)
zhengzai更新中,請 == - 安裝Nginx中間件 (做正/反向代理轉發、資源壓縮、負載均衡等用途)
zhengzai更新中,請 ==
2. 前后端分離項目的詳細部署過程:
- 正在實現中,請==
總結
以上就是今天要說的全部內容,為了能盡可能的表達清楚,幫助大家更好的理解,這篇文章也是花了我將近一周的時間,不為別的,就為了將自己踩過的坑、遇到的重點問題及解決方案等記錄并分享出來,從而幫助在同條路上走來的伙伴們及時止步,吸取一些經驗避免再次入坑。
從下一篇開始,將正式分享改造后的安卓Linux服務器中進行 JDK 、MySQL5.7、Redis、Nginx等軟件的安裝和環境配置,以及前后端項目的打包、部署到手機Debian Linux系統中等等。內容持續更新中,歡迎大家的閱讀,希望大家多支持哦!有不對的地方歡迎指正,我們一起奮斗一起進步吧。
總結
以上是生活随笔為你收集整理的(一)专题介绍:移动端安卓手机改造成linux服务器linux服务器中安装软件、部署前后端分离项目实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BUG的生命周期,bug从“出生到死亡”
- 下一篇: 【数据结构】——多项式乘法