從購買服務器到項目的基本部署(保姆級別教程!)

雲

前言

​在剛接觸時,我對 VPS 主機、虛擬主機、雲服務器等名詞真的是一臉懵,爲了讓後來接觸的人少走一些彎路,同時也給本身作一些筆記,也就出現了本篇文章。本篇文章講述了 瞭解服務器 ---> 選擇服務器 ---> 購買服務器 ---> 使用服務器 ---> 項目部署 這幾方面。文章前半部分主要是爲了區分不一樣的服務器。若是單單隻須要瞭解操做,能夠從購買服務器開始。但願你們看完有所收穫!javascript

瞭解服務器

基本概念

​服務器一般分爲獨立服務器(物理服務器)、VPS 主機、虛擬主機、雲服務器這幾類。同時,無論是虛擬主機、VPS 主機仍是雲服務器,其本質上都是一臺電腦,它們都由操做系統和服務器資源組成。css

image-20200622103502386

VPS 主機

​VPS 主機是將一臺物理服務器利用虛擬化技術劃分紅多個操做系統,每一個 VPS 均可分配獨立公網 IP 地址、獨立操做系統、獨立超大空間、獨立內存、獨立 CPU 資源、獨立執行程序和獨立系統配置等,有很大的自主權。它獨享一份操做系統和服務器資源(一份 VPS 資源)。html


虛擬主機

​相比 VPS 主機,多個虛擬主機共用一份操做系統及服務器資源,能夠說是多個用戶共用一份 VPS 資源。同時阿里雲將虛擬主機分爲兩種。共享型虛擬主機和獨享型虛擬主機,他們主要的區別就是 IP 的不一樣,共享型虛擬主機是共享 IP 而獨享型虛擬主機是獨享型 IP。前端

根據 IP 分類虛擬機,能夠分爲共享 IP 虛擬機獨立 IP 虛擬機 其區別在於:java

  • 安全性、網站的收錄:共享 IP 因爲不少站點共用一個 IP ,因此若是站點常常受到黑客攻擊或者 SEO 很差會影響到其餘站點。可是獨立 IP 就不會出現這樣的問題。
  • 訪問:獨立 IP 的虛擬機可使用 IP 和域名訪問,可是共享 IP 虛擬機只能使用域名訪問。

雲服務器

​雲服務器是將服務器集羣的資源池(多臺物理服務器)利用虛擬化實現的,換句話說就是將計算機資源整合在一塊兒,作成隨用隨取形式,此時就能夠自由申請資源及釋放資源。這也就是爲何能夠彈性擴展雲服務器資源的緣由。linux

常見雲服務器:nginx

  • ECS 阿里雲服務器
  • CVM 騰訊雲服務器
  • BCC 百度智能雲

注意:若是 VPS 的母服務器出問題了,就意味着所有在裏面的虛擬主機也出問題了,屬於一損俱損。而云服務器的集羣一臺服務器出問題,還有鏡像文件,不會有任何中斷。shell

服務器發展

  • 剛開始時服務器都是物理服務器,但因爲須要購置硬件、佈線、設置網絡等,它的成本過高,可是最終的硬件使用率卻不高。
  • 爲了提升物理服務器的利用率和下降成本,因此出現了 VPS。當使用虛擬化技術將物理服務器的操做系統虛擬出不少套獨立運行的操做系統時,這些獨立的系統就是 VPS。其中虛擬化是一個抽象層,它將物理硬件與操做系統分開,從而提供更高的 IT 資源利用率和靈活性。
  • 雖然有虛擬化技術,可是用戶在使用服務器的時候須要本身安裝操做系統以及環境,十分費時費力,因此出現了虛擬主機。虛擬主機其實是多個用戶公用一套已經配置好環境(PHP + MySQL等)的操做系統。用戶能夠直接使用生成的系統,可是它會受到主服務器系統的限制和其餘虛擬主機搶佔資源的影響。
    • 例如,如今新增一個用戶,那麼虛擬主機管理程序直接在設定的路徑新建一個文件夾、另外在數據庫建立一個子數據庫,用戶將網頁代碼經過 ftp 等方式傳送到新建的文件夾內,並將數據存入新建的數據庫,整個網站就已經弄好了。域名解析後就能夠直接使用了。簡單快捷,可是由於是和別人公用一套環境,自由度不高,限制較多,因此當不少人公用後其性能也就很通常了。
  • 爲了把計算機資源整合在一塊兒作成隨用隨取,用多少取多少的形式,因此就出現了雲服務。雲計算是將一大堆的服務器、網絡、存儲資源集合成大集羣,當有使用須要的時候,便從一堆的資源中分配出來,用完後就釋放。

基本概念

虛擬主機

​虛擬主機又被稱爲虛擬服務器,它是利用虛擬技術將一臺物理服務器或 VPS 主機劃分爲多臺「虛擬」服務器。全部的虛擬主機相互獨立,有各自的 IP 、內存、CPU 、文檔存儲空間等。在外界看來虛擬主機至關於一臺獨立的主機,因此這種虛擬化的邏輯主機被稱爲「虛擬主機」。數據庫

  • 優勢
    • 方便管理: 因爲全部的虛擬主機都在同一部主機中,因此彼此能夠共享相同的配置和設置,從而節省管理的人力和成本
    • 下降成本: 虛擬主機的出現大大減小了搭建物理主機的成本,因爲多個虛擬主機的用戶共同承擔物理主機的硬件維護、網絡維護、通訊維護等,因此成本有必定程度的下降。
    • 上手成本低:軟件配置、防病毒、防攻擊等安全措施都是由專業的服務商提供,大大下降了操做的複雜性。虛擬主機基本上不須要管理和維護你的主機,互聯網供應商會完成絕大多數管理工做。
  • 缺點
    • 自主性差:虛擬主機不能由客戶隨意安裝軟件和遠程操做。
    • 功能、流量受限:某些功能會受到服務商的限制,同時有些服務商對網站的流量有必定的限制,這樣當網站訪問量比較大的時候將沒法訪問。
    • 存在資源搶奪:因爲服務器上有不少虛擬主機共享服務器資源,因此若是其餘虛擬主機執行一些佔據流量和帶寬的操做,頗有可能影響到其餘用戶。

雲服務器(ECS)

​雲服務器(Elastic Compute Service,ECS)的標準定義是指一種簡單高效、安全可靠、處理能力可彈性伸縮的計算服務。其管理方式比物理服務器更簡單高效。雲主機是對多臺物理服務器資源的虛擬化,這意味着跟好的容災能力和伸縮性,具備具備獨立的寬帶和 IP,用戶能夠根據需求自主安裝各類操做系統和配置相應的運行環境,同時能夠根據本身的需求來升級降級其功能。ubuntu

  • 優勢
    • 部署快捷:初始化時能夠配置好語言和系統類型。
    • 安全:平臺提供免費的 DDoS 防禦、木馬查殺、防暴力攻擊等服務。
    • 容災性強:雲服務器具備自動修復和熱遷移的能力,因此即便出現硬件故障或者火災等狀況,雲服務器也能夠很快的將數據遷移,繼續使用。
    • 彈性擴展:雲服務器用戶能夠根據業務量自由配置 CPU、內存、帶寬。在升級配置後數據也不會丟失。
  • 缺點
    • 上手成本高:須要有專業能力的人員管理。

    • 依賴網絡,不像物理服務器同樣數據存儲在本地。

      image-20200621153859578

因爲我是學習如何配置nginx,最終我選擇了阿里的雲服務器ECS。

Nginx 是什麼?

Nginx 是一款輕量級的 HTTP 服務器,採用事件驅動的異步非阻塞處理方式框架,這讓其具備極好的 IO 性能,時經常使用於服務端的反向代理和負載均衡。

NginxNode.js 語言的關係:

Node.js 能夠實現 Nginx 中絕大部分功能,可是因爲它們側重不一樣因此能夠配合使用達到更好的效果。Node.js 擅長於具體業務邏輯的處理,而 Nginx 擅長於底層服務端資源的處理,例如靜態資源的轉發、方向代理、負載均衡等。

正向代理

​咱們一般使用的 kexue 上網工具就是正向代理,他能夠把用戶的請求代理到一個能夠訪問外網的服務器上,而後再把返回的信息返回給客戶。代理服務器對於用戶來講是不透明的,用戶須要本身手動選擇代理。

1585375161159

反向代理

​在大型網頁中,大部分都使用了反向代理。當客戶端請求服務端數據的時候。其實是先請求到了代理服務器,而後由代理服務器再轉發到其同個局域網下的服務器。即向外部客戶端提供了一個統一的代理入口,客戶端的請求,都先通過這個 Proxy 服務器,至於在內網真正訪問哪臺服務器內容,由這個 Proxy 去控制。

​ 同時用戶無需進行操做,對於用戶來講反向代理是透明的。

1585375567019

這裏的方向就是正向代理,代理的是客戶端,反向代理代理的是服務器 Nginx 就是來充當這個 Proxy 的做用。

使用反向代理的緣由有:

​ 1.安全及權限:能夠經過 Nginx 過濾一部分沒有權限或者不安全的請求。同時因爲用戶沒法直接訪問到真正的服務器,從而提升了安全性。

​ 2.負載均衡:當有多個服務器時,能夠用 Nginx 作負載均衡,Nginx 會查詢服務器是否異常,若是異常就不發送請求到該服務器上,知道服務器恢復正常。同時還會將請求分到各個服務器上。保證了服務器的安全和穩定性。

基本概念:

  • 地域和可用區:是指 ECS 實例所在的物理位置。

  • 實例:等同於一臺虛擬機,包含 CPU、內存、操做系統、網絡、磁盤等最基礎的計算組件。

  • 實例規格:是指實例的配置,包括 vCPU 核數、內存、網絡性能等。實例規格決定了 ECS 實例的計算和存儲能力。

  • 鏡像:是指ECS實例運行環境的模板,通常包括操做系統和預裝的軟件。操做系統支持多種 Linux 發行版本和不一樣的 Windows 版本。

  • 塊存儲:包括基於分佈式存儲架構的 雲盤和共享塊存儲,以及基於物理機本地硬盤的 本地存儲。

  • 快照:是指某一個時間點上一塊彈性塊存儲的數據備份。

  • 網絡類型:

  • 專有網絡:基於阿里雲構建的一個隔離的網絡環境,專有網絡之間邏輯上完全隔離。更多信息,請參考專有網絡 VPC

  • 經典網絡:統一部署在阿里雲公共基礎內,規劃和管理由阿里雲負責。

  • 安全組:由同一地域內具備相同保護需求並相互信任的實例組成,是一種虛擬防火牆,用於設置實例的網絡訪問控制。

鏡像的選擇:

公共鏡像

是由阿里雲官方或第三方合做商家提供的系統基礎鏡像,僅包括初始系統環境。請根據您的實際狀況自助配置應用環境或相關軟件配置。

自定義鏡像

基於用戶系統快照生成,包括初始系統環境、 應用環境和相關軟件配置 。選擇自定義鏡像建立雲服務器,節省您的重複配置時間。

共享鏡像

是其餘帳號的自定義鏡像主動共享給您使用的鏡像。阿里雲不保證其餘帳號共享給您的鏡像的完整性和安全性,使用共享鏡像須要自行承擔風險。瞭解共享鏡像詳情>

鏡像市場

提供經嚴格審覈的優質鏡像,預裝操做系統、應用環境和各種軟件,無需配置,可一鍵部署雲服務器。知足建站/應用開發/可視化管理等個性化需求。瞭解鏡像市場服務>

公共鏡像,中 CentOSUbuntu 是 Linux 的 2 個主流的發行版。

img
CentOS
img
Ubuntu
基於 Red Hat Linux Enterprise 基於 Debian
更新頻度較少 常常更新
更穩定和更安全一些,由於不常常更新。 更新的軟件包可能不穩定,不安全?不會,由於他們在發佈到正式版本前進行了大量測試。
沒有足夠的教程和用戶羣較少(LCTT 譯註:多是因爲國內外狀況不一樣,在國內,相對 Ubuntu 來講,人們更喜歡用 CentOS 作服務器) 豐富的文檔,活躍的社區和大量的在線教程
對初學者困難,由於基於 Red Hat 桌面發行版不流行 更容易爲已經熟悉桌面版 Ubuntu 的初學者使用
支持 cPanel 不支持 cPanel
.rpm 軟件包和 「yum」 軟件包管理器 .deb 軟件包和 「apt-get」 軟件包管理器

新手:更適合使用 Ubuntu

​1.因爲他社區強大,不少問題能夠馬上找到解決方案

​2.Ubuntu 服務器對於之前使用過 Ubuntu 桌面的人來講會容易得多。其餘發行版也同樣,可是 Ubuntu 桌面版比任何其餘基於 Linux 的家用桌面更受歡迎。

商用: 使用 Centos

​1.CentOS 相對更穩定以及更安全,因爲更新頻率低,測試時間長,因此存在的 Bug 不多。

​2.大多數控制面板(包括最受歡迎的控制面板 - cPanel)僅支持 CentOS。若是你須要控制面板那麼選擇 Centos 是更好的。

購買服務器

購買雲服務器 ECS 具體看本身需求,分爲一鍵購買和自定義購買。

  • 一鍵購買:有具體的推薦和模板

1589276533191

1589276604233

自定義購買

使用嚮導建立實例

學習路徑

使用路徑

image-20200621171007270

建立實例和其他操做

​先進入 ECS 控制檯找到按圖中步驟進行鏈接,最後遠程登錄的帳號爲 root,密碼爲服務器密碼。

image-20200621172522586

image-20200621172346716

​注意:密碼必須複雜否則容易被入侵。而後把全部相關帳號密碼保存起來以避免丟失。鏈接遠程服務器時,我使用xShell。其登陸時能夠自動保存登陸態。

使用 XShell 鏈接實例

Xshell + Xftp 我的版下載地址,輸入名稱和郵箱能夠得到下載鏈接下載。

新建會話,填入實例中的公網 IP。

image-20200621175337101

image-20200621175536230

因爲接入端口爲 22,因此須要在安全組容許端口 22 被接入

image-20200622083126806

image-20200621175641308

image-20200621175741082

image-20200621180044654

安裝 Nginx

nginx.org 是開源社區,管理着 Nginx 開源版。

nginx.com 是商業社區,管理着 Nginx Plus 商業版。

這裏咱們使用的是開源版Nginx官網

使用 Xshell 輸入帳號密碼進入界面,直接按官網,一頓操做。

安裝環境

sudo apt install curl gnupg2 ca-certificates lsb-release
複製代碼

設置 Nginx 的 apt 存儲庫

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
複製代碼

安裝 Nginx

sudo apt update
sudo apt install nginx
複製代碼

經常使用的 Linux 命令

cd 路徑 //進入文件
ps -ax | grep nginx //查看正在運行進程中包含nginx的
kill 端口號 //上個命令可查到端口號kill 掉進程
mkdir dirName1 dirName2 //建立文件夾
ls //查看當前目錄
ll //查看當前目錄及其權限
rm -rf path //強制刪除path沒法恢復
rm path //刪除path文件
cp dirName //賦值文件夾
vim //編輯文件夾,退出且保存須要先按Esc 後輸入  :wq
cat //查看文件夾

複製代碼

Linux 經常使用命令整理

初步配置

ll // 查看當前目錄
複製代碼

1589273866491

cd .. // 到上一層(最頂層)
ll // 查看當前目錄
複製代碼

1589273899780

cd etc/nginx // 進入到 Nginx 目錄
ll // 查看目錄
複製代碼

1589274045829

vim nginx.conf // 編輯配置文件
i // 進入編輯模式
複製代碼

1589274149502

esc // 退出編輯
:wq // 保存當前編輯
// 接下來要重啓才能生效
複製代碼

從新啓動

方法1:

ps -ax | grep nginx // 查看正在運行進程中包含 Nginx 的進程
kill 端口號 // 上面能夠查詢到
nginx
複製代碼

1589275540370

方法2:

nginx -s reload // 重啓服務器
複製代碼

Nginx 命令

nginx 直接開啓
nginx -s quit 保存後退出
nginx -s stop 直接退出
nginx -s reload 修改配置項後直接更新

#能夠配合 ps -ax | grep nginx 來查看當前 Nginx 使用的端口
複製代碼

輸入你服務器的 IP 後會直接看到 welcome nginx 頁面!這是因爲配置項默認引用 /conf.d 路徑下的全部配置文件。

1589274671630

若是不須要,那麼直接註釋掉。本身在 nginx.conf 文件配置便可

1585532228238

具體實戰

配置詳解

基本配置

server {
        # nginx監聽端口號,不能被其餘應用佔用a
        listen 80;

        # nginx綁定的域名
        server_name  localhost;

        # 公共靜態資源
        location / {
          index index.html;
          root /project/airport_pc;
          # 項目打算放入的位置
          autoindex on;
          # 是否啓用目錄索引
         }
     }
複製代碼

放入項目

下載 winSCP 或者 Xftp 後登錄

1589275077017

Vue 打包獲得dist文件下的文件放到前面配置位置下(前面配置的 /project/airport_pc

1589275147857

開啓Gzip

「簡明性能優化」雙端開啓 Gzip 指南

所有配置

// /etc/nginx# vim nginx.conf  文件

    default_type        application/octet-stream;
    # 默認文件類型

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # 加載模塊化配置文件
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.

    # include /etc/nginx/conf.d/*.conf;


        gzip            on;
        gzip_comp_level 6;
        gzip_types text/plain application/javascript application/x-javascript text/css text/javascript ;
        gzip_static     on;
        gzip_vary       on;
        gzip_buffers    2 4k;
        gzip_http_version 1.1;
    server {
        # nginx監聽端口號,不能被其餘應用佔用a
        listen 80;

        # nginx綁定的域名
        server_name  localhost;

        # 公共靜態資源
        location / {
          index index.html;
          root /project/airport_pc/;
          autoindex on;
          # 是否啓用目錄索引
          # 開啓強緩存
          add_header    Cache-Control  max-age=360000;
         }
     }
}

複製代碼

注意:

海外服務器和國內服務器的區別主要在於國內服務器須要備案,主要訪問者是中國人。

備案完成後,若是須要更換服務器不須要從新備案,只須要把以前備案過的域名解析到新的服務器便可。

備案完成後,想要更換其餘域名解析到該服務器,沒法直接經過域名訪問到該服務器,須要從新備案。

結語

終於結束了!本篇文章主要是總結,網上資料存在矛盾以及重複,若是發現錯誤,歡迎留言指出!

若是對你有用,點個贊再走唄!

Nginx 進階可看 Nginx與前端開發Nginx 從入門到實踐,萬字詳解!

參考文檔:

  1. 阿里雲---入門概述
  2. 阿里雲---什麼是雲服務器ECS
  3. VPS,雲服務器(雲主機),虛擬主機有什麼異同?
  4. VPS 和虛擬主機的區別(需kx上網)
  5. CentOS 與 Ubuntu:哪一個更適合作服務器?
  6. 配置詳解
  7. Nginx 官網
  8. Linux 經常使用命令整理
  9. 「簡明性能優化」雙端開啓Gzip指南Nginx與前端開發
  10. Nginx與前端開發
相關文章
相關標籤/搜索