前段时间领了一个阿里免费的半年服务器,一直想用来搞点小东西。时至今日,总算勉强搞定了。
在这儿写一下总结,把遇到的问题都作一个概括。node
对于没钱的学生党阿里云有推出9.9一个月的套餐,对于不想花太多钱去体验的我的,阿里云有免费半年的名额(这个须要抢)。貌似腾讯云和百度云也有相似的活动。
放一个阿里云半年免费链接:
https://free.aliyun.com/?spm=...nginx
然而个人是花了9块钱买的半年(这个不用抢),可是链接我已经找不到了。。。。mongodb
开通服务器的时候根据本身的喜爱可选择不一样才操做系统(本人选的是windows server 2008)。其余服务器方面的配置就不在此赘述了,阿里云官网上有对应的教程。数据库
在安装node以前,被迫安装了一个360浏览器(服务器上的IE实在是受不了),而后去nodejs官网下载对应的版本。express
下载node-8.1.2 32 位 版本安装失败,提示此版本只支持win7以及window server 2008 R2以上
本服务器恰好比R2低
下载6.11.0也是提示相同的内容
下载4.4.4 版本安装成功npm
PS: 下载的都是.msiwindows
服务器版本为windows server 2008与windows server 2008 R2的区别在于一个是基区windows vista 而R8基于windows7浏览器
因此在选择mongodb安装包时,选择windows vista版本(只有32位)服务器
安装的版本为: mongodb-win32-i386-3.2.16-signedsession
安装完毕以后 在monodb安装目录下的bin文件下 执行cmd
mongod --dbpath "E:\mongoData"
此处的文件路径是你要作为启动的数据库的存储路径(需提早建立)
报错:
Wed May 16 16:44:35 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
表示32bit版本的mongodb默认不开journal记录,若是你须要的话,须要在运行时加上--journal开关
因而从新输入cmd命令:
mongod --dbpath "E:mongodbData" --journal
报另外一个错:
2017-07-31T13:37:49.022+0800 I STORAGE [initandlisten] exception in initAndList en: 28663 Cannot start server. The default storage engine 'wiredTiger' is not av ailable with this build of mongod. Please specify a different storage engine exp licitly, e.g. --storageEngine=mmapv1., terminating
wiredTiger 储存启动引擎在32位上不被支持,须要将储存启动引擎设置为mmapv1或者将你的系统升级为64位
因而输入命令
E:\mongodb\bin>mongod --dbpath "E:\mongodbData" --storageEngine=mmapv1
程序成功运行,在浏览器输入localhost:27017显示以下字段:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
将本身以前作得一个nodejs+angular的项目copy到服务器上尝试运行,没想到直接成功了。
本来觉得node项目能跑起来就万事大吉,然而仍是太年轻。
跑起来只能经过localhost访问,输入公网IP一点卵用的没有,因而去查了一下node http模块的文档,发现:
因而改了改打码:
server.listen(port,host); server.on('error', onError); server.on('listening', onListening);
prot = '你想要的端口',host = '你对应的公网IP';
结果运行时报错:
E:\ermu-blog>npm start > blog@0.0.0 start E:\ermu-blog > node ./bin/www express-session deprecated undefined resave option; provide resave option app.js :24:9 express-session deprecated undefined saveUninitialized option; provide saveUnini tialized option app.js:24:9 E:\ermu-blog E:\ermu-blog\bin\www:76 throw error; ^ Error: listen EADDRNOTAVAIL 39.108.188.57:3000 at Object.exports._errnoException (util.js:870:11) at exports._exceptionWithHostPort (util.js:893:20) at Server._listen2 (net.js:1221:19) at listen (net.js:1270:10) at net.js:1379:9 at nextTickCallbackWith3Args (node.js:453:9) at process._tickCallback (node.js:359:17) at Function.Module.runMain (module.js:443:11) at startup (node.js:139:18) at node.js:968:3
EADDRNOTAVAIL 表示 error address not available
地址没法获取
将host改成本服务器的ip地址以后,能成功打开。
因而得出一个结论:
须要经过一种手段来使项目支持公网IP访问,这种手段————就是ngxin反向代理
随便去下载一个ngxin,而后在ngxin/conf文件夹下新建一个node.conf。
upstream nodejs { server 127.0.0.1:3000; keepalive 64; } server { listen 80; server_name '';#此处为你的公网IP location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://nodejs; } }
而后在同级目录下的nginx.conf中include。
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Credentials true; add_header Access-Control-Allow-Methods GET,POST,PUT; add_header Access-Control-Allow-Headers accept,content-type,x-iamservice-appid,x-iamservice-appkey; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include node.conf; }
node项目仍是在localhost上运行,mongodb也开启,在使用localhost:3000能访问项目的状况下,双击执行ngxin或者在ngxin目录下打开cmd执行nginx.exe。
而后使用公网IP访问,很是完美。(就是网速有点慢,还偶尔会重定向,多是ngxin配置有问题);
在万网上随便买了一个域名,online后缀,很便宜 7块钱能用一年呢。
而后配置一下域名解析,这一步也很完美。
可是!过几天再去访问的的域名返现没法访问了。
查了下缘由是由于我没有备案(我去还要备案。。。);
而后照着教程准备备案了,结果输入域名时提示域名后缀没法提交备案。
才发现又踩了一个坑 online后缀不支持备案....不能备案又不能用,还不能转卖,这个域名买了有毛用啊。
还有部分域名也不能备案。可参考
https://www.zhihu.com/questio... 固然最好仍是去工信部查查
附上网站链接: http://ermuit.top/#/home (由于没有备案已没法访问)