Linux下node环境搭建

user.png

远程服务器连接

关于服务器的连接,windows下可以选择Xshell、SecureCRT、Putty 等,Mac下可以选择SecureCRT 、FinallShell等。在这里我通过mac终端连接阿里云的Linux服务器(CentOS)。
1. 切换到root权限下
  • sudo -I

2. 通过ssh连接linux服务器,根据提示输入远程服务器密码

bogon:~ xuqingbiao$ sudo -I
Password:
bogon:~ root# ssh [email protected]
[email protected]'s password:
Last failed login: Thu Mar 21 09:49:14 CST 2019 from 114.113.64.173 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu Mar 21 09:07:38 2019 from 114.113.64.173
Welcome to Alibaba Cloud Elastic Compute Service !

至此,连接远程服务器成功。

3. 介绍几个常用的命令
 1 mac上传文件到Linux服务器
    scp /Users/xuqingbiao/demo [email protected]:/work
 2 mac上传文件夹到Linux服务器
    scp -r /Users/xuqingbiao/demo [email protected]:/work
 3 Linux服务器下载文件到mac
    scp [email protected]:/work/demo /Users/xuqingbiao/
 4 Linux服务器下载文件夹到mac
    scp -r [email protected]:/work/demo /Users/xuqingbiao/ 
远程连接失败时:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:febs6WhV+vyqocDpgParTocBLO92LCM4DgTAiHIQn7w.
Please contact your system administrator.
Add correct host key in /Users/xuqingbiao/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/xuqingbiao/.ssh/known_hosts:2
RSA host key for 47.105.181.201 has changed and you have requested strict checking.
Host key verification failed.
lost connection
删除/Users/xuqingbiao/.ssh/known_host目录下的缓存
或者
ssh-keygen -R IP地址

node环境搭建

1. 配置npm的源
  • curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
[root@iZm5e33l0ge76uqi8nq87aZ ~]# curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
## Installing the NodeSource Node.js 8.x LTS Carbon repo...
## Inspecting system...
+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m
## Confirming "el7-x86_64" is supported...
+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_8.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'
## Downloading release setup RPM...
+ mktemp
+ curl -sL -o '/tmp/tmp.AIyIQvYadg' 'https://rpm.nodesource.com/pub_8.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'
## Installing release setup RPM...
+ rpm -i --nosignature --force '/tmp/tmp.AIyIQvYadg'
## Cleaning up...
+ rm -f '/tmp/tmp.AIyIQvYadg'
## Checking for existing installations...
+ rpm -qa 'node|npm' | grep -v nodesource
## Run `sudo yum install -y nodejs` to install Node.js 8.x LTS Carbon and npm.
## You may also need development tools to build native addons:
     sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
     sudo yum install yarn
2. 根据提示运行 yum install -y nodejs
  • yum install -y nodejs
已安装:
  nodejs.x86_64 2:8.15.1-1nodesource                                                                   
完毕!
[root@iZm5e33l0ge76uqi8nq87aZ ~]# 
Installed:
  nodejs.x86_64 2:8.15.1-1nodesource                                                                   Complete!
[root@iZm5e33l0ge76uqi8nq87aZ ~]# 
3. 出现以上其一,node环境已经安装完成,检查node版本
[root@iZm5e33l0ge76uqi8nq87aZ ~]# node -v
v8.15.1
[root@iZm5e33l0ge76uqi8nq87aZ ~]# 
4. 安装淘宝镜像
  • npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@iZm5e33l0ge76uqi8nq87aZ ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org
npm WARN deprecated [email protected]: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0
/usr/bin/cnpm -> /usr/lib/node_modules/cnpm/bin/cnpm
+ [email protected]
added 679 packages from 898 contributors in 15.191s
5. 安装express生成器工具
  • cnpm install express-generator -g
[root@iZm5e33l0ge76uqi8nq87aZ ~]# cnpm install express-generator -g
Downloading express-generator to /usr/lib/node_modules/express-generator_tmp
Copying /usr/lib/node_modules/express-generator_tmp/[email protected]@express-generator to /usr/lib/node_modules/express-generator
Installing express-generator's dependencies to /usr/lib/node_modules/express-generator/node_modules
[1/5] [email protected] installed at node_modules/[email protected]@commander
[2/5] [email protected] installed at node_modules/[email protected]@sorted-object
[3/5] [email protected] installed at node_modules/[email protected]@ejs
[4/5] [email protected] installed at node_modules/[email protected]@mkdirp
[5/5] [email protected] installed at node_modules/[email protected]@minimatch
All packages installed (9 packages installed from npm registry, used 412ms(network 409ms), speed 240.39kB/s, json 9(16.66kB), tarball 81.66kB)
[[email protected]] link /usr/bin/express@ -> /usr/lib/node_modules/express-generator/bin/express-cli.js
6. 服务器下新建一个work文件夹,并在该文件夹下初始化一个express
  • cd ..
  • mkdir work
  • express demo
 create : demo/
   create : demo/public/
   create : demo/public/javascripts/
   create : demo/public/images/
   create : demo/public/stylesheets/
   create : demo/public/stylesheets/style.css
   create : demo/routes/
   create : demo/routes/index.js
   create : demo/routes/users.js
   create : demo/views/
   create : demo/views/error.jade
   create : demo/views/index.jade
   create : demo/views/layout.jade
   create : demo/app.js
   create : demo/package.json
   create : demo/bin/
   create : demo/bin/www

   change directory:
     $ cd demo

   install dependencies:
     $ npm install

   run the app:
     $ DEBUG=demo:* npm start

[root@iZm5e33l0ge76uqi8nq87aZ work]# ls
7.安装对应的依赖
  • cd demo
  • cpm install
[root@iZm5e33l0ge76uqi8nq87aZ work]# cd demo
[root@iZm5e33l0ge76uqi8nq87aZ demo]# cnpm install
✔ Installed 6 packages
✔ Linked 85 latest versions
✔ Run 0 scripts
deprecate jade@~1.11.0 Jade has been renamed to pug, please install the latest version of pug instead of jade
deprecate [email protected] › constantinople@~3.0.1 Please update to at least constantinople 3.1.1
deprecate [email protected][email protected] Deprecated, use jstransformer
✔ All packages installed (100 packages installed from npm registry, used 2s(network 2s), speed 1.08MB/s, json 91(213.77kB), tarball 1.59MB)
8. 启动应用
  • DEBUG=demo:* npm start
[root@iZm5e33l0ge76uqi8nq87aZ demo]# DEBUG=demo:* npm start

> [email protected] start /work/demo
> node ./bin/www

  demo:server Listening on port 3000 +0ms
9.打开浏览器,输入 Ip地址:3000 即可查看效果
express.png
10. vim编辑器编辑users文件添加用户接口
var express = require('express');
var router = express.Router();
var User = require('./user')
var URL = require('url')
/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});
router.get('/getUserInfo', function(req, res, next) {
  var user = new User();
  var params = URL.parse(req.url, true).query;
  if(params.id == '1') {
    user.name = "徐文俊";
    user.age = "18";
    user.city = "北京";
  } else {
    user.name = "Ms.xu";
    user.age = "2";
    user.city = "广东市";
  }
  var response = {status:1,data:user};
  res.send(JSON.stringify(response))
});
module.exports = router;
11. 启动项目,打开浏览器,输入 Ip地址:3000/users/getUserInfo 即可查看效果
user.png
12. 安装pm2依赖
  • cnpm install pm2 -g
Recently updated (since 2019-03-14): 1 packages (detail see file /usr/lib/node_modules/pm2/node_modules/.recently_updates.txt)
  2019-03-20
    → @pm2/[email protected] › @pm2/[email protected] › proxy-agent@^3.0.3(3.1.0) (12:11:51)
All packages installed (273 packages installed from npm registry, 1 packages installed from remote url, used 4s(network 4s), speed 1.46MB/s, json 235(427.95kB), tarball 5.9MB)
[[email protected]] link /usr/bin/pm2@ -> /usr/lib/node_modules/pm2/bin/pm2
[[email protected]] link /usr/bin/pm2-dev@ -> /usr/lib/node_modules/pm2/bin/pm2-dev
[[email protected]] link /usr/bin/pm2-docker@ -> /usr/lib/node_modules/pm2/bin/pm2-docker
[[email protected]] link /usr/bin/pm2-runtime@ -> /usr/lib/node_modules/pm2/bin/pm2-runtime
13. 执行相关任务
  • pm2 startup systemd
14. 保存配置

pm2 save

15. cd到项目,pm2启动node项目
 启动  pm2 start ./bin/www
 停止 pm2 stop all
 重启 pm2 start -f ./bin/www
[root@iZm5e33l0ge76uqi8nq87aZ 0321node]# pm2 start ./bin/www
[PM2] Starting /work/0321node/bin/www in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ www      │ 0  │ 0.0.0   │ fork │ 21200 │ online │ 0       │ 0s     │ 0%  │ 13.8 MB   │ root │ disabled │
└──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
 Use `pm2 show ` to get more details about an app
16. 查看应用运行情况
  • pm2 show www
[root@iZm5e33l0ge76uqi8nq87aZ 0321node]# pm2 show www
 Describing process with id 0 - name www 
┌───────────────────┬───────────────────────────────┐
│ status            │ online                        │
│ name              │ www                           │
│ version           │ 0.0.0                         │
│ restarts          │ 0                             │
│ uptime            │ 3m                            │
│ script path       │ /work/0321node/bin/www        │
│ script args       │ N/A                           │
│ error log path    │ /root/.pm2/logs/www-error.log │
│ out log path      │ /root/.pm2/logs/www-out.log   │
│ pid path          │ /root/.pm2/pids/www-0.pid     │
│ interpreter       │ node                          │
│ interpreter args  │ N/A                           │
│ script id         │ 0                             │
│ exec cwd          │ /work/0321node                │
│ exec mode         │ fork_mode                     │
│ node.js version   │ 8.15.1                        │
│ node env          │ N/A                           │
│ watch & reload    │ ✘                             │
│ unstable restarts │ 0                             │
│ created at        │ 2019-03-21T07:31:36.690Z      │
└───────────────────┴───────────────────────────────┘
 Code metrics value 
┌────────────────────────┬───────┐
│ Heap Size              │ 13.83 │
│ Heap Usage             │ 71.93 │
│ Used Heap Size         │ 9.95  │
│ Active requests        │ 0     │
│ Active handles         │ 4     │
│ Event Loop Latency     │ 0.62  │
│ Event Loop Latency p95 │ 1.69  │
└────────────────────────┴───────┘
 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs www [--lines 1000]` to display logs
 Use `pm2 env 0` to display environement variables
 Use `pm2 monit` to monitor CPU and Memory usage www

Nginx配置,承载对应的静态文件请求

1.安装epel库
  • yum install epel-release -y
[root@iZm5e33l0ge76uqi8nq87aZ /]# yum install epel-release -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 epel-release.noarch.0.7-11 将被 安装
--> 解决依赖关系完成
依赖关系解决
======================================================================================================
 Package                      架构                   版本                   源                    大小
=======================================================================================================
正在安装:
 epel-release                 noarch                 7-11                   epel                  15 k
事务概要
=======================================================================================================
安装  1 软件包
总下载量:15 k
安装大小:24 k
Downloading packages:
epel-release-7-11.noarch.rpm                                                    |  15 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : epel-release-7-11.noarch                                                           1/1 
警告:/etc/yum.repos.d/epel.repo 已建立为 /etc/yum.repos.d/epel.repo.rpmnew 
  验证中      : epel-release-7-11.noarch                                                           1/1 
已安装:
  epel-release.noarch 0:7-11                                                                           
完毕!
2.安装nginx
  • yum -y install nginx
  验证中      : gperftools-libs-2.6.1-1.el7.x86_64                                               20/25 
  验证中      : libX11-common-1.6.5-2.el7.noarch                                                 21/25 
  验证中      : freetype-2.8-12.el7_6.1.x86_64                                                   22/25 
  验证中      : 1:nginx-mod-http-perl-1.12.2-2.el7.x86_64                                        23/25 
  验证中      : 1:nginx-mod-http-image-filter-1.12.2-2.el7.x86_64                                24/25 
  验证中      : freetype-2.4.11-15.el7.x86_64                                                    25/25 

已安装:
  nginx.x86_64 1:1.12.2-2.el7                                                                          
作为依赖被安装:
  dejavu-fonts-common.noarch 0:2.33-6.el7        dejavu-sans-fonts.noarch 0:2.33-6.el7                
  fontconfig.x86_64 0:2.13.0-4.3.el7             fontpackages-filesystem.noarch 0:1.44-8.el7          
  gd.x86_64 0:2.0.35-26.el7                      gperftools-libs.x86_64 0:2.6.1-1.el7                 
  libX11.x86_64 0:1.6.5-2.el7                    libX11-common.noarch 0:1.6.5-2.el7                   
  libXau.x86_64 0:1.0.8-2.1.el7                  libXpm.x86_64 0:3.5.12-1.el7                         
  libjpeg-turbo.x86_64 0:1.2.90-6.el7            libpng.x86_64 2:1.5.13-7.el7_2                       
  libxcb.x86_64 0:1.13-1.el7                     libxslt.x86_64 0:1.1.28-5.el7                        
  nginx-all-modules.noarch 1:1.12.2-2.el7        nginx-filesystem.noarch 1:1.12.2-2.el7               
  nginx-mod-http-geoip.x86_64 1:1.12.2-2.el7     nginx-mod-http-image-filter.x86_64 1:1.12.2-2.el7    
  nginx-mod-http-perl.x86_64 1:1.12.2-2.el7      nginx-mod-http-xslt-filter.x86_64 1:1.12.2-2.el7     
  nginx-mod-mail.x86_64 1:1.12.2-2.el7           nginx-mod-stream.x86_64 1:1.12.2-2.el7               
作为依赖被升级:
  freetype.x86_64 0:2.8-12.el7_6.1                                                                     

完毕!
3.启动nginx
  • systemctl start nginx.service
4. 查看nginx状态 nginx -t
[root@iZm5e33l0ge76uqi8nq87aZ conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5. 配置反向代理
  • vim /etc/nginx/conf.d/demo.conf
upstream cloud-app {
server 127.0.0.1:3000;
keepalive 64;
}
server {
listen 3389;
server_name 47.105.181.201;
root /root/cloud;
location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_pass http://cloud-app/;
        proxy_redirect off;
        proxy_read_timeout 240s;
}
}
6. 检查nginx状态,没问题的话 重启nginx
  • nginx -t
  • nginx -s reload
[root@iZm5e33l0ge76uqi8nq87aZ conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@iZm5e33l0ge76uqi8nq87aZ conf.d]# nginx -s reload
7. 打开浏览器,输入更改后的端口,运行成功

你可能感兴趣的:(Linux下node环境搭建)