暑假的时候用node.js写了一个爬虫小项目,用的技术有express,bootstrap,animate.css,cheerio等。想着把它部署到服务器上,这个过程有点艰辛,之前一直用的是windows操作系统,但是还是Linux适合做服务器,以后基本上也是用linux,就把服务器换成centos7试试,我是没有任何Linux基础的,之前也没怎么部署过项目,只在windows上放过java web,真的一头雾水,啥也不懂,但是还好我没放弃,翻阅了无数博客最后终于部署成功,所以劝那些不停踩坑几乎绝望的小伙伴一定不要放弃,部署过一次就过了这个坎了,以后就越来越熟悉了。
地域选择离自己近的,机型自己决定,如果只是放点小项目不是很多的话,入门配置应该够了,镜像选择Centos7(学生有优惠记得认证申请),云服务器买完了之后再买域名。
其实这些都有指南的,多在网站首页看看,视频教程啥的也都有,域名购买好了以后,我们要进行网站备案,这个过程有些长,十天半个月的吧差不多,填好各种信息之后,腾讯云计算公司会给你寄一张蓝色的幕布,你需要站在这个幕布前面拍照然后进行上传,具体步骤不展开了,上面会有明确说明的。等域名备案也过了以后,我们需要进行域名解析,干啥的呢,我的理解是需要把服务器和你的域名建立一种对应关系,使得别人输入域名,可以访问到你在这个服务器上放的网站项目等。
云产品里面选择云解析https://console.cloud.tencent.com/cns
点击添加解析,输入你要解析的域名,项目选默认项目就行,这时就会多出一个域名如图所示,点击解析进入解析页面,
解析类型有这些,我觉得应该比较好理解比如解析成www/@ 那么你输入www.andrelia.cn(以我的域名为例)和输入andrelia.cn进入的是一个网站,好理解吧?二级域名就是你可以解析成blog.andrelia.cn(我可以在这个网址上放一个个人博客),解析成java.andrelia.cn(瞎起名的,就是这个网址我想放一个用java写的网站)因为一个域名对应一个项目嘛,那你想在服务器上部署多个项目,又不想多买域名就可以这样做,大概就是这个意思。
然后点击快速添加网站、邮箱解析然后选择网站解析,把你的主机IP地址填上。
你的云服务器信息在导航栏云产品选择云服务器就可以展示出来如上图所示。
这样我们的域名服务器都捣鼓好啦,那么我们就登陆我们的服务器,上图右边有个登录看到没有?点它!
出现这个弹窗,点第一个标准登陆方式就行,然后进入了一个全新的页面,还是要登陆,此时的登陆是登陆你的服务器,之前密码都设过了,用户名不改的话应该是root,填上就行了,另外,IP地址,用户名,域名,服务器密码最好找个地方记下来哦,以后会常用的呦。
登上服务器后大概样子是这样的:
这就是咱的Linux操作系统啦,不同于windows操作系统,Linux没有图形操作界面,然后需要自己敲命令,关于Linux操作系统入门可以去实验楼这个网址去看看https://www.shiyanlou.com/courses/1
Linux道道可多了去了,有兴趣可以多研究一下,然后我们继续。接下来我们来安装宝塔面板,它是干嘛的呢,简单的来说就是简化了一些操作如安装Apache等,它的功能还有很多且非常强大,更多内容去官网了解吧 https://www.bt.cn/
回到上一个黑框框我们要输入命令来安装宝塔面板到我们的服务器上
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完毕后,再继续输入
/etc/init.d/bt default
这是在这个界面发现的命令
然后在黑框框里就会出现你的宝塔面板进入地址啦,同时也告诉你,用户名和密码,输入网址登陆去吧。
进去以后长这样
宝塔面板的密码用户名都可以改的哦,在终端输入
cd /www/server/panel && python tools.py panel testpasswd
testpasswd是你要改的密码,就可以改了,亲测有效,然后宝塔面板的密码用户名也建议记录下来呢。
进去以后就可以在软件商店里面安装各种你需要的东西啦。Apache、nginx选一个,我这里用的是nginx,mysql,node都可以装上,当然你完全可以在黑框框终端里面输入命令来安装node,nginx等,但是宝塔面板安装快捷省事干嘛不用它呢。如果你想使用命令安装各种环境,请自行百度,这里不详尽展开了。
前文提到了两个工具winscp xshell前者用来上传文件项目,后者是一个好用的终端工具,有了它你就不用每次都去浏览器登入黑框框了。
打开xshell,新建会话将你的服务器ip地址用户名密码填上就可以登录。
登录成功就进入终端了,它和之前网页版的黑框是一回事,然后咱们查看一下Node,npm版本
node -v
npm -v
如果出现版本号说明这两个安装没问题,然后咱们再安装pm2,为什么要安装这个,这是个什么东东,学node的都知道,我们开启Node 项目一般是node app.js这样,我们关闭终端,项目就停止了,那么如何让它在终端已经关闭的情况下一直运行呢,这就用到了pm2这个工具,这里分享一个我的另外一个博客介绍pm2的https://blog.csdn.net/Andrelia20171760/article/details/100125286
输入命令下载pm2
npm install pm2@latest -g
下载完了之后输入以下命令
cd /
mkdir var
cd var
mkdir www
cd www
这个意思就是在服务器根目录下建立一个var文件夹然后进入文件夹再建一个www文件夹,然后再进入www文件夹(关于进入文件夹有个小注意事项往后看后面有说明)
咱们新建的这个文件夹用来放项目,其实你起别的名字或者不建文件夹的都可以,只要放个好找的合适的位置就行。
下面就开始项目上传啦,我知道的非常方便的两个方法是1.把项目放在github上使用git clone将项目克隆到www文件夹;2.利用winscp上传。在这里我们讲解第二种方法。
首先我们打开winscp,还是输入用户名IP地址密码进行登录登录进去后,界面大概是这样的
左边这一栏显示你的电脑所有磁盘里的所有文件,右边是服务器的文件,如果想要上传文件到服务器,直接将左边的文件拖到右边即可。
咱们部署的是Node项目,一定记得在上传的时候删除node_modules包,原因你懂的,太大了,耗时过长。
以我上传的过程为例,右边进入刚刚建好的/var/www/,然后我们可以再建一个文件夹命名为NodeProject,然后将左边的除了node_modules以外的文件全部拖到右边去,上传完以后,咱们回到xshell终端,输入
cd NodeProject
进入项目根目录
npm install
下载node_modules包
接下来的关键一步来了,配置nginx反向代理,这是干嘛的呢,以我的水平讲不了很深入,我只能说一个最浅显的,就是通过配置它,来给指定的项目一个指定的端口来访问项目,更深层的解释和功能请自行了解。
所以我们接下来来配置nginx(在宝塔面板里已经装好了nginx)
我们配置它需要编辑一个叫做nginx.conf的文件,这个文件在哪里呢,根据我的研究,好像很多人都不一样,你可以在winscp里面找找,它有查找文件的功能的,我的是在:
在xshell终端中输入命令进入上面的目录
cd /
cd www
cd server
cd nginx
cd conf
现在已经进入conf这个文件夹了,接下来输入的命令表示要编辑conf目录下的nginx.conf
vim nginx.conf
如果不是第一次编辑应该会出现这个,最下面几行代表你要以什么样的方式进入nginx,conf有只读模式,编辑模式等,我们要编辑它所以输入E然后回车
现在展现的就是nginx.conf的内容了,但是此时并不能编辑它,我们需要输入i,输入以后下面会多一行Insert代表插入此时可以进行编辑啦。怎么编辑呢,给个样例:
server_name是你要放项目的域名
root是你项目路径
listen是服务器的端口
proxy_pass 是你node项目里面监听的那个端口号就是app.listen(3001)我的项目监听的是3001就填3001
这几个是必填的,填好之后,我们就可以保存退出了,先按一下Esc键,然后 在最后一行输入:wq
i 编辑
Esc 退出编辑
:q 退出vim编辑器
:wq 保存并退出vim编辑器
现在啥都准备好了,只需要启动项目了,还是在终端中进入项目根目录,这里有个小小的点需要注意
如第一行 centos后面跟着~那么你首先要
cd /
进入服务器根目录
或者
cd /var
直接进入根目录里的var文件夹
但是不能
cd var
以为你给没进入根目录下,找不到var文件夹
那个ls命令可以展示当前文件夹下所有的文件
进入到项目目录后输入
pm2 start app.js
这就开启项目啦,可以在浏览器中输入你的域名进行访问啦。
至此项目部署全部完成。
在终端中输入pm2 list可以查看所有的运行或停止的项目列表
如果你想撤下来这个项目输入 pm2 stop id名即可,更多pm2命令请自行百度。
如果你访问域名出现了502问题,多半是项目代码有错误,有时候可能是忘记下node_modules了,这个还挺常见的,其他原因请自行排查。
看到这里就结束啦,如果你觉得有用可以点个赞,如果你要转载,请先征得我的许可,经过本人同意后请说明转载出处。最后祝大家中秋节快乐,早早变大神,加油!
(PS:听说有个nvm挺好用的,我还没有了解,以后会学学,欢迎大家对此博客进行指正!)