从零开始构建部署上线Node.js+Express+Bootstrap+Jade响应式网站应用—RSPT丨留学生活第一站(一)
从零开始构建部署上线Node.js+Express+Bootstrap+Jade响应式网站应用—RSPT丨留学生活第一站(二)
从零开始构建部署上线node.js+Express+Bootstrap+Jade响应式网站应用—RSPT丨留学生活第一站(三)
从零开始构建部署上线Node.js+Express+Bootstrap+Jade响应式网站应用—RSPT丨留学生活第一站(四)
从零开始构建部署上线Node.js+Express+Bootstrap+Jade响应式网站应用—RSPT丨留学生活第一站(五)
从零开始构建部署上线Node.js+Express+Bootstrap+Jade响应式网站应用—RSPT丨留学生活第一站(六)
服务器配置生产环境所需要的步骤大致为:
看着这个图,Scott老师有一段精彩的故事诠释它:
故事还得从左下脚的角落开始,一把椅子,一台桌子,一个电脑,可能还有一罐红牛,一包纸巾,我们就开始了白天当黑夜,黑夜当白天的编程之旅,代码写的死去活来,bug敲的痛不欲生,总算在七七四九天之后,我们终于在电脑上借助nodejs开发出了我们一个静态网站,电影网站,一个给狗狗配音的手机app,一个装修房子的微信小程序,还有一个可以回复和分享和看电影的微信公众号。然而这些应用都是跑在本地电脑上,谁也看不到,谁也用不了,左思右想,还是得把这些自己辛辛苦苦生出来的孩子放在网上给别人看,好歹也算是自己的一次创业经历。
于是我们开始迈出了第一步,那就是先为这这五个应用购买一个域名,虽然购买五个也行,但是看看北京的房价,还是只买一个吧,一个域名也可以分出五个二级域名来使用嘛,创业总是要省着点的嘛。购买域名之后,我们需要给这个域名备案,毕竟还是得接受国家监管的嘛,不备案不是中国人,哼~。
接下来我们要迈出第二步,把用来买零食的钱都用来买一台服务器,有了这个服务器,我们总算给这些孩子们提供了一个家了,但是现在家徒四壁,啥都没有,我们的五个孩子嗷嗷待哺,别说婴儿车,安全座椅,连奶都没有。
于是我们开始迈出第三步,从我们的小角落通过ssh通道,连接上我们的服务器,配置用户的权限,安装mongodb数据库,配置nodejs环境,配置nginx前置数,为了不让孩子们受到伤害,我们还得给服务器加装Iptables和FailtoBan这些安全防护措施,为了不让大家来看我们熊孩子的时候,泄露个人信息或者是伤害到服务器的数据,我们还得配置SSL证书,所有的人都得顶着安全帽,带着白口罩来咱们家,为了我们自己不会轻易的给孩子喂错奶,换错纸尿布,我们还得对我们本地到服务器ssh通道进行加固防护,这有我们自己才有权限去照顾孩子,这个网上的家算是搭好了,算不上精装修,但是也足够住了。但是孩子们现在都在我们本地的电脑上,离新家还有两万五千公里,ssh通道也太小,如果老是借来借去的,也是算是麻烦,而且还不够安全。
于是我们迈出第四步,找一个寄养的家。什么寄养的家,不就是一个托儿所嘛,好吧,我承认是一个非常安全的托儿所,我们找了一个提供私有仓库的托儿所,从我们本地电脑把五个孩子一个一个扔过去,把五个孩子存到那,如果有需要要让他们去到服务器里面的时候,我们就直接通知服务器到托儿所接孩子们,我们就再也不用从本地一个字节一个字节的传送他们了。然后问题马上就来了,用什么工具接孩子,没有驾驶员怎么办呢,怎么才能从通知驾驶员从服务器里接孩子呢?想一想都头疼。
于是我们迈出第五步,在本地和服务器上都安装git软件,都安装pm2,这个pm2不是北京天上的那个pm2.我们通过git来把孩子传送到私有仓库,让服务器通过git来下载孩子,至于pm2就是这个驾驶员兼职保姆,其实就是个老司机,我们本地通知服务器上的pm2,让他去私有仓库(托儿所)用git把孩子运到新家后,pm2会去协调node进程,培养孩子们各自发挥自己的聪明才智,跟外面的朋友们进行各种互动,可是孩子们太自私了,都想抢占80端口。
于是我们被逼迈出了第六步,开始分家,我们按照老大、老二、老三的顺序,分别给他们分配3000端口、3001端口、3002端口、3003端口、3004端口,然后让nginx来当服务器的大门总管,由他一个人持有80端口,所有想要访问新房的客人,都得先过nginx这一关,有他来识别访客,如果访客来看老二的,也就是电影网站,我们就把这个访客转发到3001端口,以此类推下去。服务器的大门总管nginx一眼便识访客们的真正目的,首先通过SSL证书跟访客进行握手交流,沟通认证之后,便会把访客的请求转交给后台的300X端口,由nodejs来全部接手这个请求。
端口总算是分好了,可是问题又来了,访客们都蒙圈了,不知道咱们新家在哪里,这时候我们才想起来最后一件事,那就忘了给他们地址了,于是我们气喘吁吁的跑到购买域名的服务商,去把域名的DNS记录修改后,并且进行解析指向,给5个孩子分别分配了五个二级域名,访客们就可以通过这五个域名,准确的找到这五个孩子们后发糖吃了。
养一个家不容易,养一个有孩子的家更难,事情到这里也远远没有结束,我们还有太多的育儿心得在接下来的学习中,这次部署方案并不是唯一的方式,也未必是最优,不同的产品的形态与运维方案有完全不同的操作方式。
我选购的域名商和服务器商是: 阿里云
官网地址:https://cn.aliyun.com/
进去后注册账号,个人实名验证,然后去选择服务器的选择。根据阿里云的购买指南和网上的教程,买一个服务器,一个域名,然后去备案,备案部分稍微有点麻烦,但只需要按照官方指示,也是很容易通过的。
使用mac电脑,我自己的是黑苹果,虚拟机上安装OS系统,然后进行操作。mac系统已经内置了windows下的 putty 软件功能,下面就说一下具体使用方法。
mac系统下打开的终端页面,输入如下代码:
ssh user@hostname
注:上边代码为固定格式,其中
user为 linux 服务器的管理员名称
hostname 为 linux 服务器的IP
如: ssh [email protected]
如此就可以像windows下的putty工具一样远程登录管理你的linux服务器了。这里可以用ssh root@hostname 登陆,因为root是默认最高管理员。
接下来就是输入密码(命令行输密码,不会显示,光标都不会动,但只要准确输入就好),确定后就可以远程登录到咱们的服务器了。
登录进ssh root@hostname后,我们需要配置root权限账号,指定钦差大臣去完成管理,不会动到一些敏感文件。
adduser rspt_manger
命令进入rspt_manger
进行升权:gpasswd -a rspt_manager sudo
sudo visudo
,然后添加一句话,例如: shift+y
命令进入保存,回车退出ssh [email protected]
来登录服务器了配置通过SSH实现无密码登录
ssh-keygen -t rsa -b 4096 -C "邮箱"
一路回车,各种提示按默认不要改,密码可以跳过,等待执行完毕。然后执行:ls ~/.ssh
可以看到两个密钥文件:id_rsa(私钥),id_rsa.pub(公钥)
然后输入:eval "$(ssh-agent -s)"
把ssh代理跑起来。
将ssh的key加入到代理中:ssh-add ~/.ssh/id_rsa
ssh-keygen -t rsa -b 4096 -C "邮箱"
eval "$(ssh-agent -s)"
把ssh代理跑起来。 ssh-add ~/.ssh/id_rsa
cd ~/.ssh
cat -n /home/cssor/.ssh/id_rsa.pub >> authorized_keys
#将公钥内容加入到authorized_keys文件,没有则新建一个就行。例如:
然后通过 chmod 600 authorized_keys
把这个文件的权限给修改下。
在通过:sudo service ssh restart
把这个ssh服务重启。
vi ~/.ssh/config
注意事项
公钥要放在登录服务器所用的账号的家目录下,比如你用 abc登录远程服务器,就要把公钥 放到 /home/abc/.ssh/
下, authorized_keys文件也是在这个目录下。
第四部分会接着继续实现线上部署~~~~