如下图,我们再来关注一下npm的本地仓库,输入命令npm list -global
基于nodejs,利用淘宝npm镜像安装相关依赖。由于国外使用npm会很慢,这里推荐使用淘宝nmp镜像
输入命令npm config list 显示所有配置信息,我们关注一个配置文件
检查一下镜像站命令行不行:
注意,此时默认的模块E:\workspace\npm\nodejs\node_modules, 目录将会改变为E:\workspace\npm\nodejs\node_global\node_modules 目录,
如果直接运行npm install等命令会报错的。
我们需要做1件事情:
增加环境变量NODE_PATH 内容是:E:\workspace\npm\nodejs\node_global\node_modules(参考jdk配置),注意,以下 *** 作需要重新打开CMD让上面的环境变量生效
命令:
对path环境变量添加E:\workspace\npm\nodejs\node_global (这个路径应该是包含vue.cmd的那个目录)
重新打开CMD,并且测试vue是否使用正常
pm2 是一个 Node.js 应用的进程管理器,它可以让你的应用程序保持运行,还有一个内建的负载均衡器。它非常简单而且强大,你可以零间断重启或重新加载你的 node 应用,它也允许你为你的 node 应用创建集群。
在这篇博文中,我会向你展示如何安装和配置 pm2 用于这个简单的 'Express' 应用,然后配置 Nginx 作为运行在 pm2 下的 node 应用的反向代理。
前提:
Ubuntu 16.04 - 64bit
Root 权限
第一步 - 安装 Node.js LTS
在这篇指南中,我们会从零开始我们的实验。首先,我们需要在服务器上安装 Node.js。我会使用 Nodejs LTS 6.x 版本,它能从 nodesource 仓库中安装。
从 Ubuntu 仓库安装 python-software-properties 软件包并添加 “nodesource” Nodejs 仓库。
sudo apt-get install -y python-software-properties
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
安装最新版本的 Nodejs LTS:
sudo apt-get install -y nodejs
安装完成后,查看 node 和 npm 版本。
node -v
npm -v
检查 node.js 版本
第二步 - 生成 Express 示例 App
我会使用 express-generator 软件包生成的简单 web 应用框架进行示例安装。express-generator 可以使用npm 命令安装。
用 npm安装 express-generator:
npm install express-generator -g
-g : 在系统内部安装软件包。
我会以普通用户运行应用程序,而不是 root 或者超级用户。我们首先需要创建一个新的用户。
创建一个名为 yume 的用户:
useradd -m -s /bin/bash yume
passwd yume
使用 su 命令登录到新用户:
su - yume
下一步,用 express 命令生成一个新的简单 web 应用程序:
express hakase-app
命令会创建新项目目录 hakase-app。
用 express-generator 生成应用框架
进入到项目目录并安装应用需要的所有依赖。
cd hakase-app
npm install
然后用下面的命令测试并启动一个新的简单应用程序:
DEBUG=myapp:* npm start
默认情况下,我们的 express 应用会运行在 3000 端口。现在访问服务器的 IP 地址:192.168.33.10:3000 :
express nodejs 运行在 3000 端口
这个简单 web 应用框架现在以 'yume' 用户运行在 3000 端口。
第三步 - 安装 pm2
pm2 是一个 node 软件包,可以使用 npm 命令安装。(用 root 权限,如果你仍然以 yume 用户登录,那么运行命令 exit 再次成为 root 用户):
npm install pm2 -g
现在我们可以为我们的 web 应用使用 pm2 了。
进入应用目录 hakase-app:
su - yume
cd ~/hakase-app/
这里你可以看到一个名为 package.json 的文件,用 cat 命令显示它的内容。
cat package.json
配置 express nodejs 服务
你可以看到 start 行有一个 nodejs 用于启动 express 应用的命令。我们会和 pm2 进程管理器一起使用这个命令。
像下面这样使用 pm2 命令运行 express 应用:
pm2 start ./bin/www
现在你可以看到像下面这样的结果:
使用 pm2 运行 nodejs app
我们的 express 应用正在 pm2 中运行,名称为 www,id 为 0。你可以用 show 选项 show nodeid|name获取更多 pm2 下运行的应用的信息。
pm2 show www
pm2 服务状态
如果你想看我们应用的日志,你可以使用 logs 选项。它包括访问和错误日志,你还可以看到应用程序的 HTTP 状态。
pm2 logs www
pm2 服务日志
你可以看到我们的程序正在运行。现在,让我们来让它开机自启动。
pm2 startup systemd
systemd: Ubuntu 16 使用的是 systemd。
你会看到要用 root 用户运行命令的信息。使用 exit 命令回到 root 用户然后运行命令。
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume
它会为启动应用程序生成 systemd 配置文件。当你重启服务器的时候,应用程序就会自动运行。
pm2 添加服务到开机自启动
第四步 - 安装和配置 Nginx 作为反向代理
在这篇指南中,我们会使用 Nginx 作为 node 应用的反向代理。Ubuntu 仓库中有 Nginx,用 apt 命令安装它:
sudo apt-get install -y nginx
下一步,进入到 sites-available 目录并创建新的虚拟主机配置文件。
cd /etc/nginx/sites-available/
vim hakase-app
粘贴下面的配置:
upstream hakase-app {
# Nodejs app upstream
server 127.0.0.1:3000
keepalive 64
}
# Server on port 80
server {
listen 80
server_name hakase-node.co
root /home/yume/hakase-app
location / {
# Proxy_pass configuration
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://hakase-app/
proxy_redirect off
proxy_read_timeout 240s
}
}
保存文件并退出 vim。
在配置中:
node 应用使用域名 hakase-node.co 运行。
所有来自 nginx 的流量都会被转发到运行在 3000 端口的 node app。
测试 Nginx 配置确保没有错误。
nginx -t
启用 Nginx 并使其开机自启动。
systemctl start nginx
systemctl enable nginx
第五步 - 测试
打开你的 web 浏览器并访问域名(我的是):http://hakase-app.co 。
你可以看到 express 应用正在 Nginx web 服务器中运行。
Nodejs app 在 pm2 和 Nginx 中运行
下一步,重启你的服务器,确保你的 node app 能开机自启动:
pm2 save
sudo reboot
如果你再次登录到了你的服务器,检查 node app 进程。以 yume 用户运行下面的命令。
su - yume
pm2 status www
nodejs 在 pm2 下开机自启动
Node 应用在 pm2 中运行并使用 Nginx 作为反向代理。
首次登录云服务器,要先进行用户设置。用户设置
首先用passwd命令修改超级管理员root密码。
1
$ passwd
根据提示连续输入两次密码,很简单吧。
接着,要新建一个普通的管理账号并设置密码,用于日常的系统管理。
1
2
$ useradd user1
$ passwd user1
将用户添加进管理组,以便于统一管理管理员的权限。
1
$ usermod -a -G wheel user1
设置新用户的sudo权限。
1
$ visudo
执行visudo命令实际上编辑的是/etc/sudoers文件。 找到 root ALL=(ALL:ALL) ALL 这行,并下面添加一行
1
user1ALL=(ALL:ALL) ALL
保存退出,以后就可用用sudo命令执行管理 *** 作了。
修改主机名
每台服务器都有自己的名字,一般web服务器会用网站的域名来做主机名。 [用户名@主机名 ~]$
1
2
$ hostname "www.chufa.la"
$ vi /etc/sysconfig/network
HOSTNAME=www.chufa.la
保存,并退出编辑,下次等登入服务器就能看到修改的主机名字了。
SSH配置
将ssh的端口22改掉,另外,禁止root通过ssh登录服务器,并允许新建的普通管理员登录。
1
$ vi /etc/ssh/sshd_config
找到 # Port 22 ,去掉#并将22修改为1025到65536 之间的没被用到的端口号。 找到下面一行,并去掉注释符。
1
# PermitRootLogin yes
在配置文件里添加
1
AllowUsers user1
保存后,退出文件编辑。 重启sshd
1
$ service sshd restart
下次登录,就要用新设定的端口号登录了。
1
$ ssh user1@ip -p port
挂载数据盘
为数据盘建立交换分区和普通分区,并挂载到系统。 首先查看查看数据盘
1
$ fdisk -l
确认数据盘为 /dev/xvdb 接着,对数据盘进行分区 *** 作,
1
$ fdisk -S 56 /dev/xvdb
输入m可以查看帮助。 这里直接键入n新建第一个扩展分区,接着输入p建立立基本分区,输入要建立的分区号1,起始簇保持默认,结束簇的位置输入 +2G (一般扩展分区的大小为内存的两倍)。 然后,重复上面的步骤,将剩下的分为数据盘,注意第二个分区的分区号为2。
格式化分区
1
2
$ mkswap /dev/xvdb1
$ mkfs.ext4 /dev/xvdb2
启用swap分区
1
$ swapon /dev/xvdb1
将数据盘的第二个分区,挂载到新建的 /data 目录。
1
$ mkdir /data
修改fstab文件,保证重启系统后自动挂载。
1
$ vi /etc/fstab
添加
1
2
/dev/xvdb1 swapswapdefaults0 0
/dev/xvdb2 /data ext4defaults0 0
保存文件,并退出编辑,下次启动系统就能自动挂载数据盘了。
执行挂载命令,可以立即看到挂载的硬盘。
1
$ mount -a
软件安装 Nginx Mongo Node
我习惯于多个node进程共享80端口,用nginx反向代理到不同的node服务上去。 安装nginx。 新建yum仓库配置文件。
1
$ vi /etc/yum.repos.d/nginx.repo
内容如下:
1
2
3
4
5
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
保存文件,并退出编辑。
执行.
1
$ yum install nginx
安装mongodb
1
$ vi /etc/yum.repos.d/mongodb.repo
文件内容
1
2
3
4
5
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
保存文件,并退出编辑。
执行
1
$ yum install mongodb-org
安装Node和NPM
1
$ sudo yum install nodejs npm
至此,服务器环境就搭建好了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)