ubuntu和centOS服務器環(huán)境安裝的不同之處

本文基于工作需要,做的讀書筆記
因為公司用阿里云、亞馬遜云,然后自己有一個騰訊云,所以身為一個小前端,服務器的知識還是要一點點。因為項目需要,最近連著在不同的服務器上玩了一陣,那叫一個學習啊,總算把各種安裝搞會了。讓我們一起來看看吧。

前提條件:
你已經了解基本的Linux知識。

編碼環(huán)境:
系統(tǒng):OS X EI Capitan
版本:10.11.6

unbutuCentOS.png

ubuntu的環(huán)境安裝

服務器環(huán)境:
系統(tǒng):ubuntu
版本:14.04 (騰訊云)

在騰訊云服務器的控制臺頁面,拿到它的外網IP和生成下載SSH密鑰。比如:
外網IP為:119.29.152.34
SSH密鑰下載到本地文件路徑:/MRain/Tencent/Season (文件名為Season)

我們使用SSH方式登錄到服務器:(密碼登錄方式我沒有仔細看,沒找到)

$ sudo ssh -i /MRain/Tencent/Season ubuntu@119.29.152.34
Password: 輸入你的本機密碼

登錄成功!將會看到類似這樣的畫面:

ubuntu@VM-138-153-ubuntu:~$ 

接下來開始安裝環(huán)境。

1、安裝node

參考網站:nodeJs官網。安裝命令如下:

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ sudo apt-get install -y build-essential

注:apt-get是Ubuntu比較常用的獲取或安裝方式。

2、安裝nginx

(其實,如果你是跑一個nodejs,不裝nginx也是可以的,不是必須的。)
參考網站:ubuntu的Nginx的安裝參考
如果要運行一個nodejs的服務,那最好的選擇應該是nginx,而不是apache。使用apache貌似需要設置反向代理,這里因為我不是很清楚,所以跳過。等到我真正需要apache的時候,我再去認真了解一下。
安裝命令如下:

$ sudo apt-get update  //先更新服務器系統(tǒng)(建議)
$ sudo apt-get install nginx  
$ sudo /etc/init.d/nginx start  //測試啟動

安裝好了nginx后,需要知道如何配置啟動。
一般來說,安裝后的nginx的配置文件的路徑為/etc/nginx/sites-available/default,那直接用sudo權限去編輯它。命令如下:

$ sudo vi /etc/nginx/sites-available/default

打開這個文件,你大概可以看到如下代碼:

 server {
     listen 80;
     server_name example.com;
     location / {
         proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
     }
 }

那現在來改一下,記著根據你的實際端口應用,舉一反三,不要照抄照搬。
編輯的時候,需要切換為英文輸入,單擊i轉變?yōu)椴迦胱址?,編輯結束后使用:wq保存。
如果不熟悉Linux命令,可以谷歌一下。

 server {
     listen 80;
     server_name 你的域名;
     location / {
         proxy_pass 127.0.0.1:你的端口;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
     }
 }

配置好后,需要重啟nginx服務,使用命令:

$ sudo service nginx restart

實際上這里的工作就是映射,80端口指向了你的nodejs服務端口。如果你的域名已經設置好了,并指向此服務器,那么通過域名可以直接訪問你跑起來的nodejs服務了。兩種訪問方式都可以:

  • 域名方式訪問
  • 服務器公網IP:nodejs服務端口,比如說119.29.152.34:3000

不管你是否需不需要mysql、mongodb數據庫,下面擴展就來看看。

3、安裝mongodb

參考網站:
Install MongoDB Community Edition on Ubuntu
在Ubuntu 14.04 64bit上安裝MongoDB并測試

參照下面的命令,依次執(zhí)行:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
$ echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org  //不指定
$ sudo apt-get install -y mongodb-org=3.2.10 mongodb-org-server=3.2.10 mongodb-org-shell=3.2.10 mongodb-org-mongos=3.2.10 mongodb-org-tools=3.2.10
確認當前安裝的MongoDB版本  要執(zhí)行一遍
$ echo "mongodb-org hold" | sudo dpkg --set-selections
$ echo "mongodb-org-server hold" | sudo dpkg --set-selections
$ echo "mongodb-org-shell hold" | sudo dpkg --set-selections
$ echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
$ echo "mongodb-org-tools hold" | sudo dpkg --set-selections

那么,如果沒有遇到錯誤的話,應該是正常成功安裝了。
了解一下mongodb的使用吧。

$ sudo service mongod start  // 啟動

Verify that MongoDB has started successfully
Verify that the mongod process has started successfully by checking the contents of the log file at/var/log/mongodb/mongod.log for a line reading
[initandlisten] waiting for connections on port <port> 
where <port> is the port configured in /etc/mongod.conf, 27017 by default.

$ sudo service mongod stop  // 停止

$ sudo service mongod restart  // 重新啟動

$ sudo service mongod status  // 查看當前數據庫狀態(tài)

$ mongo  // 建立一個客戶端
// 以下幾個mongo操作命令,可能會告訴你一些mongodb的簡單操作。
> help 顯示幫助信息
> db  查看當前連接的數據庫
> show dbs 顯示所有數據庫列表
> use mydb 切換到mydb數據庫
> db 查看當前存在的數據庫,
> use mydb 要創(chuàng)建一個新的數據庫,使用下面的命令:
> 
> exit
> 或者直接按Ctrl+C中斷退出

4、安裝pm2

如果真的要在生產環(huán)境運行nodeJS,那就需要一個管理工具,比如forever,pm2。其中,pm2的安裝方法如下:

$ sudo npm install pm2 -g  // 注意:一定是在全局環(huán)境下安裝

看一下它的相關命令吧:

$ pm2 start hello.js  // 啟動

$ pm2 startup ubuntu  // 自啟動
// 執(zhí)行后,他會返回幾句命令,注意執(zhí)行最后那一行sudo那句
[PM2] You have to run this command as root
[PM2] Execute the following command :
[PM2] sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u sammy --hp /home/sammy"  // 跑一下這句(每個系統(tǒng)可能不一樣,注意)
$ sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u sammy --hp /home/sammy"

$ pm2 list  //  查看跑了哪些服務

$ pm2 stop example  // 關掉服務,這里的example可以是name,也可以是id

$ pm2 restart example  // 重啟服務

$ pm2 info example  // 查看信息

$ pm2 monit  // 監(jiān)視服務運行日志

最后一點,也是我們需要的知道的。
常常使用pm2運行生產環(huán)境的node服務,更多的時候是寫了一個配置文件,比如命名為process.json,并指定運行環(huán)境為production。然后我們只要跑起這個文件就可以了,配置都寫在里面。

$ pm2 start process.json --env production

來看看如何配置最簡單的process.json,代碼如下:

 {
   "apps" : [{
     "name"        : "AppName",   //你的APP的名稱
     "script"      : "./bin/www",   //跑起node服務的命令
     "watch"       : true,   //監(jiān)視
     "env": {
       "NODE_ENV": "development",
     },
     "env_production" : {
        "NODE_ENV": "production"
     },
     "instances"  : 4,    //生產環(huán)境的實例,是4個,或8個,或100個
     "exec_mode"  : "cluster"    //集群模式
   }]
 }

如果需要了解pm2配置文件的更多信息,請自行谷歌。

5、安裝git

只要跑一下命令:

$ sudo npm install git -g  // 注意在全局環(huán)境下

好了,每次要部署代碼,每次上傳服務器使用scp命令么?好慢的吧。那么,我們使用git吧,我們的代碼可以托管在github或者bitbucket,它們都是代碼托管服務商。

比如使用github,我們先把本地電腦上的項目代碼提交到github上,然后跑到服務器上,通過命令:

git clone https://github.com/YourGithubName/RepositoryName.git
// 需要輸入密碼github賬號密碼。

如此一來,輕松將代碼放到服務器上。每次如果更新代碼,只需要本地電腦使用git push,提交到github。再到服務器上,使用git pull下拉獲取最新就可以啦。更新代碼后,繼續(xù)重啟node服務喔。重啟命令前面說了。

好了,想要去試試么?部署一個自己的小站點、服務接口什么,玩玩看。

centOS的環(huán)境安裝

服務器環(huán)境:
系統(tǒng):centOS
版本:7 (亞馬遜云)

既然說的是亞馬遜云服務器,那么總需要先有個賬號吧,那先登錄到亞馬遜中國服務器。
登錄網址:https://www.amazonaws.cn/

注冊并登陸成功,將看到如下畫面。


亞馬遜aws.png

如何使用亞馬遜云呢?
先去EC2里面搭建一臺服務器,服務器的系統(tǒng),這里選CentOS,我們現在要研究這個。

進入EC2的控制面板,在默認頁面,可以看到當前創(chuàng)建的所有服務器實例。單擊某一個已創(chuàng)建的服務器實例,可以看到此服務器的一般信息,這里可以查看到外網IP。然后左側的菜單,往下看,有一項是“密鑰對”,那么單擊它進去,創(chuàng)建一個SSH密鑰,并下載到本地。
ps:這里就不截圖了,信息保密。比如:
外網IP為:54.223.74.164
SSH密鑰下載到本地文件路徑:/Mine/Project/mine.pem (ssh密鑰文件名為mine.pem)

我們使用SSH方式登錄到服務器:

$ sudo ssh -i ssh文件路徑 服務器名稱@服務器IP
// 方式一:服務器名稱全稱
$ sudo ssh -i /MRain/Project/fusion/fusiond.pem ec2-user@ec2-54-223-94-164.cn-north-1.compute.amazonaws.com.cn
// 方式二:服務器名稱+IP
$ sudo ssh -i /MRain/Project/fusion/fusiond.pem ec2-user@54.223.94.164
Password: 輸入你的本機密碼
// 遠程登錄成功!將會看到類似這樣的:
[ec2-user@ip-172-31-19-101 ~]$ 

正常來說,接下來就要安裝環(huán)境。但是,你可以試試安裝,如果說沒有權限,就可能需要使用root權限安裝。這應該是最麻煩的地方,我在這里搞了很久,不使用root權限安裝環(huán)境,基本上每個都沒有裝成功。好一段時間不知道怎么解決。你可以試試是不是也有這個問題,還是只會在亞馬遜云服務器的centOS上才會遇到。

1、如何獲取root賬號

1)仍然需要用前面的登錄方法,遠程連接到EC2服務器。
2)創(chuàng)建root密碼,輸入如下命令

$ sudo passwd root

3)然后會提示你輸入new password。那么你就設置一下密碼。這里需要輸入2次,后面那次是驗證是否一致。那這樣,密碼建立好了。
4)切換到root,輸入如下命令

$ su root

注意:如果你不需要使用root直接登陸服務器,那么你不需要執(zhí)行后面的這幾步。
你只需要普通SSH登錄后,需要安裝的話,使用su root切換過去。不安裝再切換回來,就可以了。
我是這樣的,沒有去設置使用root直接登陸。
如真需設置,你可以參考下面這幾步。
5)那學會了切換,如何使用root直接登陸服務器呢。去修改PasswordAuthentication字段,默認為no,把no改成yes。修改配置文件,輸入如下命令:

$ vim /etc/ssh/sshd_config

6)修改保存后,需要重新啟動下sshd。輸入如下命令

$ su ec2-user  //先切換回去
$ sudo /sbin/service sshd restart

7)然后再切換到root身份

$ su root

8)再為原來的”ec2-user”添加登錄密碼。輸入如下命令:

$ passwd ec2-user

9)同樣輸入兩次密碼。之后你可以通過root登錄服務啦。

好了好了?,F在可以真正開始安裝環(huán)境了。
不用root權限安裝,掉坑里,走很多彎路的。

警告:以下安裝均需要切換到root權限下安裝!?。?!

2、安裝node[root權限下]

參考網站:Installing Node.js via package manager
安裝命令如下:

$ curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
$ yum -y install nodejs

注:yum是centOS比較常用的安裝方式

3、安裝nginx[root權限下]

參考網站:
How To Set Up nginx Virtual Hosts (Server Blocks) on CentOS 6
How To Install Nginx on CentOS 7
安裝命令如下:

$ sudo yum install epel-release
$ sudo yum install nginx
// 安裝后測試啟動
$ sudo /etc/init.d/nginx start

安裝好了nginx后,我們需要知道如何配置啟動。
一般來說,安裝后的nginx的配置文件的路徑為/etc/nginx/...

這一塊的配置,和前面ubuntu的安裝配置,是不一樣的。

因為在centOS系統(tǒng)里,安裝后的nginx,是缺少2個文件夾的。
他們是sites-available和sites-enabled,你需要自己創(chuàng)建他們。
使用如下命令:

$ su root  //這一步你應該在安裝前已經切換,這里提示你一下,不需要執(zhí)行的
$ cd /etc/nginx
$ mkdir sites-available
$ mkdir sites-enabled

接著,我們需要復制文件夾conf.d的默認配置文件,到新建的2個文件夾。命令如下:

$ cp ./conf.d/virtual.conf ./sites-available/default.conf
$ cp ./conf.d/virtual.conf ./sites-enabled/default.conf

緊接著,我們要去修改一下配置文件,命令如下:

$ sudo vi /etc/nginx/nginx.conf
// 在顯示的文件內容中,找到下面這句
  ... 
  include /etc/nginx/conf.d/*.conf;
  ...

在它的后面插入一句,目的是為了將新的配置文件引入,是它變?yōu)椴⒈4妫?/p>

  ... 
  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
  ...

接著,我們需要去修改那2個文件的default.conf,接近尾聲了。大概編輯成下面這個樣子,具體你可能需要查閱其它文獻。我也需要更深入學習nginx的配置。所以,這里如果給你挖了個坑,望見諒。我是如下這么設置的。

// 文件 /sites-available/default.conf
server {
    listen 80;
    server_name 54.223.74.164;
    location / {
#        root   html;
#        index  index.html index.htm;
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
// 文件 /sites-enabled/default.conf
server {
    listen 80;
    server_name 54.223.74.164;
    location / {
#        root   html;
#        index  index.html index.htm;
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

最后重啟服務器,命令如下;

$ sudo /etc/init.d/nginx restart

實際上這里的工作就是映射,80端口指向了你的nodejs服務端口。如果你的域名已經設置好了,并指向此服務器,那么通過域名可以直接訪問你跑起來的nodejs服務了。兩種訪問方式都可以:

  • 域名方式訪問
  • 服務器公網IP:nodejs服務端口,比如說119.29.152.34:3000

不管你是否需不需要mysql、mongodb數據庫,下面擴展就來看看。

4、安裝mysql[root權限下]

參考網站:Install a MySQL server on CentOS

$ sudo yum install mysql-server 
$ sudo /sbin/service mysqld start
$ sudo /usr/bin/mysql_secure_installation
// 一路回車enter
//To apply some reasonable security to your new MySQL server answer yes to all the prompts.

簡單的mysql使用命令,可以谷歌一下。

5、安裝pm2[root權限下]

安裝很簡單,命令如下:

$ sudo npm install pm2 -g

具體pm2的使用方法,請去閱讀文章前面內容。

6、安裝git[root權限下]

注意,下面這個命令是不行的,錯誤的,不要執(zhí)行。
$ sudo npm install git -g

正確的安裝方式,是下面這個命令:

$ sudo yum install git
$ git --version

具體git的使用方法,請去閱讀文章前面內容。

后記

如果你不想使用pm2,想去用forever.js的話,安裝和使用也很簡單。

// 安裝
$ sudo npm install forever -g
// 啟動一個服務
$ sudo forever restart index.js

到這里,就先結束了。


學習是一條漫漫長路,每天不求一大步,進步一點點就是好的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,587評論 9 468
  • Page 1:nginx 服務器安裝及配置文件詳解 CentOS 6.2 x86_64 安裝 nginx 1.1 ...
    xiaojianxu閱讀 8,664評論 1 41
  • 乍暖還寒又是一年 三月的風冷到心間兒 料峭春寒心中無暖 欲與淚流不為贊嘆 朗朗讀聲依舊耳畔 經典句句渲染綠水青山 ...
    繪事后素2512閱讀 426評論 0 3
  • 1.昨天早晨發(fā)生的事情讓我終生難忘,一次敬畏之心的警告。 昨天雨一直下,下的挺大的。我在高速上開著車,時速大概10...
    天涯Michael閱讀 582評論 0 2

友情鏈接更多精彩內容