国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

阿里云ECS服務(wù)器部署Node.js項(xiàng)目全過程詳解

XboxYan / 3439人閱讀

摘要:本文詳細(xì)介紹如何部署項(xiàng)目到阿里云上,以及本人在部署過程中所遇到的問題坑點(diǎn)和解決辦法,可以說是全網(wǎng)最全最詳細(xì)的教程了。同時(shí)講解了如何申請阿里云免費(fèi)證書,以及一臺(tái)服務(wù)器配置多網(wǎng)站的配置方法等。優(yōu)惠券阿里云產(chǎn)品通用代金券最高元。

本文詳細(xì)介紹如何部署NodeJS項(xiàng)目到阿里云ECS上,以及本人在部署過程中所遇到的問題、坑點(diǎn)和解決辦法,可以說是全網(wǎng)最全最詳細(xì)的教程了。同時(shí)講解了如何申請阿里云免費(fèi)SSL證書,以及一臺(tái)ECS服務(wù)器配置多網(wǎng)站的Nginx配置方法等。

原文鏈接:http://www.kovli.com/2017/09/...

作者:Kovli

1. 云服務(wù)器選擇

阿里云ECS是阿里巴巴旗下,目前國內(nèi)最成熟穩(wěn)定的云服務(wù)器提供商

本文基于阿里云ECS云服務(wù)器講解,目前有個(gè)人版,企業(yè)版,學(xué)生版可以選擇。

個(gè)人版 2折優(yōu)惠活動(dòng),一年293元起,平均下來一個(gè)月20多即可擁有屬于自己的服務(wù)器了。

學(xué)生版 一個(gè)月9.5,24歲以下自動(dòng)獲得學(xué)生身份,學(xué)生推薦這個(gè)服務(wù)器。

企業(yè)版 性能強(qiáng)大,有2-5折的活動(dòng)。

優(yōu)惠券 阿里云產(chǎn)品通用代金券最高1000元。

這里以個(gè)人版 為例,流程都一樣的。

選購好云服務(wù)器,初學(xué)者1核1G就足夠了,也就是默認(rèn)的第一個(gè)入門級(jí)配置。

操作系統(tǒng)選擇CentOS系統(tǒng)

點(diǎn)擊立即購買按鈕,進(jìn)入確認(rèn)訂單頁面,這里選擇自定義密碼,設(shè)置ssh登錄密碼,后面要用,請牢記此密碼

購買好以后,進(jìn)入控制臺(tái),左側(cè)功能欄選擇云服務(wù)器ECS

點(diǎn)擊箭頭所指位置,即可獲取服務(wù)器的公網(wǎng)地址,如圖


記住公網(wǎng)IP,下一步要用到。

2. 登陸服務(wù)器

打開 Terminal,

輸入 ssh root@公網(wǎng)IP

輸入之前自己設(shè)的服務(wù)器登錄密碼(如果忘了,可以去上圖右側(cè)的管理-更多-重置密碼)

即可登陸服務(wù)器。

首次登陸可能會(huì)詢問公鑰,yes 即可。

關(guān)于 ssh 登陸,想要詳細(xì)了解的可以看阮一峰寫的這篇ssh原理與應(yīng)用

上述操作是使用 root 用戶身份登陸,會(huì)直接進(jìn)入到下圖 紅色箭頭標(biāo)出的 root 目錄下。

cd .. 跳轉(zhuǎn)到上一層, 再 ls -a ,就可以看到類似下圖的目錄結(jié)構(gòu)了。


圖片引用自《鳥哥的Linux》

3. 安裝Nginx

1. 在配置 nginx 時(shí),可能會(huì)依賴于 PCRE 包和 zlib 包,先進(jìn)行安裝:

cd /usr/local 切換目錄

cd /usr/local
yum -y install pcre pcre-devel
yum install -y zlib-devel

2. 下載 nginx,這里nginx版本號(hào)可以根據(jù)需要選擇,我選擇1.13.3是當(dāng)時(shí)最新的版本了,下面的node版本、mongodb版本都可以根據(jù)自己的需要選擇

nginx官網(wǎng)版本列表

cd /usr/local/src 
wget http://nginx.org/download/nginx-1.13.3.tar.gz

3. 解壓縮

tar -xvzf nginx-1.13.3.tar.gz

4. 配置nginx

下載解壓openssl

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz

tar -xvzf openssl-1.0.2l.tar.gz 

cd 進(jìn)入nginx解壓包里,執(zhí)行之前安裝的pcre-devel與openssl-devel解決依賴問題

cd nginx-1.13.3
yum -y install pcre-devel openssl openssl-devel

再執(zhí)行配置腳本來進(jìn)行編譯預(yù)處理

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.0.2l

成功后顯示如下信息,

Configuration summary
  + using system PCRE library
  + using OpenSSL library: /usr/local/src/openssl-1.0.2l
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx"
  nginx configuration file: "/usr/local/nginx/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

make

make && make install

5. 使用 openssl 生成證書(以下介紹的是自己生成的供學(xué)習(xí)用,正常面向市場的產(chǎn)品請用認(rèn)證的)

openssl req -new -x509 -nodes -out server.crt -keyout server.key

移動(dòng)證書到nginx文件夾

mv server.crt /usr/local/nginx
mv server.key /usr/local/nginx

認(rèn)證的SSL證書,申請阿里云免費(fèi)ssl證書:

如何申請免費(fèi)SSL證書 - 阿里云云盾證書

操作技巧:想看到免費(fèi)的證書,品牌選擇Symantec,證書類型選擇免費(fèi)型DV SSL

6. 修改 nginx 配置文件:

vi /usr/local/nginx/nginx.conf

修改如下

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    # 關(guān)閉錯(cuò)誤頁面的nginx版本數(shù)字,提高安全性
    server_tokens off;

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  "$remote_addr - $remote_user [$time_local] "$request" "
    #                  "$status $body_bytes_sent "$http_referer" "
    #                  ""$http_user_agent" "$http_x_forwarded_for"";

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include /usr/local/nginx/sites-enabled-server/*;


}

新建文件夾用于存放多網(wǎng)站的nginx配置文件

cd /usr/local/nginx/
mkdir sites-enabled-server

sites-enabled-server里面新增若干文件,以便這個(gè)ECS可以給多網(wǎng)站使用

vim default

server {
        listen 80;
        server_name _;

        return 404;
}

server {
        listen       80;
        server_name  你的域名.com www.你的域名.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://127.0.0.1:nodejs配置的端口號(hào);
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache"s document root
        # concurs with nginx"s one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

vim default-ssl

server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      server.crt;
        ssl_certificate_key  server.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
             proxy_pass http://127.0.0.1:nodejs配置的端口號(hào);
        }
    }
~       

繼續(xù)新增網(wǎng)站,例如,vim mywebsite.cn

server {
        listen       80;
        server_name  mywebsite.cn www.mywebsite.cn;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://127.0.0.1:nodejs配置的mywebsite的端口號(hào);
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache"s document root
        # concurs with nginx"s one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

7. 啟動(dòng)nginx

/usr/local/nginx/sbin/nginx
4. 安裝 node

node -- 編譯后二進(jìn)制文件應(yīng)在/usr/local/bin/node 下

mongodb -- 安裝在/usr/local/mongodb 下

下面就一步一步來

1. 首先升級(jí)CentOS
yum -y update

2. 升級(jí)后,跳轉(zhuǎn)到 /usr/local/src , 這個(gè)文件夾通常用來存放軟件源代碼

cd /usr/local/src

3. 下載 nodejs 代碼,也可以使用scp命令直接上傳,因?yàn)橄螺d實(shí)在太慢了。

wget http://nodejs.org/dist/node-latest.tar.gz(下載最新)
wget http://nodejs.org/dist/v7.10.0/node-v7.10.0.tar.gz(推薦,穩(wěn)定版本)

4. 解壓
tar -xzvf node-v0.12.5.tar.gz

5. 進(jìn)入解壓后的文件夾
cd node-v0.12.5

6. 執(zhí)行配置腳本來進(jìn)行編譯預(yù)處理
./configure

7. 安裝v8可能有警告, //需要安裝gcc

8. sudo yum install gcc-c++ //安裝gcc

9. 編譯源代碼及安裝

當(dāng)編譯完成后,需要使之在系統(tǒng)范圍內(nèi)可用, 編譯后的二進(jìn)制文件將被放置到系統(tǒng)路徑,默認(rèn)情況下,Node二進(jìn)制文件應(yīng)該放在/user/local/bin/node文件夾下

make && make install

10. 安裝pm2,建議 global 安裝
npm install pm2 -g

11. 建立超級(jí)鏈接, 不然 sudo node 時(shí)會(huì)報(bào) "command not found"

sudo ln -s /usr/local/bin/node /usr/bin/node

sudo ln -s /usr/local/lib/node /usr/lib/node

sudo ln -s /usr/local/bin/npm /usr/bin/npm

sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

sudo ln -s /usr/local/bin/pm2 /usr/bin/pm2

Nodejs到這里就基本安裝完成了。

5. 安裝mongodb

軟件安裝位置:/usr/local/mongodb

數(shù)據(jù)存放位置:/var/mongodb/data

日志存放位置:/var/mongodb/logs

1. 首先下載安裝包

MongoDB下載中心

cd /usr/local
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.6.tgz

2. 解壓安裝包,重命名文件夾為mongodb

tar zxvf mongodb-linux-x86_64-2.6.0.tgz
mv mongodb-linux-x86_64-2.6.0 mongodb

3. 創(chuàng)建數(shù)據(jù)和日志存放目錄

mkdir /var/mongodb
mkdir /var/mongodb/data
mkdir /var/mongodb/logs

4. 打開rc.local文件,添加CentOS開機(jī)啟動(dòng)項(xiàng):

vim /etc/rc.d/rc.local

5. 將mongodb啟動(dòng)命令追加到本文件中,讓mongodb開機(jī)自啟動(dòng):

/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log --logappend --auth --port 27017 --fork

6. mongo權(quán)限設(shè)置

sudo vi /etc/mongod.conf

較新版本的增加安全校驗(yàn)的方法是配置文件最后面加上(網(wǎng)上很多舊版寫法都是無效的)

security: authorization: enabled

如下所示:

systemLog:
 destination: file
 path: /var/mongodb/logs/log.log
 logAppend: true
storage:
 dbPath: /var/mongodb/data
net:
 bindIp: 127.0.0.1
security:
 authorization: enabled

然后重啟mongodb即可,這里說明下,初學(xué)也可以不設(shè)這個(gè)選項(xiàng),這樣操作數(shù)據(jù)庫就不需要用戶名密碼了,從安全的角度看還是設(shè)了比較好,后面都是以設(shè)了安全校驗(yàn)來講解。

7. 關(guān)閉 vim 后,直接手動(dòng)啟動(dòng)mongodb

/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log --logappend --auth --port 27017 --fork

8. 啟動(dòng)mongo shell

cd /usr/local/mongodb/bin/
./mongo

9. 在 mongo shell 中創(chuàng)建超級(jí)管理員以及相關(guān)數(shù)據(jù)庫到管理員及數(shù)據(jù)庫

use admin //admin database
db.createUser({
 user: "myAdmin",
 pwd: "******",
 roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
 }
 )

10. 使用特權(quán)進(jìn)入

./mongo -u "mydmin" -p "******" --authenticationDatabase "admin"

11. 創(chuàng)建新數(shù)據(jù)庫,并設(shè)置管理員

> use mywebsite
switched to db mywebsite
> db.createUser(
... {
... user: "mywebsiteAdmin",
... pwd: "******",
... roles: [ { role: "readWrite", db: "mywebsite" }]
... }
... )
> use secondwebsite
switched to db secondwebsite
> db.createUser(
... {
... user: "secondwebsiteAdmin",
... pwd: "******",
... roles: [ { role: "readWrite", db: "secondwebsite" }]
... }
... )

以后進(jìn)入其中的數(shù)據(jù)庫需要權(quán)限,如果用超級(jí)管理員則不需要

db.auth("mywebsiteAdmin", "******")

12. mongodb數(shù)據(jù)遷移(用于從指定地址數(shù)據(jù)庫遷移到云服務(wù)器上)

//存放到某個(gè)目錄
./mongodump -h 127.0.0.1:27017 -d mywebsite -o /home/mywebsite -u "mywebsiteAdmin" -p "******"

//取出
./mongorestore  -h 127.0.0.1:27017 -d mywebsite /home/mywebsite/mywebsite -u "mywebsiteAdmin" -p "******"

13. mongodb連接需要安全校驗(yàn)的配置
以app.js為例,

設(shè)置數(shù)據(jù)庫連接
vim app.js

數(shù)據(jù)庫連接類似下面的格式,由于數(shù)據(jù)庫安裝在同一服務(wù)器,因此 host 為127.0.0.1:

var dbUrl = "mongodb://用戶名:登陸密碼@127.0.0.1/databaseFoo";
mongoose.connect(dbUrl)

例如我的app.js里的這一段代碼

// 配置數(shù)據(jù)庫
mongoose.Promise = global.Promise;
let mongoConnectUrl = "mongodb://" + config.database.USERNAME + ":" + config.database.PASSWORD + "@" + config.database.HOST;
mongoose.connect(mongoConnectUrl);

到這里 mongodb 基本已經(jīng)安裝設(shè)置完成了。

6. 上傳NodeJS代碼到服務(wù)器上

把nodejs的程序放在 /home

cd /home

我使用碼云管理代碼。它的私有庫是免費(fèi)的。基本操作和 github 一樣。

1. 注意公鑰的生成與添加

ssh-keygen -t rsa -C "mywebsite@gmail.com"

查看與復(fù)制公鑰

cat ~/.ssh/id_rsa.pub

2. git安裝

yum install git

3. 復(fù)制代碼:
git clone https://git.oschina.net/xxxxxxx/nodeapp.git //你的repo地址

4. 進(jìn)入 nodeapp 文件夾
cd nodeapp
(若后續(xù)代碼變更,提交到 git repo 后直接git pull即可部署代碼)

5. 安裝nodeapp的所有依賴

npm install

注意,使用淘寶鏡像避免未知問題

npm --registry https://registry.npm.taobao.org install
7. 啟動(dòng)Node服務(wù)

這里根據(jù)你nodejs所使用的框架不同而不同,

例如koa2可以在package.jsonscripts里設(shè)置,參考阮一峰的npm scripts 使用指南

thinkjs或者egg都有自己的啟動(dòng)方式,就不一一敘述了

這里要注意的是,如果直接 npm startnode app.js 啟動(dòng),則一旦退出 ssh 遠(yuǎn)程登陸,服務(wù)就會(huì)停止運(yùn)行。

使用pm2就可以解決這個(gè)問題,如果跟著教程走,你已經(jīng)全局安裝了pm2了,可以直接使用

8. 其他說明

這篇文章是匯聚了網(wǎng)上諸多教程及本人從零開始部署遇到的各種問題和坑點(diǎn)的解決方案所形成的一篇詳細(xì)教程,由于涉及點(diǎn)比較多,加上版本更新迭代,如果在部署過程中遇到問題,可以在下面評(píng)論提問(需要登錄Github賬號(hào)才可以評(píng)論),或者給我發(fā)郵件(admin@kovli.com)。

本文所述的本地操作系統(tǒng):MacOS系統(tǒng),阿里云ECS操作系統(tǒng):CentOS 7.3,本地如果是Windows環(huán)境終端操作可能有所不同。

Nginx的一些常用操作方法:

/usr/local/nginx/sbin/nginx # 啟動(dòng)
/usr/local/nginx/sbin/nginx -t #檢查配置文件編寫是否正確
/usr/local/nginx/sbin/nginx -s reload #Nginx平滑重啟 (一般用這個(gè)就可以了)
/usr/local/nginx/nginx.conf #配置文件。

文中已引用了部分參考文章,同時(shí)感謝下面的參考文章的作者:
http://www.jianshu.com/p/0496...
http://itbilu.com/other/relat...
https://segmentfault.com/a/11...
http://borninsummer.com/2015/...
https://bbs.aliyun.com/read/1...
https://segmentfault.com/q/10...


版權(quán)聲明:

轉(zhuǎn)載時(shí)請注明作者Kovli以及本文地址:
http://www.kovli.com/2017/09/...


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19466.html

相關(guān)文章

  • 阿里 ECS 部署:nginx+MySQL+Laravel+PHP7+Redis+Node.js

    摘要:修改增加注意中的應(yīng)為你的項(xiàng)目名稱,應(yīng)為你的服務(wù)器公網(wǎng)。配置完之后重啟,使上面的配置項(xiàng)生效。安裝添加下面鏈接中的源,然后安裝番外安裝如果已經(jīng)下了想升級(jí)成的朋友可執(zhí)行以下代碼把之前的掉安裝現(xiàn)在的 版本:ubuntu 14.04(64位) 1.安裝 Nginx(version:1.9) 1、首先添加nginx_signing.key wget http://nginx.org/keys/ng...

    dingding199389 評(píng)論0 收藏0
  • 阿里 ECS 部署:nginx+MySQL+Laravel+PHP7+Redis+Node.js

    摘要:修改增加注意中的應(yīng)為你的項(xiàng)目名稱,應(yīng)為你的服務(wù)器公網(wǎng)。配置完之后重啟,使上面的配置項(xiàng)生效。安裝添加下面鏈接中的源,然后安裝番外安裝如果已經(jīng)下了想升級(jí)成的朋友可執(zhí)行以下代碼把之前的掉安裝現(xiàn)在的 版本:ubuntu 14.04(64位) 1.安裝 Nginx(version:1.9) 1、首先添加nginx_signing.key wget http://nginx.org/keys/ng...

    joyvw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

XboxYan

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<