写在最上面。这是基于Scott老师在imooc上讲授的课程。静态网站在线服务器部署和发布需要部署电影网站、公众号、小程序、应用五个项目。这里只写最简单的静态网站部署部署思路1.完成项目2.购买域名,文件,分析一些二级域名做备份3.购买服务器4.ssh远程登录服务器,执行一些安全配置5.搭建服务器Node环境6、Nginx反向代理。持有80端口,负责端口转发7.配置数据库mongodb...安装教程8.部署上线。在本地和服务器上安装git和pm2(pm2负责将git项目更新到服务器)远程登录服务器1、首先ssh远程登录腾讯的超级管理员账号是ubuntu,阿里的是rootsshroot@公网ip2,指定一个钦差杰瑞避免使用超级管理员账号直接操作。添加用户JerrysudoadduserJerry以推广Jerry。sudovisudo打开GUNnano配置文件,在用户权限说明下添加JerryALL=(ALL:ALL)ALL对所有sudo有效;Jerry可以使用任何命令执行操作;Jerry可以与任何团队一起执行操作;此规则适用于所有重新启动ssh服务的命令:servicesshrestart。然后就可以用Jerry登录了(新开一个命令行,这样登录失败就没有退路了):sshJerry@外网IPPs:用新用户Jerry登录。之后都在这个用户下操作。3、ssh免密码登录在本地生成公私钥,保存在本地.ssh文件中。如果没有,请先创建mkdir.ssh。如果文件夹和key都已经存在,可以先备份已有的keymvid_rsaid_rsa_backup。在.ssh目录中执行以下操作:注册ssh-keygen-trsa-b4096-C"your_email@example.com",启用代理eval"$(ssh-agent-s)",添加代理ssh-add~/.ssh/id_rsa服务器生成本地公钥并将其放入服务器的authorized_keys中。使用Jerry登录服务器,在/home/Jerry/.ssh目录下执行上述操作生成密钥。然后创建授权文件viauthorized_keys,vi是vim的缩写,复制要免密码登录服务器的电脑的公钥ip_rsa.pub,chmod600authorized_keys授权服务器,重启ssh服务服务ssh重启。这样就可以通过Jerry进行无密登录,通过root还是需要密码的。报告错误。Hostkeyverificationfailed原因:本地.ssh文件夹下还有一个文件known_hosts,里面记录了所有访问过的电脑(服务器是远程电脑)公钥,公钥有问题报错解决方法:清除对应的公钥信息。最残忍的方法是直接删除文件rm-rfknown_hosts,正确的公钥也会被删除。说得微妙一点就是打开文件找到公钥,然后删除。还有一种方法ssh-keygen-r公网IP,不幸报找不到密钥提高安全级别1,修改服务器默认登录端口号打开配置文件sudovi/etc/ssh/sshd_config,服务器默认端口为22,修改端口二十二。0-1024不用,被系统程序占用,必须root启用,1024-65536可用。将AllowUsersJerry添加到文件的最后一行。顺便确认UseDNSnorestartsshservicesudoservicesshrestart新开命令行登录试试ssh-p39999Jerry@外网IP2,关闭root密码登录sudovi/etc/ssh/sshd_configPermitRootLoginnoPasswordAuthenticationnoPrimitEmptyPasswordsno(confirm,default也没有)3、配置iptables和Fail2Ban加强安全防护,iptables防火墙,Fail2Ban防御动作库,监控系统日志中的行为,并给出相应的操作。可疑行为IP锁...搭建节点生产环境1.搭建节点环境更新系统sudoapt-getupdateinstallsudoapt-getinstallvimopensslbuild-essentiallibssl-devwgetcurlgitinstallnvm。在git上搜索nvm,installscriptcurl-o-下有安装方法https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh|bash或wget-qO-https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh|bash安装某个版本的节点nvminstallv6.9.5或者安装最新的nvminstallnode安装一些全局工具包npmipm2webpackgulpgrunt-cli-g。.2.使用pm2使服务器永久化。可以配置淘宝镜像。直接npm可能会很慢。npm--registry=https://registry.npm.taobao.orginstall-gnpmechofs.inotify.max_user_watches=524288|sudotee-a/etc/sysctl.conf&&sudosysctl-pnpm--registry=https://registry.npm.taobao.orginstall-gcnpminstallpm2cnpmipm2-g或npmipm2-g或npm--registry=https://registry.npm.taobao.orginstall-gpm2Nginx反向代理Nginx持有80端口,负责端口转发更新sudoapt-getupdateinstallnginxsudoapt-getinstallnginx解析二级域名(A记录)从test.segmentfault.com出来配置nginxcd/etc/nginx/conf.d目录下添加一个配置文件sudovitest-3000.conf。检测配置sudonginx-t,重启nginxsudonginx-sreloadupstreamtest{server127.0.0.1:3000;}server{listen80;服务器名称test.segmentfault.com;location/{proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forward-For$proxy_add_x_forwarded_for;proxy_set_headerHOST$http_host;proxy_set_headerX-Nginx-Proxytrue;proxy_passhttp://test;proxy_redirect关闭;}}隐藏浏览器Header信息中的Nginx版本号。在/etc/nginx下配置nginx.conf,在BasicSetting下去掉server_tokenoff的注释。检测配置sudonginx-t,重新加载配置sudoservicenginxreload静态网站部署1.上传项目到git仓库将本地和服务端的id-rsa.pub添加到git本地安装git,创建并上传项目到gitserver安装gitsudoapt-getinstallgitserver测试clone项目gitclonegit@github.com:DoFind/test.git2,配置pm2一键部署项目在本地项目下新增配置文件ecosystem.json并配置在服务器上新建一个发布项目的文件夹/www/test,大致赋予运行test的权限sudochmod777testvi.bashrc注释掉一些代码源.bashrc找到下面几行代码,注释掉out:#如果不是交互式运行,什么都不做#case$-in#*i*);;#*)return;#esac取下项目(从gi??t到服务器)pm2deployecosystem.jsonproductionsetupafterprojectupdaterestartservicepm2deployecosystem.jsonproduction//ecosystem.json内容如下:{"NODE_ENV":"production"}}],"deploy":{"production":{"user":"Jerry","host":["publicIP"],"port":"39999","ref":"origin/master","repo":"git@github.com:DoFind/test.git","path":"/www/test/production","ssh_options":"StrictHostKeyChecking=no","post-deploy":"npminstall--registry=https://registry.npm.taobao.org&&pm2startOrRestartecosystem.json--envproduction","env":{"NODE_ENV":"production"}}}}我自己遇到了一个问题,无法访问部署在阿里云上的站点:ERR_CONNECTION_TIMED_OUT网络诊断的结果是server80端口连接不被接受解决办法:在ECS实例的安全组规则中加入HTTP(80),顺便加HTTPS(443)
