腾讯云从零部署 Nodejs 站点

作者:袁飞翔

最近入手了一台腾讯云机子,用于团队社区站点的建设,站点架构:

  • 数据库服务:mongodb
  • 后台:nodejs + express
  • 接入:nginx  

整个购买到部署的要点步骤:

  • 服务器购买
  • nginx 编译安装配置
  • node 安装
  • mongodb 安装
  • server部署

服务器购买

从腾讯云的首页找到购买入口。(弱弱的说一句,云太多了,企鹅云发展好快~~~ )

按需选择自己的配置,包年可以优惠只需付10个月。最终我们的配置

选购硬盘时需要注意可以选择云硬盘,它支持很多扩容,性能按官方的描述没有多大差别。

购买成功几分钟之后我们便能拿到机器的IP

登录机器

ssh ubuntu@119.29.237.x

第一次使用用户名和密码登录,之后可以配置ssh的免密码登录

nginx 安装

使用apt-get安装nginx

sudo apt-get install nginx

这是最简单的方法,但是这不是最新的nginx,如果需要支持http2,至少需要nginx 1.9.5,因此我们选择本地编译最新的nginx安装

wget https://nginx.org/download/nginx-1.10.1.tar.gz
tar -xvf nginx-1.10.1.tar.gz
cd nginx-1.10.1

# 安装编译依赖
sudo apt-get install make libssl-dev zlib zlib-devel zlib1g-dev openssl openssl-devel pcre-devel \
    libpcre3-dev libpcre++-dev

# 编译安装
./configure --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module \
    --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module \
    --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module \
    --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module \
    --with-file-aio --with-ipv6 --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \
    --with-http_v2_module
make
sudo make install

# 之后nginx将安装至 /usr/local/nginx目录
# 创建一个nginx命令软连接
sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
# 之后就可以运行`nginx`命令了
nginx -V

# 配置nginx的自动启动
# 下载init.d/nginx文件
sudo wget https://raw.githubusercontent.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
# 添加开机自动启动
sudo update-rc.d -f nginx defaults

# 启动
sudo /etc/init.d/nginx start  
# sudo /etc/init.d/nginx stop  # 停止
# sudo /etc/init.d/nginx restart  # 重启

mongodb 安装

mongodb可以直接使用apt-get安装

sudo apt-get install mongodb

# 添加开机自动启动
sudo update-rc.d -f mongodb defaults

# 启动
sudo /etc/init.d/mongodb start

node 安装

# 从node官网下载已编译好了的node 
wget https://nodejs.org/dist/v4.6.0/node-v4.6.0-linux-x64.tar.xz
tar -xvf node-v4.6.0-linux-x64.tar.xz
cd node-v4.6.0-linux-x64.tar.xz

# 拷贝安装
sudo cp -r bin include lib share /usr/local/

# node 命令测试
node -v

server部署

准备工作:

# 创建目录
sudo mkdir -p /data/www/ivweb.io

# 创建用户
sudo groupadd www

# 创建用户
# nginx也使用此用户运行
sudo useradd www -g www -d /data/www

# /data目录权限
sudo chown www:www /data

# 安装forever
sudo npm install -g forever

本地使用rsync命令同步文件至服务器(Linux/Mac,windows的同学需要先安装这个命令)

rsync -rtzvlC --exclude node_modules --exclude ".git" \
    ./ "www@ivweb.io:/data/www/ivweb.io"

启动服务

# 使用www登陆服务器

cd /data/www/ivweb.io
# 安装依赖
npm install
# forever 启动app
forever start app.js

# 可以使用`forever list`查看运行情况及对应的log输出文件,使用`tail -f`动态查看log
forever list
# tail -f XXX.log

之后配置nginx映射,重启nginx机大功告成:

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

2 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

IDEA中的HTTP Client Editor测试API

在前后端分离项目,前后端通过api进行通信。如果用postman免费版进行api测试的话,由于无法保存测试脚本到文件,不方便前端查看。

653
来自专栏云计算教程系列

在CVM上安装Tomcat

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Serv...

1194
来自专栏tiane12

重启后IIS中的站点自动停止的解决方法

1286
来自专栏IT可乐

Linux系列教程(十一)——Linux软件包管理之RPM命令

  前面我们介绍了Linux系统的常用命令介绍和文本编辑器vim命令的介绍。那么从这篇博客开始,我们会正式的讲解Linux的系统管理,首先要讲的是Linux的软...

1726
来自专栏北京马哥教育

Python之包管理工具快速入门

学Python最简单的方法是什么?推荐阅读:30万年薪Python开发工程师成长魔法 在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序...

2595
来自专栏小白安全

小白博客 linux目录结构

初学Linux,首先需要弄清Linux 标准目录结构 root --- 启动 Linux 时使用的一些核心文件。如操作系统 内核 、引导程序 Grub 等...

3166
来自专栏LinXunFeng的专栏

ubuntu软件安装与卸载

1355
来自专栏小樱的经验随笔

Linux目录结构

Linux 目录结构 装完Linux,首先需要弄清Linux 标准目录结构 ? / root —?启动Linux时使用的一些核心文件。如操作系统内核、引导程序G...

2666
来自专栏魏艾斯博客www.vpsss.net

Linux 下添加新分区及挂载

1204
来自专栏魏琼东

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 应用部署

集成与测试           AgileEAS.NET采用的是平台加插件的开发方式,也就是说,开发好插件需要集到AgileEAS.NET平台并进行集成测试,这...

1958

扫码关注云+社区