每次个人项目更新以后,都需要通过FTP将代码传到服务器,或者登录服务器上运行部署命令,个人的小项目,又不愿意安装Jenkins等复杂管理工具,能不能达到如下图的自动部署流程呢?
每次个人项目更新以后,都需要通过FTP将代码传到服务器,或者登录服务器上运行部署命令,个人的小项目,又不愿意安装Jenkins等复杂管理工具,能不能达到如下图的自动部署流程呢?
我们可能已经遇到了这个问题,webpack已经区别出业务模块和公共模块的代码,为了利用浏览器缓存
我们也添加了hash,然而又有了这些问题:
- 每次打包,公共组件的hash都会变化,浏览器缓存形同虚设
- 打包时间越来越长,特别是在多页面应用的项目中
当然劳动人民的智慧是无限的,为了优化这些问题,可以从这些方面着手
- 公共模块等提出来单独打包,每次只打包业务模块
- 将打包出来的公共模块作为外部依赖重新引入
前面通过使用CommonsChunkPlugin
插件,将公共模块与业务模块分开处理,但是打包输入的文件任然体积比较大,。
浏览器从服务器访问网页时,需要下载这些源文件,文件越大传输时间就越长。 为了提升网页加速速度和减少网络传输流量, 可以对这些资源进行压缩和混淆。
除了通过GZIP以外,还可以对文件本身进行优化,提升网络速度,并且由于压缩后的代码可读性非常差 就算别人下载到网页的代码,也大大增加了代码分析和改造的难度。
Webpack中最常用的压缩和混淆的js插件就是UglifyJsPlugin
,对css使用的比较多的工具则是cssnano
。
在我们实际的项目中,模块大致可以分为业务相关的模块,以及公共基础模块,比如第三方的依赖模块(React, lodash, echart)等。
并不会常常更新,而且相对来说体积都比较大。如果和业务代码一起打包,不容易利用缓存。每次更新都引起重新打包和下载。
如果能够把公用模块和业务模块分开打包,那么对于性能来说,会有不小的提升。
webpack的CommonsChunkPlugin
插件帮我们完美的解决了这个问题。
最近把服务器更新成了阿里云的Centos, 于是倒腾了系列防火墙的东东 ~~
Centos中默认的防火墙并不是iptables, 而是firewall,因此需要自己安装iptables服务。
firewall
服务先查看firewall
的状态
systemctl status firewalld
如果是active的话,关闭再禁用服务
systemctl stop firewalld
systemctl disable firewalld
yum install -y iptables-services
启动服务
systemctl enable iptables
systemctl start iptables
或者
service iptables start
启动指令:service iptables start
重启指令:service iptables restart
关闭指令:service iptables stop
vim /etc/sysconfig/iptables
然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。
具体方法是:
只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save,
因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你
的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,这点必须注意!!!
假设需要开发80端口,那么在配置文件中加入此条命令:
1 | -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT |
或者直接在命令行输入
1 | iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT |
这条命令做了些什么呢?
-A:指定链名
-p:指定协议类型
-d:指定目标地址
–dport:指定目标端口(destination port 目的端口)
–sport:指定源端口(source port 源端口)
-j:指定动作类型
如果需要正对某个IP单独开放某端口:
1 | 如果我需要对内网某机器单独开放mysql端口,应该如下配置: |
如果针对某IP进行全端口开放无限制:1
2-A INPUT -s 192.168.2.1/32 -j ACCEPT
-A OUTPUT -d 192.168.2.1/32 -j ACCEPT
彻底禁止某IP访问:1
2
3
4
5
6
7
8
9#屏蔽单个IP的命令是
iptables -I INPUT -s 47.91.213.10 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可
1 | *filter |
此文仅仅用于技术交流,科学的进行技术交流所用!!!
之前一直使用国外的供应商的VPS,速度已经稳定率都非常的让人担忧。最近发现阿里爸爸提供了海外的ECS,经过测试之后,发现稳定性非常高,延迟维持在50ms以内。正好赶上双十一活动,毫不犹豫的入手了。
想着再次搭建自己SS VPN,便于学习科学技术,发现了以为大神的纯一键化脚本,简单好用,于是记录并且分享一下~~
大神教程地址: https://doub.io/ss-jc42/
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true