资讯专栏INFORMATION COLUMN

公司项目NODEJS实践0.1[ ubuntu,nodejs,nginx...]

cppprimer / 2783人阅读

摘要:创建成功后进入文件夹执行执行作用创建文件,维护项目的依赖文件解释创建文件执行作用用系统的编辑器打开文件。我的技术新群上一篇前后端分离项目实践分析下一篇公司项目实践

一、前言

前端如何独立用nodeJs实现一个简单的注册、登录功能,是不是只用nodejs+sql就可以了?其实是可以实现,但离实际应用还有距离,那要怎么做才是实际可用的。

网上有很多nodeJs的示例,包括和 sql / nginx … 等周边技术结合demo,但通常都是做为入门演示或解决某一问题,少有站在项目实际完整应用角度,给出一个整体的解决方案。一些前端朋友和我讨论nodejs时,也多表现出对服务端的欠缺,虽然知道nodejs很好,但难以实际应用。

我在这块做了些研究,也在公司项目中有应用,在此和大家分享下,如何用nodejs实现一个实际可用的项目,需要操作的步骤及相关的技术应用。现在还没想好做怎样的一个demo,就随想随做,如有意义的需求我们也可以一起实现下,若有欠缺,也欢迎共同讨论。

第一次做,我们就先实现下最常用的注册和登录。

技术点:

1、用户注册站点,需要输入用户名、密码、邮箱,验证有效性。[ nodejs / express / validate / md5 / node-dev / requirejs ] 2、发送验证邮件,用户通过邮箱验证后,注册成功。[ mongodb / mailer ] 3、用户登录,可以访问需要登录权限的页面[ redis / 权限控制 ] 4、本项目在linux上开发 及 发布部署 [ git / nginx / ubuntu / aliyun / pm2 ] 5、考虑到前后端分离的需要,我们也将分别搭建前台服务(接收页面请求)、后台服务(数据存储) [ 项目架构 ]

⋅⋅*因涉及到的技术点较多,在本项目中每一种技术如nginx只对使用到的部分做讲解,其它部分后面用到再讲,循序渐进,基础较弱者也好逐步接受。

⋅⋅*本节,我们将实现unbuntu、nodejs、nginx的安装及初步使用,搭建一个可访问的服务

二、linux环境

本次开发将linux上开发,建议前端开发者尝试使用linux系统,其能拓展技术面,在提升开发、发布效率等方面也有好处,初次使用linux会有些障碍,不过现在linux也有类win7的漂亮桌面环境,操作大致相似,在命令不熟时也可以正常使用,坚持用两周,是可以适应的。

选择系统上建议安装适合个人开发者的ubuntu。

建议安装双系统,虚拟机太弱,完全安装ubuntu,使用又不便,有些软件如PS是不支持linux的。

win7下安装ubuntu 的双系统,WIN7安装ubutntu 步骤参见 http://www.upopen.cn/article/info?id=559291b3f0e6e0665b000001

安装成功后,我们就开始提高B格之旅,接下来会对用到的linux操作做简单解释,具体的ubuntu教程可以参考 http://www.upopen.cn/article/info?id=55938b7ff0e6e0665b000003

三、安装nodeJs

快捷键 Ctrl + Alt + T 打开shell终端,

1、打开Nodejs站点 https://nodejs.org/download/,下载linux下对应的.gz文件。也可以拷贝下载地址后,

在shell里执行 wget https://nodejs.org/dist/v0.12.5/node-v0.12.5-linux-x64.tar.gz。

解释:wget :下载后面路径指定的文件

2、下载后默认在Downloads文件里,我们将压缩文件放Soft/node 目录里以便分类管理

shell执行 mkdir Soft // mkdir: 创建Soft文件夹

执行 cd Downloads //cd: 进入到 Downloads 下载文件目录

执行 cp node-v0.12.5-linux-x64.tar.gz /home/cc/Soft
//cp: 复制 node..gz到Soft目录下,注意cc是你的主机名,可通过pwd查看

执行cd //进入个人根目录

执行cd Soft/node

执行 tar -zxvf node-v0.12.5-linux-x64.tar.gz //tar -zxvf 解压

执行 mv node-v0.12.5-linux-x64.tar.gz node //mv : 修改文件夹名为node

执行sudo vi /etc/profile //打开环境变量配置文件

在最后写入

javascriptexport PATH="/home/cc/Soft/node/bin:$PATH"
export NODE_PATH="/home/cc/Soft/node/lib/node_modules"

// 环境变量地址参见 node的 pwd

配置成功后重启

作用:重启后,可执行node -v查看是否安装成功。

解释:本部涉及到ubuntu的基本命令操作,都有简单的解释

四、创建项目目录并安装express等框架包

目录结构

root:项目根目录
⋅⋅web:前端服务
⋅⋅
static:静态服务
⋅⋅*server:后端服务

1、执行 mkdir -p root/web

作用:创建目录,所有项目都在root下,前端服务在web。创建成功后进入web文件夹 执行cd root/web

2、执行touch package.json

作用:创建 package.json文件,维护nodejs项目的依赖文件

解释:touch :创建文件

4、执行 vi package.json

作用:用系统的VI编辑器打开 package.json文件。用vi作大量的编辑工作是不适合的,我们还是用常规的编辑器,在桌面打开文件系统,进入我们创建的root/web目录,使用系统默认的gedit编辑器打开package.json

5、通过gedit在package.json写入

javascript{
⋅⋅"name": "myCoolNodejs ",
⋅⋅"version": "0.0.1",
⋅⋅"private": true,
⋅⋅"scripts": {
⋅⋅⋅"start": "node app.js"
⋅⋅},
⋅⋅"dependencies": { //主要是这两处,设置引入模块,后面还会用到其它模块,另行添加
⋅⋅⋅"express": "*",
⋅⋅⋅"ejs": "*"
⋅⋅}
}

6、执行npm install

作用:下载package.json中dependencies 定义的引入模块

注意:有时限制于网络等因素npm install会安装不成功,可以使用淘宝的npm镜像,执行 npm install -g cnpm --registry=https://registry.npm.taobao.org,安装cnpm,执行cnpm install 。使用同npm。

7、通过桌面打开 web文件夹,创建app.js,并写入基本配置

javascript        /**
        * 引入依赖模块
        */
        var express    = require( "express" ),
        http              = require( "http" ),
        path             = require( "path" );

        var app        = express(),
        server     = http.Server( app );

        /**
        * 设置
        */
        app.set( "port", process.env.PORT || 3000 ); //服务启动端口
        app.set( "views", __dirname + "/views" ); //视图文件
        app.set( "view engine", "ejs" ); //页面引擎
        app.use( "/", express.static( path.join( __dirname, "assets" ))); //静态文件路径

        app.get( "/", function( req, res ){
                res.render( "index.ejs" ); //请求跳转到 index.ejs文件
        })
        server.listen( app.get( "port" ), function(){ //监听服务端口
                console.log( "root server listening on port " + app.get( "port" ));
        } );

        server.on( "close", function(){
                console.log( "close" );    
        } );

8、web目录下创建views文件夹,里面再创建index.ejs文件作为首页

9、打开index.ejs文件,并写入

javascript        
        
        
        我的nodejs项目
        
        
            

我的nodejs项目

作用:ejs语法同html,优势在于其可以引用一些命令,如接收服务服务端定义的数据、include模板等

10、在web目录下创建文件夹 assets/public/imgs,拷入logo.png 图片

11、shell到web目录,执行 node app.js,在浏览器打开 127.0.0.1:3000,即可看到我们在index.ejs里设置的内容,如图

12、在root在创建 statc文件夹,作为静态服务资源,将目录web/assets/下的文件,复制到static里,下面nginx将设置静态文件代理到static服务器

五、安装nginx

1、shell执行sudo apt-get install nginx

作用:安装nginx服务器,nginx的使用可参见http://www.upopen.cn/article/info?id=559254e8b269230039000003

2、执行sudo vi /etc/nginx/sites-enabled/default

作用:因配置文件需要编辑的命令较少,我们尝试通过vi 编辑 nginx的配置文件。vi命令操作参见http://www.upopen.cn/article/list?kind=ubuntu

    在server里增加
javascript        location  ~ .(png|jpg|css|js|woff|ttf|less|gif)$ {
            root /home/jgc/root/static/;
            #配置以上面结尾的文件都指向到 /home/cc/root/static。注意/cc/修改为你的计算机名
        }
        location / {
            proxy_pass http://mynodejs.com;
            #其它请求转向到 http://mynodejs.com; 该名称可以自定义
        }
    在server外面新增
javascript        upstream mynodejs.com { //此处名称与上面proxy_pass名称一致
            server 127.0.0.1:3000;
        #创建集群,为分摊服务器压力,可以创建多个服务器,做负载均衡,如果我们将web复制一份为web1,启动端口改为3001,将其启动后,此处可以再增加一条配置
            server 127.0.0.1: 3001
            # 这样访问便可随机指向3000 及 3001服务,分摊访问压力、降低服务宕机风险
        }

3、在shell 执行 sudo /etc/init.d/nginx start

作用:启动nginx服务

4、此时访问127.0.0.1也打开了和 3000一样的页面,不同在于其静态资源是从static文件夹获取的,可以通过删除web中的assets文件测试。我们后续静态文件都在statc里编辑,发布时static和web放在不同的服务器上,即实现了资源分离,为CDN做准备,

5、执行sudo vi /etc/hosts

作用:打开本地host映射文件,新增一条 127.0.0.1 www.mynodejs.com。保存后,浏览器访问 www.mynodejs.com。

六、总结

本节我们使用、开发了如下功能

1、ubuntu的安装和使用

2、nodejs的安装 及 模块安装

3、nodejs文件的简单配置和启动,项目目录的划分

4、nginx安装、简单配置 及 启动 [ 反向代理及集群 ]

如果你原本只是一个单纯写html/css/js的前端开发员,相信这节是可以学到相当多的新知识,下节,我们将主要在nodejs及 mongo这一块,并按实际项目使用创建项目架构。

有不明或错误,欢迎加群讨论,谢谢。

我的技术新Q群:435485569 上一篇:前后端分离项目实践分析 下一篇:公司项目NODEJS实践0.2[ express, ajax.. ]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39164.html

相关文章

  • docker 应用系列(一)--- 一步步搭建虚拟机 docker 环境 附有 vue-cli +

    摘要:为确保系统里面没有自带的软件的残留,我们要清除一下旧版本的,虽然新系统一般都不会有就是了。更新软件包缓存。 showImg(https://segmentfault.com/img/remote/1460000015914895?w=1240&h=819); 小剧场 测试:裤裆你这页面刷新就白屏啊,怎么了啊,而且你看这 network,怎么这些 js 这么大啊,很耗流量而且加载速度还很...

    hatlonely 评论0 收藏0
  • NodeJS项目迁移兼UbuntuNodeJS环境部署

    摘要:前言之前做的几个项目都托管在阿里云服务器,但是最近要到期了。环境部署折腾了一天,其中也遇到几个坑。项目迁移历时一天,两台服务器的系统都是位。 前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了。想着到底要不要续期,毕竟100/月。后面看着阿里云有个活动,800/三年。果断买下。环境部署折腾了一天,其中也遇到几个坑。 目录 一、安装环境 1.1 安装NodeJS环境 ...

    jlanglang 评论0 收藏0
  • NodeJS项目迁移兼UbuntuNodeJS环境部署

    摘要:前言之前做的几个项目都托管在阿里云服务器,但是最近要到期了。环境部署折腾了一天,其中也遇到几个坑。项目迁移历时一天,两台服务器的系统都是位。 前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了。想着到底要不要续期,毕竟100/月。后面看着阿里云有个活动,800/三年。果断买下。环境部署折腾了一天,其中也遇到几个坑。 目录 一、安装环境 1.1 安装NodeJS环境 ...

    source 评论0 收藏0
  • ubuntu部署使用pm2部署nodejs项目 + pm2和nginx开机自启动

    摘要:安装更新软件源安装但是这个版本是只能使用查看无效安装安装模块用这个模块升级一定要加升级到最新版此时可以用查看版本安装安装开发库下载安装包解压安装包进入文件将安装到目录下目录自 nodejs安装 apt update --更新软件源 apt install nodejs --安装nodejs,但是这个版本是4.2.6(只能使用nodejs -v 查看,node 无效) apt i...

    shixinzhang 评论0 收藏0

发表评论

0条评论

cppprimer

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<