,大家好,我是希留。
近日正好在学习nodejs相关的内容,拉代码放在本地环境开发都很熟悉了,但是要把开发好的项目部署上线就很少接触了。所以就花了点时间学习了一下如何nodejs项目部署到服务器上。以下就是整个部署的操作步骤:
首先需要一台服务器,目前市面上用得最多的云服务就是腾讯云和阿里云了。
正好腾讯云正在推广轻量服务器,配置用来学习足够了,关键还很便宜,我就买了腾讯云的服务器。所以这里以腾讯云为例。 (腾讯云轻量服务器正在搞活动,2核4G的3年只需222元,用来自己学习真香。)
申请完成,首次登录建议重置一下密码。
重置完成后,等待服务器自动重启。 之后就可以使用ssh连接工具进行可视化操作的连接,我使用的是xshell工具, 连接成功。
接下来依次键入命令安装几个软件:
yum install -y nodejs
yum install -y git
yum install -y nginx
node.js 安装完成就可以使用 npm 安装 pm2
npm install pm2 -g
pm2 是 node 进程管理工具,可以利用它来简化node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。pm2 功能很强大,入门却非常简单,常用的几个命令是:
pm2 start app.js -n uni 启动一个进程并把它命名为 uni
pm2 list/ls 列出所有进程信息
pm2 logs 显示所有进程日志
pm2 stop all 停止所有进程
pm2 restart all 重启所有进程
pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0 停止指定的进程
pm2 restart 0 重启指定的进程
pm2 startup 产生 init 脚本 保持进程活着
pm2 delete 0 杀死指定的进程
pm2 delete all 杀死全部进程
pm2 monit 查看进程的资源消耗情况
pm2 start app.js -i max // -i 表示 number-instances 实例数量 max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
pm2 start app.js -n uni --watch 在文件改变的时候会重新启动程序
pm2 startup centos 设置pm2开机自启
pm2 save 保存设置
了解更多可以查看 官方文档(https://pm2.keymetrics.io/docs/usage/quick-start/)。
首先,需要拉取一份源码放在服务器上,依次输入以下命令
git clone https://github.com/front-end-class/uniapp-music-back-code.git
#之后需要更新可以输入命令:git pull
# 进入文件夹
cd uniapp-music-back-code
# 安装npm包
npm install
# 使用pm2启动
pm2 start app.js -n uni
# 查看状态
pm2 list
启动成功之后,打开浏览器,通过公网ip(http://42.194.222.32:3000) 进行访问。(由于我的项目的端口是3000,是未开放的端口,所以还需要在防火墙里配置一下端口)
众所周知,小程序接口需要使用 https,我们可以利用腾讯云提供的免费 SSL 证书来配置 https,而申请免费的证书需要一个域名。
我因为没有域名,就新注册了一个。注册完成之后就可以申请免费的SSL证书了。
点击免费申请按钮,选择域名型的(DV)免费证书即可:
在证书申请通过后,进入SSL证书列表,将所申请的域名SSL证书下载到本地后,再上传到域名所在服务器。
回到xshell连接工具,在 /etc/nginx/ 下创建文件夹 ssl 件夹 ssl
cd /etc/nginx/
mkdir ssl
将 crt 和 key 两个文件(公钥和私钥)修改好名字上传到 ssl 文件夹
修改 nginx 配置文件
vi /etc/nginx/nginx.conf
修改server配置
server{
listen 80; #表示监听80端口
server_name xiliu.online www.xiliu.online;
location / { #将80端口强制转为https
rewrite (.*) https://www.xiliu.online$1 permanent;
}
}
server{
listen 443 ssl; #表示监听443端口即https
server_name xiliu.online www.xiliu.online;
ssl_certificate /etc/nginx/ssl/xiliu.online_bundle.crt; #证书公钥文件路径
ssl_certificate_key /etc/nginx/ssl/xiliu.online.key; #证书私钥文件路径
ssl_session_timeout 5m; #5分钟session会话保持
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / { #将80端口强制转为https
root /home/nginx/uni-music; # H5 打包后项目放置目录
# 固定写法就可以了
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:3000/; # node后端接口服务
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
保存并重启 nginx
sudo service nginx restart
如果没有报错,就可以使用 https 访问网站了。
至此,整个部署就完成了。感谢您的阅读,如有不足之处,欢迎在评论区多多批评指正。
面的话
如果服务器只需要放置一个网站程序,解析网站到服务器的网站,网站程序监听80端口就可以了。如果服务器有很多应用,借助nginx不仅可以实现端口的代理,还可以实现负载均衡。本文将详细介绍前端及nodeJS项目在服务器配置时需要用到的nginx配置。
安装
【卸载nginx】
在介绍如何安装nginx之前,先要介绍如何卸载nginx。因为nginx不正确的安装,导致无法正常运行,所以需要卸载nginx。
sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包sudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包
【安装nginx】
首先,更新包列表
sudo apt-get update
然后,一定要在sudo下安装nginx
sudo apt-get install nginx
主机配置
【端口配置】
listen 127.0.0.1:8000;listen *:8000;listen localhost:8000;# IPV6listen [::]:8000;# other paramslisten 443 default_serer ssl;listen 127.0.0.1 default_server accept_filter=dataready backlog=1024
【主机名配置】
server_name www.xiaohuochai.com xiaohuochai.comserver_name *.xiaohuochai.comserver_name ~^\.xiaohuochai\.com$
路径配置
【location】
nginx使用location指令来实现URI匹配
location=/ { # 完全匹配=# 大小写敏感 ~ # 忽略大小写 ~*}location ^~ /images/ { # 前半部分匹配 ^~ # 可以使用正则,如: # location ~* \.(gif|jpg|png)$ { }}location / { # 如果以上都未匹配,会进入这里}
【根目录设置】
location / { root /home/test/;}
【别名设置】
location /blog { alias /home/www/blog/;}location ~ ^/blog/(\d+)/([\w-]+)$ { # /blog/20180402/article-name # -> /blog/20180402-article-name.md alias /home/www/blog/-.md;}
【首页设置】
index /html/index.html /php/index.php;
【重定向页面设置】
error_page 404 /404.html;error_page 502 503 /50x.html;error_page 404=200 /1x1.gif; location / { error_page 404 @fallback;}location @fallback { # 将请求反向代理到上游服务器处理 proxy_pass http://localhost:9000;}
【try_files 设置】
try_files $uri $uri.html $uri/index.html @other;location @other { # 尝试寻找匹配 uri 的文件,失败了就会转到上游处理 proxy_pass http://localhost:9000;}location / { # 尝试寻找匹配 uri 的文件,没找到直接返回 502 try_files $uri $uri.html=502;}
反向代理
代理分为正向和反向代理,正向代理代理的对象是客户端,反向代理代理的对象是服务端。
反向代理(reserve proxy)方式是指用代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络中的上游服务器,并将上游服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外的表现就是一个 Web 服务器。
【负载均衡设置】
upstream,定义一个上游服务器集群
upstream backend { # ip_hash; server s1.barretlee.com; server s2.barretlee.com;}server { location / { proxy_pass http://backend; }}
【反向代理设置】
proxy_pass 将请求转发到有处理能力的端上,默认不会转发请求中的 Host 头部
location /blog { prox_pass http://localhost:9000; ### 下面都是次要关注项 proxy_set_header Host $host; proxy_method POST; # 指定不转发的头部字段 proxy_hide_header Cache-Control; proxy_hide_header Other-Header; # 指定转发的头部字段 proxy_pass_header Server-IP; proxy_pass_header Server-Name; # 是否转发包体 proxy_pass_request_body on | off; # 是否转发头部 proxy_pass_request_headers on | off; # 显形/隐形 URI,上游发生重定向时,Nginx 是否同步更改 uri proxy_redirect on | off;}
HTTPS配置
server{ listen 80; server_name api.xiaohuochai.cc; return 301 https://api.xiaohuochai.cc$request_uri;}server{ listen 443; server_name api.xiaohuochai.cc; ssl on; ssl_certificate /home/www/blog/crt/api.xiaohuochai.cc.crt; ssl_certificate_key /home/www/blog/crt/api.xiaohuochai.cc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if ($ssl_protocol="") { rewrite ^(.*)https://$host$1 permanent; } }
【HTTP2】
开启HTTP2服务非常简单,只需要在端口443后面添加http2即可。
server{ listen 443 http2;...}
gzip配置
开启网站的 gzip 压缩功能,通常可以高达70%,也就是说,如果网页有30K,压缩之后就变成9K, 对于大部分网站,显然可以明显提高浏览速度。
gzip配置在nginx.conf文件中已经存在,只不过默认是注释的状态,只需将注释符号去掉即可
## # Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
缓存配置
如果服务器中存在静态资源,可设置本地强缓存。expires 7d表示在本地缓存7天
location / { expires 7d; ... }
设置完成后,浏览器会自动添加expires和cache-control字段,而对于协商缓存Etag和Last-Modified,nginx默认开启,无需配置。
CSP配置
跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。为了防止它们,要采取很多编程措施,非常麻烦。很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本?这就是"网页安全政策"(Content Security Policy,缩写 CSP)的来历。
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置
目前,CSP有如下指令
指令 指令值示例 说明default-src 'self' cnd.a.com 定义针对所有类型(js、image、css、web font,ajax 请求,iframe,多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认的。script-src 'self' js.a.com 定义针对 JavaScript 的加载策略。style-src 'self' css.a.com 定义针对样式的加载策略。img-src 'self' img.a.com 定义针对图片的加载策略。connect-src 'self' 针对 Ajax、WebSocket 等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为 400 的响应。font-src font.a.com 针对 WebFont 的加载策略。object-src 'self' 针对 <object>、<embed> 或 <applet> 等标签引入的 flash 等插件的加载策略。media-src media.a.com 针对 <audio> 或 <video> 等标签引入的 HTML 多媒体的加载策略。frame-src 'self' 针对 frame 的加载策略。sandbox allow-forms 对请求的资源启用 sandbox(类似于 iframe 的 sandbox 属性)。report-uri /report-uri 告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。 特别的:如果想让浏览器只汇报日志,不阻止任何内容,可以改用 Content-Security-Policy-Report-Only 头。
指令值可以由下面这些内容组成:
指令值 指令示例 说明img-src 允许任何内容。'none' img-src 'none' 不允许任何内容。'self' img-src 'self' 允许来自相同来源的内容(相同的协议、域名和端口)。data: img-src data: 允许 data: 协议(如 base64 编码的图片)。www.a.com img-src img.a.com 允许加载指定域名的资源。.a.com img-src .a.com 允许加载 a.com 任何子域的资源。https://img.com img-src https://img.com 允许加载 img.com 的 https 资源(协议需匹配)。https: img-src https: 允许加载 https 资源。'unsafe-inline' script-src 'unsafe-inline' 允许加载 inline 资源(例如常见的 style 属性,onclick,inline js 和 inline css 等等)。'unsafe-eval' script-src 'unsafe-eval' 允许加载动态 js 代码,例如 eval()。
admin.xiaohuochai.cc中的CSP配置如下
add_header Content-Security-Policy "default-src 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval';img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site;style-src 'self' 'unsafe-inline';frame-src https://demo.xiaohuochai.site https://xiaohuochai.site;";
隐藏信息
在请求响应头中,有这么一行 server: nginx,说明用的是 Nginx 服务器,但并没有具体的版本号。由于某些 Nginx 漏洞只存在于特定的版本,隐藏版本号可以提高安全性。这只需要在配置里加上这个就可以了:
server_tokens off;
配置流程
下面在/etc/nginx/conf.d下新建一个配置文件,命名为test-8081.conf,内容如下
注意:一般以域名-端口号来命名配置文件
upstream xiaohuochai { server 127.0.0.1:8081;}server{ listen 80; server_name 1.2.3.4; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://test; proxy_redirect off; } }
下面使用sudo nginx -t来测试配置文件是否格式正确
如果不想让报文显示server的详细信息,需要将/etc/nginx/nginx.conf主配置文件中的server_tockens off前面的注释取消即可
接着,重启nginx服务
sudo nginx -s reload
后端项目
下面来部署后端的nodejs项目,在/etc/nginx/conf.d目录下新建文件,该项目占用3000端口,则起名为api-xiaohuochai-cc-3000.conf
upstream api { server 127.0.0.1:3000;}server{ listen 80; server_name api.xiaohuochai.cc; return 301 https://api.xiaohuochai.cc$request_uri;}server{ listen 443 http2; server_name api.xiaohuochai.cc; ssl on; ssl_certificate /home/www/blog/crt/api.xiaohuochai.cc.crt; ssl_certificate_key /home/www/blog/crt/api.xiaohuochai.cc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if ($ssl_protocol="") { rewrite ^(.*)https://$host permanent; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://api; proxy_redirect off; }}
后台项目
后台项目起名为admin-xiaohuochai-cc-3001.conf。由于项目采用react构建,与普通的静态网站有些不同
1、前端路由
由于使用前端路由,项目只有一个根入口。当输入类似/posts的url时,找不到这个页面,这是,nginx会尝试加载index.html,加载index.html之后,react-router就能起作用并匹配我们输入的/posts路由,从而显示正确的posts页面。
try_files $uri $uri/ /index.html=404;
2、反向代理
由于该项目需要向后端api.xiaohuochai.cc获取数据,但是后台占用的是3000端口,相当于跨域访问,这时就需要进行反向代理。
location /api/ { proxy_pass http://api/; }
注意:一定要在api后面添加/,否则不生效
3、配置缓存及CSP
expires 7d;add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline'; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site;";
下面是详细的配置文件
upstream admin { server 127.0.0.1:3001;}server{ listen 80; server_name admin.xiaohuochai.cc; return 301 https://admin.xiaohuochai.cc$request_uri; root /home/www/blog/admin/build; index index.html;}server{ listen 443 http2; server_name admin.xiaohuochai.cc; ssl on; ssl_certificate /home/www/blog/crt/admin.xiaohuochai.cc.crt; ssl_certificate_key /home/www/blog/crt/admin.xiaohuochai.cc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if ($ssl_protocol="") { rewrite ^(.*)https://$host permanent; } location /api/ { proxy_pass http://api/; } location / { index index.html; root /home/www/blog/admin/build; expires 7d; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline'; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site;"; try_files $uri $uri/ /index.html=404; }}
前台项目
前台项目起名为www-xiaohuochai-cc-3002.conf。项目采用vue构建。该项目与后台项目类似,但稍有些不同。不同之处在于,使用主域名xiaohuochai.cc或二级域名www.xiaohuochai.cc都需要跳转。
server{ listen 443 http2; server_name www.xiaohuochai.cc xiaohuochai.cc;...
详细配置如下
upstream client { server 127.0.0.1:3002;}server{ listen 80; server_name www.xiaohuochai.cc xiaohuochai.cc; return 301 https://www.xiaohuochai.cc$request_uri; root /home/www/blog/client/dist; index index.html;}server{ listen 443 http2; server_name www.xiaohuochai.cc xiaohuochai.cc; ssl on; ssl_certificate /home/www/blog/client/crt/www.xiaohuochai.cc.crt; ssl_certificate_key /home/www/blog/client/crt/www.xiaohuochai.cc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if ($ssl_protocol="") { rewrite ^(.*)https://$host$1 permanent; } location /api/ { proxy_pass http://api/; } location / { index index.html; root /home/www/blog/client/source/dist; expires 7d; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://static.xiaohuochai.site ; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline' https://static.xiaohuochai.site; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site https://www.xiaohuochai.site;"; try_files $uri $uri/ /index.html=404; }}
SSR项目
如果前端项目是服务器端渲染的SSR项目,则与普通的前端项目有很大不同,它不仅需要守护后端程序,还有前端静态资源的处理,如果是首页,还需要处理www
详细配置如下
upstream client { server 127.0.0.1:3002;}server{ listen 80; server_name www.xiaohuochai.cc xiaohuochai.cc; return 301 https://www.xiaohuochai.cc$request_uri;}server{ listen 443 http2; server_name www.xiaohuochai.cc xiaohuochai.cc; ssl on; ssl_certificate /home/blog/client/crt/www.xiaohuochai.cc.crt; ssl_certificate_key /home/blog/client/crt/www.xiaohuochai.cc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if ($host='xiaohuochai.cc'){ rewrite ^/(.*)$ http://www.xiaohuochai.cc/$1 permanent; } location / { expires 7d; add_header Content-Security-Policy "default-src 'self' https://static.xiaohuochai.site; connect-src https://api.xiaohuochai.cc; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://static.xiaohuochai.site ; img-src 'self' data: https://pic.xiaohuochai.site https://static.xiaohuochai.site; style-src 'self' 'unsafe-inline' https://static.xiaohuochai.site; frame-src https://demo.xiaohuochai.site https://xiaohuochai.site https://www.xiaohuochai.site;"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://client; proxy_redirect off; }}
作者:小火柴的蓝色理想 来源:http://39sd.cn/2FAE2
Nodejs是GoogleV8引擎的一个JavaScript脚本语言,实际上也就是相当于服务器一样,可以解析网页内容并产生效果。它的出现令JavaScript如虎添翼,而且Node比JavaScript执行更为快速,并且支持分布式,因为它使用了事件驱动型的非阻塞式的模型。说太多反而没意思,不如我们自己搭建一个。
由于小编是Win7的系统,新版Nodejs不支持,不知道为什么?倒是对Win8很友好。于是小编在清华镜像下载了下来,分享给大家。这里有两个版本,一个是安装包版本(后缀是.msi)无需配置环境变量;另一个是压缩包,直接解压然后配置环境变量即可。这里小编建议大家下载安装包,考虑到有些人不懂的怎么设置环境变量,还是安装包好点,小编偷个懒也下安装包。
首先我们需要同意它的用户协议,然后选择安装路径,没有硬性规定非得放在系统盘,那么就请放在其它盘,如下:
然后点击下一步,会看到环境设置和安装依赖项,不用管,Next继续,如下:
然后我们会看到有一个选项,如图:
这个是让我们是否选择这个工具,选择了它就会下载,建议选上,然后等待片刻,安装立马就好了,如图:
这个时候会出现一个CMD窗口,提示我们要下载工具了,并且需要关掉所有的窗口,如图:
按回车后,完成闪退,进入CMD,输入命令获取Node版本号,若返回则说明安装成功,如下:
首先创建一个文件夹,名字不要使用中文和大写字母,然后我们在该目录下打开命令提示符,并输入命令“npm init”,如下:
这里我们一步步按回车,最后输入Yes,即可创建一个Node的项目了。上面给出的都是项目的配置。打开文件夹去看看,如图:
会创建一个Json格式的文件。然后我们需要给这个项目建立一个静态的资源库,一般放置图片,HTML什么的,取名为Static好了,然后放一个HTML文件进去,取名“index.html”,至于内容随便写;然后我们需要在Json文件目录建立一个Json文件,用作启动服务器使用,先随便写一个,如图:
然后我们访问它,这个时候这个Js 文件就是服务端的程序,访问就会出结果,如图:
上面我们所建立的只能在Node中访问,浏览器中不行,下面建立个浏览器中能访问的,这样才叫服务器吗?我们先创建一个服务器的Js文件,内容如下:
var http=require('http');
var server=http.createServer(function (req,res)
{
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(8080,'127.0.0.1');
console.log('Server running on http://127.0.0.1:8080/');
然后我们在CMD中启动服务,如下所示:
成功。
看完Nodejs搭建服务器是不是觉得很简单了,不着急,更精彩的还在后面等着你,这才只是个开端而已。
*请认真填写需求信息,我们会在24小时内与您取得联系。