1. 程式人生 > >如何搭建自己的本地伺服器,Web伺服器

如何搭建自己的本地伺服器,Web伺服器

# 搭建本地伺服器,Web伺服器——保姆級教程! **本文首發於[https://blog.chens.life/How-to-build-your-own-server.html](https://blog.chens.life/How-to-build-your-own-server.html)。** 先上圖!大致思路就是如此。 ![思維導圖](https://img.chens.life/images/2020/08/13/20200813125403.png) ## 前言 暑假因為疫情在家無事可做,便白嫖了阿里雲大半年的虛擬主機。雖然它只有1核2G,1M的頻寬,但也給了我一個實踐的機會,讓我有機會了解學習apache、php、js、Linux等等······ 顯然!我們已經不再滿足於一百多KB的頻寬,緩慢的cpu速度和狹小的50G系統盤了!自建一個性能強大,頻寬300M(這取決於自己的寬頻),硬碟容量隨意增加的本地伺服器勢在必得!終於,功夫不負有心人,我在折騰了一個通宵之後就肝了出來,於此將我的經驗分享出來,希望能幫助到大家。 ### 本地伺服器的好處 毋庸置疑,那就是可操控性、可拓展性和極致價效比。相比於各類雲服務廠商(阿里雲、騰訊雲等)動輒一年好幾千的“高階”配置,我這個窮人還是老實折騰我的本地伺服器吧(不爭氣的眼淚流了下來,嗚嗚嗚~~) ### 本地伺服器的弊端 當然了,本地伺服器畢竟不是專業的伺服器。況且國家對於網際網路的管控還是很嚴格的,所以這就導致了本地伺服器的一些弊端。例如, 1. 本地伺服器不夠穩定,容易受到**停電**、機器故障、網路故障等各類不可控因素的影響; 2. 我們所部署的本地伺服器並不是專業的伺服器,本身的併發能力不強,所以不適合使用者數量特別巨大的人; 3. 電信運營商對於家用寬頻做了諸多限制,**封禁了80,22等常用埠**。雖然能夠通過埠對映或修改埠來解決,但還是不太美觀。幸運的是,我這裡的443埠沒有被封,不要太開心~~ ## 前提準備 ### 公網IP 這是至關重要的一項。開啟[http://ip.3322.net](http://ip.3322.net),檢視返回的IP地址與光貓普通使用者後臺的IP地址是否相同,如果相同,則當前IP為公網IP。如果不相同,則需要向電信運營商申請公網IP。打給自己的運營商客服,告訴她家裡要裝NAS或者監控,申請公網IP。 ### 路由器改為橋接 一般我們安裝的光貓都自帶路由器和撥號功能,但是不具有[埠對映](https://baike.baidu.com/item/%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84/98247?fr=aladdin)功能,無法將本地區域網內的伺服器對映到公網上面。所以我們需要讓路由器來進行撥號任務,而光貓單獨進行光電訊號轉換。 將光貓改為橋接需要用超級管理員登入光貓後臺,一般為`192.168.1.1/admin`,**不同的光貓情況不同,去百度搜搜自己的光貓型號**。另外超級管理員密碼要找裝機師傅要,他們一般以各種理由推辭,難搞哦~。如果搞不定就去萬能的淘寶吧!(別怪我沒提示哦~)我自己也是找的淘寶。。。 ### 一臺舊電腦 我是用的是一臺老式的Dell靈越筆記本,4G RAM,i5 八代U,500G HDD。這對於個人部落格伺服器來說是綽綽有餘了,足以抵得上阿里雲好幾千的伺服器了。 ### 一個域名 #### 為什麼需要域名 在這裡我說一下為什麼我們還需要一個域名呢?直接適用IP地址訪問不就好了?反正是自己使用的。 因為我們向電信運營商申請的公網IP是動態的,也就是說隔一段時間就會改變,不是固定的IP地址。那麼能不能申請固定的IP地址呢?答案是可以,但是非常貴,面對大性企業的。我這種窮學生就算了吧。 所以,在有個一個域名之後就可以使用[動態域名解析](https://baike.baidu.com/item/%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90/98200?fr=aladdin),將域名解析到變化的IP地址上,這樣不論IP地址如何變化,我們總是能夠訪問得到本地的伺服器。況且,如果是想做個人部落格,只有域名才能夠被百度和谷歌收錄,才有機會被別人看見。 #### 申請域名 註冊域名可以去阿里雲萬網,也可以去騰訊雲,找個合適的域名即可。直接買,即可直接開始使用。 #### 備案 不過我建議,有空的時候去備個案,也不麻煩,時間也不長。況且這樣能為以後免去很多麻煩。 各大雲服務廠商都有提供代備案服務,直接按照流程走即可。都是免費的,不收取任何費用。 ## 中間部署 ### 安裝CentOS 7 作業系統 市面上有很多可供選擇的伺服器系統,Linux是毋庸置疑必選的——由於它的穩定性。至於為何選CentOS 7,~~當然是因為我對它熟悉啊~~~~ 咳咳,那當然是因為CentOS本身就很適合做web伺服器,況且使用者多,問題容易解決。 具體安裝步驟見另一篇文章[https://blog.chens.life/how-to-install-CentOS.html](https://blog.chens.life/how-to-install-CentOS.html)。 在這裡, 我們需要選擇安裝 **基本的網頁伺服器**,我們不需要圖形介面,這將會更加省電和高效。 ![02](https://img.chens.life/images/2020/08/15/20200815134903.png) #### 配置網絡卡驅動 剛安裝好的 **基本網頁伺服器**可能無法連線外網,在Linux終端上使用`ping baidu.com`測試一下,如果不通,則需要配置一下相關檔案。參考這篇文章https://www.php.cn/centos/445305.html。這裡是有線網路的配置方法,至於無線網絡卡如何驅動,請自行百度Google。 #### 更換國內yum源 國內速度太慢,目前國內的大公司有許多開源映象站,例如阿里雲、網易、清華大學、華為等等,這裡使用阿里雲的yum源。 參考官方文件[https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11bXrW8A](https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11bXrW8A),依次執行 ```java su 輸入root密碼 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache ``` #### 安裝ssh ``` sudo yum install oppenssh -y ``` 啟動ssh的服務: ``` systemctl start sshd.service ``` 設定開機自動啟動ssh服務 ``` systemctl enable sshd.service ``` 配置檔案在`/etc/ssh/sshd_config`,一般不用修改。 #### 安裝ftp ``` sudo yum install ftp -y ``` ssh和ftp服務都是22埠的,我們目前在內網進行部署,所以不必更改埠,後面會進行埠對映,已解決運營商封禁22埠的問題。 至此,我們就可以使用shell和ftp軟體進行遠端連線了,推薦xftp和xshell,學生和家庭使用者免費,在這裡申請,[https://www.netsarang.com/zh/free-for-home-school/](https://www.netsarang.com/zh/free-for-home-school/)。也可使用免費版的FinalShell,[私有云](https://nas.chens.life/index.php/s/Zbd8ELmPstMrMot),密碼:`chens.life`。 ### 安裝寶塔面板 寶塔面板可以更簡單明瞭的進行網站的部署和伺服器的監控,非常值得推薦。參考官方網站[https://www.bt.cn/bbs/thread-19376-1-1.html](https://www.bt.cn/bbs/thread-19376-1-1.html) #### 一鍵安裝命令 ``` sudo yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ``` 耐心等待其安裝完成,之後會得到一個訪問地址和賬戶密碼,我們先使用內網訪問地址進行操作。 ![03](https://img.chens.life/images/2020/08/18/20200818133031.png) #### 第一次配置 使用內網登入面板,同意使用條款後進入介面。選擇LNMP方案安裝web環境,極速安裝。注意!php版本選擇7.2版本,以後許多開源好用的軟體必須高版本php的支援,例如nextcloud。 ![04](https://img.chens.life/images/2020/08/18/20200818133624.png) 耐心等待安裝完成。 #### 修改安全設定 安裝完成之後會提醒你 > 當前面板使用的是預設埠[8888],有安全隱患,請到面板設定中修改面板埠! 所以我們到 `面板設定`中修改**面板埠**、**安全入口**、**面板使用者**、**面板密碼**,按照自己的需求修改。,例如我將埠修改為`5656`,安全入口修改為`blogtest`。這樣設定之後就避免了面板被暴力破解的機率,更加的安全。 ![06](https://img.chens.life/images/2020/08/18/20200818135009.png) #### 修改預設建站目錄 如果`/`目錄容量太小,而其他目錄空間較大,就可以將**預設建站目錄**修改為自己想要的位置。在`面板設定 -> 預設建站目錄`修改。本例中只有`/`目錄,所以不再演示。 ### 配置路由器埠對映 到了這一步就基本完成了伺服器環境的搭建,最重要的一步就是如何讓外網能夠訪問自己的伺服器,並開啟寶塔面板。 首先我們登入自己的路由器控制檯,繫結自己伺服器的內網IP地址,這樣防止了埠對映因為伺服器內網IP地址變動而出錯。之後,我們需要進入**埠對映**這一高階功能,填上要對映的外網埠和內網IP和埠,即可使用自己的公網IP加埠訪問到寶塔面板,證明埠對映成功。例如這樣 ![07](https://img.chens.life/images/2020/08/18/20200818140712.png) ![08](https://img.chens.life/images/2020/08/18/20200818140723.png) 寶塔面板的外部和內部埠可以相同,這主要看自己的電信運營商有沒有封禁使用的埠。例如要想訪問80埠的web伺服器,我們只能把99(舉個例)對映到內網IP的80埠,這樣就實現了外網訪問。就是有點難看罷了。 不過,如果你所在的電信運營商沒有封禁443埠,就可以使用https加密來不加埠訪問自己的網頁了。這需要在埠對映中新增轉發規則. ![09](https://img.chens.life/images/2020/08/18/20200818141101.png) 而你的網址也要申請ssl證書,才能開啟https加密。我們後面會講到,直接使用寶塔的一鍵部署功能。 ### dns解析 登入dns解析管理後臺,把域名解析到自己當前的公網IP。即可通過**域名加埠**的方式訪問自己的網站。 ## 後期完善 #### 動態域名解析 關於動態域名解析,雖然有花生殼等服務商,但都是收錢的,況且自定義域名也是收費的。我目前再用GitHub上的一個開源專案https://github.com/NewFuture/DDNS,根據相關說明配置好以後,讓寶塔計劃任務每10分鐘執行一次,即可實現動態域名解析。 ![10](https://img.chens.life/images/2020/08/18/20200818143802.png) ### ssl證書部署 在寶塔面板網站設定的ssl中,申請Let's Encrype證書,選擇阿里雲ddns驗證(根據自己的雲服務商)。寶塔ssl證書在自建伺服器的條件下不可用。 ![11](https://img.chens.life/images/2020/08/18/20200818144211.png) ### 筆記本禁止盒蓋休眠 `vim /etc/systemd/logind.conf`,將`HandleLidSwitch:`後面改為`ignore`,將前面的`#`去掉。儲存退出。然後執行`systemctl restart systemd-logind`即可生效。 ## 常見錯誤 ### https無法訪問 只設置了80埠的對映,沒有設定443埠的對映。或者設定了,但是沒有點選 **立即生效**。 ### CentOS無法ping通,無法連線外網 參考這篇文章即可解決[https://blog.csdn.net/sinat_32079337/article/details/70238107](https://blog.csdn.net/sinat_32079337/article/details/70238107) ## 結尾 這就是我自建web伺服器的大致過程了,因為使用了虛擬機器模擬的一部分內容,所以可能不是100%的資訊一致。但是,道理都是一樣的,我們也要合理的利用百度和Google。希望這會對你有所幫助。 歡迎在下方留言,或者給我發郵件:[email protected]。 歡迎訪問我的個人部落格[https://blog.chens.life](https://blog.chens.life)。