阿里云服務(wù)器部署 nuxt 項(xiàng)目

1. 遠(yuǎn)程 SSH 連接 server

基于 server CentOS 8.0 64位,本機(jī) MacOS,推薦使用 FinalShell 或者 CyberDuck 連接。

連接成功,會(huì)有以上的信息。

然后需要安裝的環(huán)境如下:

  • nginx

  • node

  • npm

  • yarn(可選項(xiàng),如使用 npm 可以不用安裝 yarn)安裝參考

  • pm2

2. nginx

2.1 安裝依賴環(huán)境

依次執(zhí)行:

yum -y install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel

2.2 添加用戶、組、創(chuàng)建目錄

groupadd nginx
useradd -g nginx -d /home/nginx nginx
passwd nginx
mkdir /var/run/nginx
mkdir /var/temp 
mkdir /var/temp/nginx

2.3 下載并解壓nginx

版本號(hào)可以按喜好替換

cd /opt
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz 

2.4 進(jìn)入解壓文件夾并指定安裝路徑

cd nginx-1.16.0
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi
make && make install

2.5 設(shè)置用戶權(quán)限及開機(jī)啟動(dòng)

  ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
  cd /etc/rc.d
  sed -i '13a /usr/local/nginx/sbin/nginx' /etc/rc.d/rc.local 
  chmod u+x rc.local

瀏覽器打開 server ip:


如果不是以上頁(yè)面,而是 CentOS 頁(yè)面,說明阿里云的服務(wù)在開啟,這時(shí)需要執(zhí)行 lsof命令查找進(jìn)程并一一 kill,然后執(zhí)行 nginx 命令再刷新頁(yè)面。頁(yè)面啟動(dòng)正常就可以進(jìn)行下一步了。

3. node

3.1 下載Node.js安裝包

wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz

3.2 解壓安裝包

tar xvf node-v6.9.5-linux-x64.tar.xz

3.3 創(chuàng)建軟鏈接

ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm

3.4 查看版本

node -v
npm -v

3.5 測(cè)試

新建項(xiàng)目文件 example.js

cd ~
touch example.js

修改文件,使用 FinalShell 直接打開 example.js 編輯添加如下代碼:

const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => { 
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World\n');
}); 

server.listen(port, hostname, () => { 
    console.log(`Server running at http://${hostname}:${port}/`);
});

運(yùn)行:

node ~/example.js &

登錄ECS管理控制臺(tái),并在ECS實(shí)例安全組的入方向添加規(guī)則, 放行項(xiàng)目中配置的端口(本示例中端口號(hào)為3000)。

訪問 http://<ECS實(shí)例公網(wǎng)IP地址>:3000

更多細(xì)節(jié)請(qǐng)移步 部署Node.js環(huán)境

4. pm2

npm install -g pm2 這里安裝之后需要指定軟連接

ln -s /your-server-node_path/bin/pm2 /usr/local/bin/pm2

項(xiàng)目 yarn build 打包,將 .nuxt static package.json nuxt.config.js 等文件/文件夾 copy 至服務(wù)器的文件夾 /usr/local/nginx/my-nuxt(此處的項(xiàng)目名稱要和下面啟動(dòng)項(xiàng)目名稱對(duì)應(yīng)),然后在該目錄下執(zhí)行

yarn install -production
  • 進(jìn)程守衛(wèi)

package.json 文件中需要添加以下配置:

 "scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "PORT=3000 nuxt start",  // 這里添加 PORT=3000
    "generate": "nuxt generate",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
    "test": "jest"
  },

修改 /usr/local/nginx/conf/nginx.conf 文件:

# 添加這段配置
upstream nodenuxt {
        server ip_address:3000;
        keepalive 64;
}

# server 配置
server {
        listen 80;
        location / {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;  
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_cache_bypass $http_upgrade;
            proxy_pass http://nodenuxt; #反向代理
        }
    }
# yarn
pm2 start yarn --name "my-nuxt" -- start

# npm
pm2 start npm --name "my-nuxt" -- run start

如果訪問不到,可以使用 pm2 logs 命令查看下然后按照提示解決。

5. 綁定域名 & 備案

首先要實(shí)名認(rèn)證,然后等待 2-3 個(gè)工作日后填寫備案信息,接下來添加域名解析:

  • 阿里云注冊(cè)域名->到域名管理后臺(tái)點(diǎn)擊解析->添加記錄到阿里云公網(wǎng)ip
  • 阿里云服務(wù)器后臺(tái)點(diǎn)擊實(shí)例->點(diǎn)擊更多找到網(wǎng)絡(luò)和安全組->點(diǎn)擊添加安全組配置->添加規(guī)則,端口號(hào)對(duì)應(yīng)項(xiàng)目設(shè)置端口,本人為默認(rèn)端口80,目的是輸入域名不加端口號(hào)即可訪問。

6. SFTP 連接

SSH File Transfer Protocol,也稱 Secret File Transfer Protocol,安全文件傳送協(xié)議。使用該協(xié)議可以實(shí)現(xiàn)本地向遠(yuǎn)程服務(wù)器推送工程文件。

以 VS Code 為例:

6.1 安裝插件

插件市場(chǎng)搜索 sftp 安裝完成調(diào)出配置命令,Windows 系統(tǒng)快捷鍵 CTRL + SHIFT + P,Mac CMD + SHIFT + P,輸入 SFTP:config 按回車:

根目錄會(huì)生成這個(gè)文件。

6.2 配置 sftp.json

{
  "name": "My Server",   
  "host": "localhost",  // 改為遠(yuǎn)程 server ip
  "protocol": "sftp",   
  "port": 22,
  "username": "username",  // 改為遠(yuǎn)程 server 登錄用戶名,通常是 root
  "password": "******",  // 服務(wù)器登錄密碼
  "remotePath": "/",   // server 上項(xiàng)目目錄地址,比如我的項(xiàng)目是 /usr/local/nginx/ziyu
  "uploadOnSave": true  // 刪除這個(gè)配置或者 改為 false,否則每次保存就自動(dòng)上傳有點(diǎn)麻煩
}

6.3 上傳文件或文件夾:

文件上傳右鍵點(diǎn)擊 upload

文件夾上傳右鍵點(diǎn)擊 Sync Local -> Remote

參考文章:
Node項(xiàng)目部署到阿里云服務(wù)器(ECS),以Nuxt.js服務(wù)端渲染項(xiàng)目為例
VS code配置SFTP連接

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容