Roam Tang

  • 主页
  • 随笔
  • 归档
  • 我
所有文章 友链 关于我

undefined

  • 主页
  • 随笔
  • 归档
  • 我

基于GitHub/Webhook的简单自动化部署架构

2018-12-09

每次个人项目更新以后,都需要通过FTP将代码传到服务器,或者登录服务器上运行部署命令,个人的小项目,又不愿意安装Jenkins等复杂管理工具,能不能达到如下图的自动部署流程呢?

  • linux
  • deploy
  • nodejs

展开全文 >>

Webpack优化系列(五) --- DllPlugin处理外部依赖

2018-12-02

我们可能已经遇到了这个问题,webpack已经区别出业务模块和公共模块的代码,为了利用浏览器缓存
我们也添加了hash,然而又有了这些问题:

  • 每次打包,公共组件的hash都会变化,浏览器缓存形同虚设
  • 打包时间越来越长,特别是在多页面应用的项目中

当然劳动人民的智慧是无限的,为了优化这些问题,可以从这些方面着手

  • 公共模块等提出来单独打包,每次只打包业务模块
  • 将打包出来的公共模块作为外部依赖重新引入
  • 前端
  • 优化
  • webpack

展开全文 >>

Webpack优化系列(四) --- 减肥:压缩和混淆代码

2018-12-01

前面通过使用CommonsChunkPlugin插件,将公共模块与业务模块分开处理,但是打包输入的文件任然体积比较大,。
浏览器从服务器访问网页时,需要下载这些源文件,文件越大传输时间就越长。 为了提升网页加速速度和减少网络传输流量, 可以对这些资源进行压缩和混淆。

除了通过GZIP以外,还可以对文件本身进行优化,提升网络速度,并且由于压缩后的代码可读性非常差 就算别人下载到网页的代码,也大大增加了代码分析和改造的难度。

Webpack中最常用的压缩和混淆的js插件就是UglifyJsPlugin,对css使用的比较多的工具则是cssnano。

  • 前端
  • 优化
  • webpack

展开全文 >>

Webpack优化系列(三) --- 公共模块与业务模块隔离

2018-12-01

在我们实际的项目中,模块大致可以分为业务相关的模块,以及公共基础模块,比如第三方的依赖模块(React, lodash, echart)等。
并不会常常更新,而且相对来说体积都比较大。如果和业务代码一起打包,不容易利用缓存。每次更新都引起重新打包和下载。
如果能够把公用模块和业务模块分开打包,那么对于性能来说,会有不小的提升。

webpack的CommonsChunkPlugin插件帮我们完美的解决了这个问题。

  • 前端
  • 优化
  • webpack

展开全文 >>

Linux Iptables 防火墙

2018-11-24

最近把服务器更新成了阿里云的Centos, 于是倒腾了系列防火墙的东东 ~~

Centos中默认的防火墙并不是iptables, 而是firewall,因此需要自己安装iptables服务。

禁用原有的firewall服务

先查看firewall的状态

systemctl status firewalld

如果是active的话,关闭再禁用服务

systemctl stop firewalld
systemctl disable firewalld

安装iptables

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
2
3
如果我需要对内网某机器单独开放mysql端口,应该如下配置:  
iptables -A INPUT -s 192.168.2.1 -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -A OUTPUT -d 192.168.2.1 -p tcp -m tcp --sport 3306 -j ACCEPT

如果针对某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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m state --state NEW -m udp --dport 8989 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8989 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11211 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 11212 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8989 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 11211 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 11212 -j ACCEPT
COMMIT
  • Linux
  • iptables
  • 防火墙

展开全文 >>

Linux(centos) FTP 服务配置

2018-11-17

最近需要把服务器从腾讯云,迁移到了阿里云(主要是阿里云11月的两折优惠啦),重新折腾了一下部署方式,启用服务器的FTP功能,做一个小记录。
Linux上最著名的FTP要数vsftpd了,小巧轻快,简单易用。

准备工作

安装vsftpd

1
2
which vsftpd
# /usr/bin/which: no vsftpd in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

如上表示并没有找到任何vsftpd的,那么就运行一下命令安装~

1
yum install vsftpd
  • Linux
  • FTP

展开全文 >>

ShadowsocksR科学上网

2018-11-15

此文仅仅用于技术交流,科学的进行技术交流所用!!!

之前一直使用国外的供应商的VPS,速度已经稳定率都非常的让人担忧。最近发现阿里爸爸提供了海外的ECS,经过测试之后,发现稳定性非常高,延迟维持在50ms以内。正好赶上双十一活动,毫不犹豫的入手了。
想着再次搭建自己SS VPN,便于学习科学技术,发现了以为大神的纯一键化脚本,简单好用,于是记录并且分享一下~~

大神教程地址: https://doub.io/ss-jc42/

  • shadowsocks
  • software

展开全文 >>

« Prev 123…6Next »
© 2023 Roam Tang 沪ICP备2022034513号
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • 前端
  • 优化
  • JavaScript
  • 碎碎念
  • 生活
  • curl
  • linux
  • Css
  • Web
  • Performance
  • 性能
  • github
  • git
  • Linux
  • FTP
  • iptables
  • 防火墙
  • React
  • webpack
  • Mac
  • 快捷键
  • tips
  • Redis
  • 数据库
  • shadowsocks
  • software
  • Vue
  • ExtractTextPlugin
  • MiniCssExtractPlugin
  • Unit Test
  • Ember
  • hexo
  • jQuery
  • deploy
  • nodejs
  • webpack-bundle-analyzer
  • 编辑器
  • 环境
  • tool
  • ES6
  • gitment
  • comment
  • OAuth
  • Http
  • Docker
  • Rails
  • Ruby
  • Vuejs
  • Webpack
  • CSS Module
  • PostCSS
  • Karma
  • chai
  • mocha
  • enzyme
  • sinon
  • React Router
  • NodeJs
  • PhantomJs
  • Font-Awesome
  • Sublime
  • 柯里化
  • Vim
  • Syntastic

    缺失模块。
    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
    

  • 友情链接1
  • 友情链接2
  • 友情链接3
  • 友情链接4
  • 友情链接5
  • 友情链接6
热爱生活的小光头!
2013年毕业于上海市同济大学软件工程学院,
现就职于SAP!