最近世道动荡,在前往高级的路上走出了车到山前必有路,睁眼一看是绝路的感受。因此就索性瞎折腾一下。领了一个服务器,开启了一个伪全栈的运维之路,各类服务线上部署。javascript
腾讯免费七天,阿里要钱,山里娃就在亚马逊AWS申请了一个可无偿使用一年的EC2云服务器,申请连接,步骤很简单,跟着提示一步一步整就是,惟一要提醒的就是,须要准备一张信用卡,一张能支持外汇($)结算的最好。
申请到资格后,选择你的云服务,选择对应的区域,你须要给服务实例选择一个操做系统,linux,windows经常使用的均可选(注意观察,咱们只选免费的,很重要,很重要, 很重要)。而后配置安全组,bla,bla,....,而后启动实例。保存好你的密钥,而后打开ssh终端链接实例。操做步骤能够打开管理面板,选择实例-》选择实例-》链接-》根据面板提示链接。css
登陆进服务后,就能够开启一段服务器配置之旅了。若是你和我同样,对Linux经常使用的命令行还不熟悉,你可能须要这样一份手册:Linux经常使用命令大全。我选择的镜像是Ubuntu,若是你和我选择的同样,那么下面的命令你能够直接用,若是是redhat或者centos,有些命令,你须要本身去探索。先把一些经常使用的工具安装上:html
sudo apt-get install unzip // 解压工具 sudo apt-get install git // git工具 sudo apt-get install wget // 下载工具 sudo apt-get install nginx // 下载nginx
node安装是一个相对简单的过程,你能够直接查看官网,而后按照提示一步一步进行。很是重要的一步就,你须要创建你命令的软连接。在这里我列出本身的操做步骤:
-下载:sudo wget https://nodejs.org/download/r...前端
centos可参考连接,同时也适用于ubuntu,如今使用wget下载jdk有点麻烦(须要鉴权),因此我是本地下载,而后scp上传上去的,如下是个人操做:java
mysql的安装复杂一点,折腾了本身大量时间,在redhat8上没有安装成功mysql5,也迫使我把镜像换成了ubuntu,曲折的路就很少说了,直接说顺利的。若是直接使用apt-get install mysql安装,默认是安装mysql8,因此在开启安装前,须要借助mysql-apt-config增长一段配置,具体安装步骤,请查考前人栽下的树:Ubuntu 16.04安装MySQL:经过APT方式安装。
安装好以后,开启mysql,并登陆node
至此,本地连接已经ok,可是mysql远程连接数据库仍然报无发链接。缘由不少,这里说起两个我遇到的。mysql
第一种很简单,去EC2面板上修改你正在用的安全策略,加入3306端口,并启用。
第二种稍微麻烦一点,你须要以下操做:react
关于sql批量导入 linux
安装nginx,无非就想解决静态资源访问,反向代理,gzip,负载均衡问题,因为我这是初级使用,没有涉及到负载均衡的情形。nginx
前面已经安装了nginx,看是否安装成功,可以使用命令运行:
sudo systemctl start nginx.service // 其余经常使用命令 sudo systemctl stop nginx.service sudo systemctl reload nginx.service sudo systemctl status nginx.service
而后经过ip访问80端口,若是顺利能够看到,可是通常都是不顺利,显示403。
可参考链接:nginx权限不足形成的访问问题,我遇到的是第四项,即SELinux。
我要代理的静态资源是一个react框架打包的网站,话很少说,直接列出个人配置:
server { listen 80; listen [::]:80; server_name h5.closertb.site; index index.html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { root /home/static; autoindex on; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
个人后端服务是基于tomcat,端口为8080。
server { listen 80; listen [::]:80; server_name server.closertb.site; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
门户网站是一个基于nextJs的ssr渲染,因此须要代理一个node服务,这个服务运行在8500端口
server { listen 80; listen [::]:80; server_name client.closertb.site; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8500; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
关于nginx代理的一些常识,从上面三段配置,咱们能够看到,咱们都是对80端口进行了代理,但能够设置不一样类别,指向不一样资源,区分点就在于server_name,经过此来决定返回代理的内容。代理上面也列出了两种,静态资源的代理(root)和服务的代理(proxy_pass)。
为何都要用80端口?
为何要开启gzip?由于虽然前端框架的不断侵蚀和资源的丰富,虽然网络更快了,打包压缩策略也用了,但100K以上的资源加载确实很慢,因此咱们还得借助gzip来加快资源的获取。话很少说,上图本身感觉:
开启gzip前
开启gzip后
看完上面两幅图,你就会以为这是肉眼可见的差异,提速增效太明显了
# Gzip Settings gzip on; gzip_disable "msie6"; gzip_min_length 10k; gzip_vary on; # gzip_proxied any; gzip_comp_level 3; 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;
至此,一个纯前端服务,纯后端服务,SSR渲染服务就启动完成,访问相应的域名便可查看。
其实,这整篇都是一些我的杂七杂八的知识整理,作个笔记,方便之后翻阅。但下面的碎片知识,才是真的杂,包括一些不经常使用的命令
暂时就列出这么多吧,公司快要挂了,是时候开始准备面试了,Fighting。