vsftpd虚拟用户配置

需求点

每一个站点目录,需要一个有一个独立的FTP用户可以访问,上传及修改代码,如下所示

/home/wwwroot/website1    FTP用户: website1
/home/wwwroot/website2 FTP用户: website2
/home/wwwroot/website3 FTP用户: website3

所需条件

  • 一个新建用户(这个是系统内真实存在的用户)
  • PAM(Pluggable Authentication Modules)(这个来生成多个不同的虚拟用户)

vsftpd 安装

sudo yum install vsftpd

默认centos 6.5下,安装的版本为2.2.2

阅读全文 »

程序员的呐喊小记

摘除书中的几点有意思的

  1. 大学毕业(或者高中毕业)的时候,你会有两个选择:要么继续深造,要么停止学习。
  2. 不想学习,因为学习很难。
  3. 自由派:all errors are warnings, 保守派:all warnings are errors.
  4. 菜鸟才需要代码着色

使用xhprof对PHP代码进行性能分析

xprof PHP扩展安装

参考php常用扩展安装

xhgui 的安装

xhgui 在国内安装会有点小困难,需要折腾以下玩意:

  • composer 国内网络环境比较恶心,你懂的
  • mongodb 服务端,就是数据库
  • mongodb 客户端,就是php扩展
阅读全文 »

Nginx防CC攻击

什么是CC攻击

CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。

简单的Nginx防CC方式

使用nginx提供给我们的limit_req_module模块来限制单个IP的请求次数

实验

Nginx配置

http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
limit_req zone=one burst=1 nodelay;
}
}
阅读全文 »

入手ESL Podcast

关于收集癖好

大学那会儿,在学习到一个新的东西的时候,有一个现在看来非常不好的习惯,就是各种收集资料,把网上别人推荐的东西
全部下载回来,然后再开始学习。花好几个小时收集这些资料的过程是非常兴奋的,感觉像捡到宝似的。但是呢,等收集完就发现没过多久
学习就断了,木有再继续学习下去。木有错,这是病,得治。

怎么治

花钱治,尝试性的买了1个月的ESL Podcast来继续断了又学、学了又断的英语,$10/月,省去天天到处找最新版的下载地址,也不去折腾ESL前
几年出的Podcast 和那些需要money的文档,改掉收集的不良癖好。如果学到后面真的发现很有用,再花$60把原先的都买下来就是了。不折腾。

总结

戒癖保平安,花钱不折腾。望儿富二代,砖头搬起来。

一次laravel权限排错过程

问题

因为是使用vagrant开发,代码目录的挂载情况是这样子的:

~/Documents/dev/meitubar[物理机] <=> /home/wwwroot[vagrant虚拟机]

无论在虚拟里面如何chmod或chown都无法改变app/storage的权限和归属,后面直接用将物理机的目录修改成777,权限终于是变了,但是在Laravel的
app/storage/sessions 里面新生成的文件,照样没有写入权限,表示很无奈。

排查

第一步

首先看下nginx的执行用户是谁

[vagrant@localhost app]$ sudo lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 4253 root 7u IPv4 19510 0t0 TCP *:http (LISTEN)
nginx 4255 www 7u IPv4 19510 0t0 TCP *:http (LISTEN)
nginx 4256 www 7u IPv4 19510 0t0 TCP *:http (LISTEN)
nginx 4257 www 7u IPv4 19510 0t0 TCP *:http (LISTEN)
nginx 4258 www 7u IPv4 19510 0t0 TCP *:http (LISTEN)
nginx 4259 www 7u IPv4 19510 0t0 TCP *:http (LISTEN)

第一个进程为nginx的Master进程,下面5个为Worker进程
5个Worder进程,可以在nginx.conf里面配置 worker_processes 5; 来调整worker的数量
关于master 与 worder 可以参考初探nginx架构

阅读全文 »

14已死15起舞

2014

年底了,是时候总结下这一年来做的事情了。

  • 跳槽到ND
  • meitubar 开发持续进行中,已开发3月有余
  • 开始早起
  • 中断几个月的练字重新开始,早起第一件事就是练字半小时,很有效的防止了拖延症的影响
  • 平潭走了一回
  • Mac book pro retina 入手
  • 养成购买正版软件及游戏的习惯
  • 见了未来的岳父
  • 入手独轮车
  • 开始锻炼【可耻的又断了】
  • 认真把日常所学整理到blog上
  • 学习和使用Laravel,主要是配合meitubar的开发
  • 带她入了前端的深坑
  • PHP 更加熟悉,但是理解不深,一个熟练工罢了
  • 入了Linode JP 服务器,学习与折腾都上到一个层次
  • 被多年不联系的同学,骗走千把块钱,记下,给自己长个记性

2015

稍稍展望下2015

  • 有一个自己的开源项目
  • meitubar 上线并迁移到国内服务器
  • 学习一个编译型的语言,暂定Golang
  • 早起、锻炼、练字,这三项基本国策认真落实
  • Make more money,有钱才能干更多的事,不是么?
  • 到一个更远的地方游一把,她已经都提了N次的济州岛了
  • 买个Mac air + Ipad 给她
  • 提升服务器管理技能
  • 多和朋友联系
  • Web 安全学习,基础的攻防要明白原理
  • 学习算法
  • 捐助贫困儿童,这个想法来源于这篇帖子的11楼:今年你都败了什么提升幸福感的东西?
  • 考驾照
  • 结婚【这个应该是最难的】

一步一个脚印,2015 走起…

vim折腾记

原因

公司机器自从安装了Mac Yosemite后,就略卡了,虽然配置挺OK。平时都用强大的phpstorm,这玩意确实非常棒。但是无奈卡,尝试着先换MacVim来写代码。

插件管理

使用Vim必不可少的是从海量的Vim插件中寻找适合自己的,那么这个时候对vim插件进行管理的插件就非常有必要了。

关于这3个插件管理器的区别可以参考这里:what are the differences between Vundle and NeoBundle?

按照发展的时间排序:pathogen -> vundle -> neobundle
当然了vundle和neobundle都在迅速的发展中,目前使用vundle来管理插件,相当的方便,具体的安装方法参数 上面的github地址,说的都非常清楚了。

阅读全文 »

我的Mac正版软件

使用盗版、使用正版是种态度

用了这么多年盗版,工作后也是时候支持一下正版了,当然还要感谢下琪老大的洗脑。动不动大几百上千的软件,还略略地有点肉疼,先从便宜的软件开始培养使用正版的习惯。赚更多的钱,买更多的正版软件,支持正版。

已购软件

  • Vitamin-R ($0.99 入手)
  • Timing ($9.99 入手)
  • Manico(¥1 入手)
  • One(限免入手)

已购游戏

  • Minecraft($26.95入手)
  • Valve Complete Pack - 2013($24.99)
  • FEZ($2.49入手)
  • Braid($3.99入手)

预购软件

  • Dash
  • 1Password

php扩展分页类

Laravel 4.2官方默认提供的分页类,虽然对bootstrap添加了支持,但是很大的情况下不够用,这时候就需要对Laravel的Pagination进行简单的扩展了。
下面步骤中一、二、五、为关键的步骤,三、四可以参考官方文档
在新建的CodingInk目录下,其实就可以用来放扩展vender目录下的一些第三方库的方法,因为采用一、四、五的步骤后,它就被larave自动加载了。

一、app目录添加新目录

app/
├── CodingInk
│   └── Presenters
│   └── GeneralPresenter.php
├── commands
├── config
├── controllers
├── database
│   ├── migrations
│   └── seeds
├── filters.php
├── lang
├── models
├── routes.php
├── start
│   ├── artisan.php
│   ├── global.php
│   └── local.php
├── storage
│   ├── cache
│   ├── logs
│   ├── meta
│   ├── sessions
│   └── views
├── tests
└── views

这里的CodingInk目录可以自由定义

阅读全文 »