第一次架設伺服器實記

2020-08-14 19:09:37

第一次架設伺服器實記

[0.1.0] - 2020/8/8 - 伺服器購買

前段時間,朋友托我替他搭建一個小程式,要求不高,只是用來展示一些簡單的靜態文字且開發時間比較充裕。我沒有接觸過小程式,但出於好心和本着藉此機會學習學習的小程式開發的目的。我答應了下來。程式語言都是有共通性的。所以,經過幾天的摸爬滾打後,很快就漸漸上手小程式開發了。之後,我開始緊趕慢趕的開發着。小程式也有了雛形。

前幾天,朋友決定上線一個出版的小程式。我心想着:「可以呀!這小程式大致框架頁出來了,管理後臺也搭建完成了。上線沒問題的!很OK!」。於是乎!今天,我開始了運維的工作!

產品上生產第一步:部署伺服器

因爲大學的時候我是在阿裡雲買過伺服器的。所以伺服器我選擇的是阿裡雲的伺服器。當我開啓阿裡雲的官網後,好傢夥,全變樣了。印象中的大學時,進的阿裡雲官網是挺有科技感的呀!主色調是藍黑呀!怎麼現在全是橙白了。這還好!當我進到伺服器購買頁面後,更暈了。各種各樣的雲服務購買。邊查邊看,搗鼓一陣子後,我突然看到 ECS 介紹有這麼一句話 「從進階型到入門性的雲伺服器」。入門?這不就我需要的嗎?於是我果斷進入 ECS 的購買頁面。然後看着琳琅滿目的設定選擇方案,經過一番利弊的權衡與掙扎(阿裡雲不是什麼好貨,說什麼可以免費體驗一個月半年,進去之後價格高嚇人)後,我選擇最合理的設定(也就是最便宜的設定,哈哈哈!)。

很快,伺服器就開好了。並且成功的通過阿裡雲官網提供的「遠端連線」成功進到伺服器。很方面呀!很簡單嘛!

產品上生產第二步:設定伺服器環境

之前一段時間,因爲專案的要求,初略的搗鼓過 Ubuntu 。所以,伺服器購買時系統選擇我選擇的是 Ubuntu 。所以伺服器的環境設定還是有些瞭解而且沒太大阻礙的。這裏必須要感謝那段時間使用 ubuntu 系統的各種坑。沒有那段時間的踩坑,今天這真未必能架設的起伺服器來。

伺服器架設兩個要點:

  1. 專案執行環境的搭建
  2. 架設 Web 伺服器

這兩點是使用者能否成功存取網址的關鍵。

專案執行環境的搭建

第一點就不用多說了,專案想要跑起來,執行環境是必不可少的。這裏主要是對專案 server 端架設執行環境。爲什麼前端不用搭建執行環境呢?因爲部署到生產環境的前端程式碼都是靜態檔案。即使是 vue、angula、react 搭建的專案,上生產環境是都通過webpage 編譯打包成壓縮的靜態檔案。所以,前端程式碼不用搭建執行環境。至於 server 端的執行環境的搭建就需要根據專案所採用的技術來搭建了。我的專案使用的是 nodeJS。所以,環境搭建非常簡單,只要安裝 node 、npm 、以及 mysql 就行了。

關於如何在指令性的操作系統中安裝軟體,沒接觸過的同學可能感覺很難。其實,說難也難,說簡單也簡單。爲什麼這麼說呢?因爲使用正常的安裝操作流程確實挺複雜。例如Linux安裝Node.js:

  1. 下載Node.js

    wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz    
    
  2. 解壓

    tar xf  node-v10.9.0-linux-x64.tar.xz
    
  3. 進入解壓目錄

    cd node-v10.9.0-linux-x64/ 
    
  4. 執行node命令 檢視版本

    ./bin/node -v
    

接着進入解壓檔案的 bin 目錄底下,使用 ln 命令來設定軟連線:

ln -s /usr/software/nodejs/bin/npm   /usr/local/bin/ 
ln -s /usr/software/nodejs/bin/node   /usr/local/bin/

看上去確實很複雜。但是!但是 Ubuntu 它有 APT 呀!

Debian 作爲 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系統的母板,其具有強健的「包管理」系統,它的每個元件和應用程式都內建在系統中安裝的軟體包中。Debian 使用一套名爲 Advanced Packaging Tool(APT)的工具來管理這種包系統,不過請不要把它與 apt 命令混淆,它們之間是其實不是同一個東西。

在基於 Debian 的 Linux 發行版中,有各種工具可以與 APT 進行互動,以方便使用者安裝、刪除和管理的軟體包。apt-get 便是其中一款廣受歡迎的命令列工具,另外一款較爲流行的是 Aptitude 這一命令列與 GUI 兼顧的小工具。

作者:hi_lan
鏈接:https://www.jianshu.com/p/048d9240883e
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

所以,我們可以這樣:

sudo apt-get install nodejs
sudo apt-get install npm

只需要逐一執行上面兩條語句就成功安裝 Node.js了。比 window 安裝軟體還簡單。有木有!

不過呢!apt 是個好東西,但是有時候給你挖的坑確實也是非常的大的!

MySQL 安裝

MySQL 安裝有一點需要注意,所以這裏特意說明一下:

安裝

安裝還是很簡單的,直接執行下面 下麪程式碼:

sudo apt-get install mysql-server 

在安裝的過程有些版本的 Ubuntu 會提示你設定 root 密碼。這時候就需要你輸入一個密碼了。這個密碼你要記住。登陸 mysql 的時候需要用到。

但是呢!有些版本(如:Ubuntu18.04)安裝過程是沒有這個過程的,它會預設生成一個登錄名和密碼。預設的登錄名和登錄密碼是儲存在/etc/mysql/debian.cnf下的,在命令列輸入:

sudo vim /etc/mysql/debian.cnf 

檢視。

安裝完成後,我們也可以直接在命令列輸入:

mysql

就可以直接進入mysql了。

但這顯然不是我們想要的。所以我們需要設定root 賬戶密碼:

  • 第一步:設定 root密碼

    update user set authentication_string=password(' 你的密碼 ') where user='root' and host='localhost';
    
  • 第二步

    update user set plugin="mysql_native_password";
    
  • 第三步

    flush privileges;
    
  • 第四步: 退出MySQL

    eixt;
    
  • 最後: 重新啓動mysql

    sudo service mysql restart
    

架設 Web 伺服器

這裏需要明白的一點是,Web 伺服器是一種程式軟體,跟我們前面所說的購買的伺服器並不是一個東西。前面說是的伺服器實質上是台主機。

Web 伺服器的定義

Web伺服器一般指網站伺服器,是指駐留於因特網上某種型別計算機的程式,可以處理瀏覽器等Web用戶端的請求並返回相應響應,也可以放置網站檔案,讓全世界瀏覽;可以放置數據檔案,讓全世界下載。目前最主流的三個Web伺服器是Apache、 Nginx 、IIS。

----------------------------摘自《百度百科——WEB伺服器

通俗的講,Web 伺服器是用來處理和網頁靜態資源(如:HTML、JS、CSS、圖片等等)相關的 http 請求的。

Web 伺服器與應用伺服器的區別

提到 Web 伺服器,那我們就不得不說應用伺服器了。

應用伺服器是指通過各種協定把商業邏輯曝露給用戶端的程式。它提供了存取商業邏輯的途徑以供用戶端應用程式使用。

應用伺服器爲Web應用程式提供一種簡單的和可管理的對系統資源的存取機制 機製。它也提供低階的服務,如HTTP協定的實現和數據庫連線管理。

常用的應用伺服器有:tomcat、weblogic 、jetty 等等。

這樣看來,它們兩者的區別就是

  • Web 伺服器負責處理網頁的靜態資源 HTTP 請求,也就是前端專案編譯後的檔案
  • 應用伺服器負責的是後臺API的 HTTP 請求。
爲什麼需要使用 Web 伺服器?

關於這點其實也很好理解。

我們都知道,瀏覽器載入網頁及相關的資源都是通過向伺服器發送 HTTP 請求來獲取(這裏的伺服器並不是 Web 伺服器,而是指存放網站資源的主機)。這個過程大致如下:

  • 瀏覽器(用戶端):發送 HTTP request:」我要獲取 CSDN LOGO ,路徑URL是這個https://s3.ap-northeast-1.wasabisys.com/img.tw511.com/202008/csdn-logok24ixe2tbay.png

  • 伺服器:接收到用戶端發來的 HTTP request後,他會解析 HTTP request 的 URL,然後根據解析出來的 URL 讀取 URL指定的資源。最後將 CSDN LOGO 附在 HTTP response 中返回給用戶端。

上面就是一次 HTTP 請求的過程了。前面我們說到 Web 伺服器負責處理網頁的靜態資源 HTTP 請求。那麼這次請求裡 Web 伺服器也肯定參與了工作。關於這一點,需要一些網路工程的基礎知識。

首先明確一點,如果我們想要獲取某個伺服器裏面的資源,那第一步要做的肯定是先存取那個伺服器。那如何存取伺服器呢? IP 地址(域名)可以實現(具體原理可檢視:《Web 優化——瀏覽器存取某個網址背後所做的工作》)。上面 HTTP request URL 中的csdnimg.cn就是域名了。

那存取到伺服器後呢?

那肯定是根據 URL 域名後面的路徑來讀取資源啦!

那這部分是怎麼實現的呢?Web 伺服器做的就是這個工作了。

這就好比,伺服器是個酒館,客人根據 IP 地址來關顧你的店,你肯定要有個接待員來接待顧客啦。這個接待員就是 Web 伺服器了。

部署 Web 伺服器

前面說了一大堆,其實 Web 伺服器的部署並不難。

  • 首先,選擇我們需要安裝的 Web 伺服器。前面說到常用的 Web 伺服器有三種:apache、nginx、IIS( window 專用)。我選擇的是Nginx:

    安裝 Nginx 也很簡單,用 apt 安裝一步到位。

    sudo apt-get install nginx
    

    不過呢!apt 安裝確實簡單輕鬆,但是如果你需要安裝擴充套件模組的化。你就悲催了!

    所以,建議你採用安裝包安裝。如何安裝,我這裏就不說了。具體參考:《ubuntu安裝nginx

  • 接着就是,開啓Nginx 服務了

    service nginx start
    

    這時你在瀏覽器中輸入伺服器的 IP 地址就可以看到 Nginx 的歡迎頁。自此安裝成功。

  • 最後,將前端打包好的程式碼放到Nginx 的 www 目錄下就可以了。

自此,整個網站就可以正常範圍了。只是隻能使用IP地址存取。但是沒關係呀!能有就行了。

第一次部署伺服器圓滿成功!哈哈哈!!

真的嗎?

未完待續……

參考文件

  1. 百度百科——WEB伺服器
  2. 百度百科——應用伺服器
  3. WEB伺服器、應用程式伺服器、HTTP伺服器區別