什么的Web?
简单的说它就是一个网站,相信网站这个词没有人会陌生的吧!如果需要专业的名称解释请出门左转打开百度搜索。
一个网站包括什么?一方面是我们看得到的东西,简单的说就是我们看到的页面,也就是你现在看到的这个页面,我们称之为前端;一方面是我们看不到的东西,也就是运行在网站服务器的后台的程序,负责数据交互和提供服务的,我称之为后端。前端和后端有响应的接口进行交互,也就是说我们跟前端交互,前端跟后端交互,后端提供服务反馈给前端呈现给我们。
那nodejs是什么?
nodejs的运行于服务器的后端程序的运行环境,用来解释执行js语言。
那nodejs处理好的数据怎么让用户看见?
nodejs将数据处理好后打包成html文件发送给浏览器,浏览器解析html文件显示到页面上。由于数据在打包处理方面繁杂,所以有人做了中间的框架专门负责这部分的处理,如Express。ejs是建立在Express之上的模版,同样是为了简化前端和后端的数据交互而存在的,当然Express有很多的模版,这里使用ejs是因为ejs简单并且比较像我之前学过的微软的asp语言(asp是运行在IIS之上的,前端后端代码写在同一个文件里面,没有什么前端后端的概念)。
简单的说它们之间的依赖关系是这样的:nodejs->Express->ejs。
如果不用这些东西能不能建网站?
当然可以,你完全可以直接监听80端口,然后自己解析html请求包,将响应的数据自己打包成html发回给客户端浏览器,同样能实现上面组合能实现的任何事,但你将需要付出很长很长很长的时间。
我们学习这些无非就是学习它们的约定,让我们高效快速的完成我们想要的东西,仅此而已。
有动车不坐,非得用脚跑完全是可以的,但如果你想要做动车那你就需要学习和遵循坐动车的规则和约定,如需要买票检票安检在指定时间和指定地点上车等等。
我希望的是大家在学习一门新的知识前先去了解整体,让自己先有一定的概念再去学习,这样学下来才是高效并且有意义的。
如果哪里说的不对,你特么顺着网线来砍我啊!
建立一个网站我们需要什么?
1、一个域名
2、一个服务器
我可以用ip地址访问啊。你特么的怎么不用183.232.231.172去打开百度啊。
服务器有两种,一种是虚拟主机,比较便宜,但功能受限制,只能做支持的环境,如ASP/PHP/.NET之类;另一种是云服务器,现在比较少直接买一台实体主机了,都是从集群中切分出一小块运算量相当的虚拟设备作为主机服务器,和虚拟主机不同,这可以选择操作系统,而后自己选择安装什么软件都任凭自己做主,我们要选择的就是这种。
如何得到一个域名?
网上很多域名商,找一个注册一下即可,一般可以选择在阿里云上的域名服务中注册一个,到时需要拍照备案,个人备案很简单,拍个照片上传即可。
如何让得到一个服务器
同样,阿里云,腾讯云都有,注册一个便是。
比如我在腾讯云里买了一个服务器:
在阿里买了一个域名:
将域名解析到服务器的公网ip地址即可。
接下来我们要开始学习nodejs了,我可以很负责任的告诉大家,以上对于接下来要讲的东西没有任何关系,哈哈。
开个玩笑,就是说学习的话服务器不是必要的,没有服务器在电脑本地也是可以搭的,服务器只是对外发布用的。
环境搭建
1、购买服务器后,选择系统镜像(centos7 x64),设置好帐号密码,使用putty连接服务器:
2、使用命令安装工具
$yum install gcc gcc-c++ // 安装c/c++编译器,可能还需要make openssl-devel wget(这些一般系统都自带了)
3、下载nodejs源码
到nodejs官方网站找到源码下载地址(右键->复制链接地址)
可以在服务器上创建目录(mkdir)来保存文件
$mkdir /workspace
$cd /workspace // 切换到工作目录
使用wget命令下载nodejs源码包,如
$wget https://nodejs.org/dist/v6.11.4/node-v6.11.4.tar.gz // wget 下载地址
解压并编译安装
$tar -zvxf node-vx.xx.xx.tar.gz // 解压
$cd node-vx.xx.xx // 转到源码目录
$./configure // 配置(默认配置)
$make install // 编译并安装
$node -v // 检查是否安装成功(查看node.js版本)
4、搭建本地测试环境
在nodejs官方网站下载windows安装包(如果你的电脑是windows的话)。
下载Sublime Text3(谁说记事本就不能写代码了?如果你想更方便点的话可以试试WebStorm)。
新建test.js文件
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(80);
console.log('Server started');
使用命令行node命令运行test.js文件
node text.js
在浏览器上访问http://www.localhost/
如此基本的环境已经搭建完成了。
5、安装pm2
在命令行上执行node命令时程序是依赖终端窗口的,终端窗口关闭后程序也一起退出了网站也就不能访问了,我们需要的是启动后一直在后台运行,所以使用pm2运行node(pm2比forever要高端一些)。
$npm install -g pm2 // 安装pm2
pm2常用命令
命令 | 描述 |
---|---|
pm2 start app.js | 启动应用 |
pm2 list | 列出所有应用 |
pm2 monit | 查看资源消耗 |
pm2 describe [app id/name] | 查看某一个应用状态 |
pm2 logs | 查看所有日志 |
pm2 restart [app id/name] | 重启应用 |
pm2 stop [app id/name] | 停止应用 |
pm2 delete [app id/name] | 删除应用 |
pm2 web | 开启api访问 |
其它 | pm2官网 |
使用WinSCP登录服务器将前面创建的test.js上传到服务器(SFTP)。
$pm2 start node test.js
访问网站
此时一个最简易的网站已经搭建完毕了。
6、安装git项目管理工具(非必需)
CentOS安装最新版git
在github上取得tar.gz下载地址,(v2.14.1.tar.gz)
$wget [下载地址] // 下载git源码
$tar zxvf xxx.tar.gz // 解压
$yum groupinstall "Development Tools" // 安装开发者工具包(可能不需要)
安装编译依赖库
$yum install gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel libcurl-devel expat-devel
编译安装
$make prefix=/usr/local/git all
$make prefix=/usr/local/git install
$echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
$source /etc/bashrc
检查安装结果
$git --version
远程项目服务器
在码云上注册帐号,创建仓库,取得仓库的HTTPS地址。
当然,可以将仓库直接建在服务器上。
安装本地git图形化工具
下载安装SourceTree
克隆远程(码云的HTTPS)工程代码。
同样服务器上也克隆码云上的工程代码(代码修改后需要重新启动)。
网友评论
这句话好别扭,箭头指向的才是被依赖的项目吧。nodejs<-Express<-ejs。