作者归档:admin

PHP框架之 CodeIgniter

官网:www.codeigniter.com   中文网:http://codeigniter.org.cn/

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架

那么 CodeIgniter 就是你所需要的,如果…

  • 你想要一个小巧的框架。
  • 你需要出色的性能。
  • 你需要广泛兼容标准主机上的各种 PHP 版本和配置。
  • 你想要一个几乎只需 0 配置的框架。
  • 你想要一个不需使用命令行的框架。
  • 你想要一个不需坚守限制性编码规则的框架。
  • 你对 PEAR 这种大规模集成类库不感兴趣。
  • 你不希望被迫学习一门模板语言(虽然可以选择你喜欢的模板解析器)。
  • 你不喜欢复杂,热爱简单。
  • 你需要清晰、完善的文档。

继续阅读

在Windows 2003下硬盘安装CentOS 6/7

下载:http://download.gna.org/grub4dos/grub4dos-0.4.3pre2.zip
解压到C:\
在boot.ini里最后一行添加:C:\GRLDR="Grub"

下载:
CentOS 6:http://mirrors.aliyun.com/centos/6/isos/x86_64/CentOS-6.5-x86_64-minimal.iso
CentOS 7:http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7.0-1406-x86_64-NetInstall.iso
解压到FAT32分区根目录,注意看是第几个分区
比如hd0,2 则表示第三个主分区为FAT32
方法1:
修改:menu.lst
添加:
RHEL6/CentOS6专用:
title Install-RHEL6/CentOS6
kernel (hd0,2)/isolinux/vmlinuz
initrd (hd0,2)/isolinux/initrd.img
boot

RHEL7/CentOS7专用:
title Install-RHEL7/CentOS7
root (hd0,2)
kernel /isolinux/vmlinuz initrd=initrd.img inst.stage2=hd:/dev/xvda3 quiet
initrd /isolinux/initrd.img
boot

方法2:
重启系统,选择:”Grub”.
再选择:find and boot linux with menu.lst already install
接着会出现和安装linux一样的grub的编辑屏幕,输入如下:
kernel (hd0,2)/isolinux/vmlinuz
回车会出现
[Linux-bzIMage, setup=0x2c00, size=0x1e0300]
接着输入:
initrd (hd0,2)/isolinux/initrd.img
回车又会出现
[Linux-initrd@0x2e17d000,0x1d529d5 bytes]
再输入
boot
再回车即进入centos 6的安装阶段了。

注意选择:URL安装
配置好网络,使其可以访问互联网
填入地址:http://mirrors.163.com/centos/6/os/x86_64/
或者:http://mirrors.aliyun.com/centos/6/os/x86_64/

Linux 开机提示kernel panic – not syncing: Attempted to kill init! 解决方法:

系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet” 一栏,按‘e’键进入编辑,在末尾增加enforcing=0,即:

kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet enforcing=0

按‘b’键继续引导,OK顺利前进。

也有可能是selinux配置不当造成开不机,解决方法:在启动内核的参数上增加 selinux=0 来关闭selinux

systemd详解

CentOS 6和之前版本采用SysVinit的系统启动进程管理体系,一般用户都可通过在/etc/inittab文件的配置,来个性化自己的系统启动序列。但也经常会由于特殊环境的硬件等关系问题,造成其串行的启动进程控制流,因为可能任务的阻塞而影响启动过程。
CentOS 7开始使用SystemD,所以我们必须要了解SystemD.

详细介绍请参阅: RedHat 产品文档
使用systemd管理服务: Chapter 6. Managing Services with systemd

一、 SystemD起源
SystemD是Linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布。Lennart是redhat员工,但SystemD不是redhat项目。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。
SystemD这一名字源于Unix中的一个惯例:在Unix中常以“d”作为系统守护进程(英语:daemon,亦称后台进程)的后缀标识。除此以外,SystemD亦是借代英文术语D体系,而这一术语即是用于描述一个人具有快速地适应环境并解决困难的能力。
SystemD被设计用来改进SysVinit的缺点,与Ubuntu的upstart形成技术竞争。SystemD的很多概念来源于苹果的launchd。目标是尽可能启动更少进程;尽可能将更多进程并行启动(这是性能优于SysVinit的理念基础)。SystemD尽可能减少对Shell脚本的依赖。传统SysVinit使用inittab来决定运行哪些Shell脚本,大量使用Shell脚本被认为是效率低下无法并行的原因。SystemD使用了Linux专属技术,不再顾及POSIX兼容,只要能满足社会变革的需要,突破一些可能过时的技术约束,这也是当今创信理念的需要,相信市场会给出评判。
与多数发行版使用的System V风格init相比,SystemD采用了以下新技术:
●    采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;
●    用cgroups代替PID来追踪进程,因此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
从设计构思上说,由于SystemD使用了cgroup与fanotify等组件以实现其特性,所以只适用于Linux。有鉴于此,基于kFreeBSD分支的软件源无法纳入SystemD。

二、 SystemD 的工具
用SystemD初始化工具(init tool)来启动系统。SystemD 含了自己的配置和诊断工具,在使用它处理系统启动问题时用到的技巧不同于SysVinit。
SystemD初始化工具虽面世不久,却已成为一些发行版中默认使用的初始化工具;一些其他的发行版把它包含进来,作为upstart和SysVinit的替代品。由于它与upstart和SysVinit的兼容特性,在使用这两个初始化工具的发行版里面熟悉的命令与技巧也适用于SystemD。但是,为了能够真正利用好这个新的初始化系统的功能,系统管理员也需要了解SystemD的工具与参数。
给SystemD传达命令的主要工具是systemctl,它是一个命令行程序。该工具在改变配置文件或重新启动后台程序时需要root权限,但即使是非root用户也能下达一些诊断的命令。如果在启动该命令时不加任何参数,会看到一个系统启动时执行任务的“单位(unit)”列表,包括挂载及检测磁盘、启动后台服务及配置硬件。
服务(service)单位是最重要的一类单位之一,因它管理着后台服务,而在使用SysVinit的发行版里则一般使用初始化脚本来启动这些服务。
挂载(mount)与自动挂载(automount)单位用来挂载文件系统。
套接字(socket)单位用来创建套接字,并在访问套接字后,立即利用依赖关系间接地启动另一单位。
可使用参数让systemctl只列出某个类型的单位,如所有的服务单位:
systemctl –type=service
SystemD自动将其输出结果递交给less显示,列表中:
第一栏是单位的名字;
第二栏则表示该单位的定义是否已由SystemD正确加载。
第三栏则为该单位是否正在运行。如果使用了-a参数,那么该程序将仅显示非正在运行的单位,即已安装但并未在启动时使用的单位,同时也包含引导系统未能正常加载的单位文件。
第四栏则给出了当前状态:“exited”表示该进程已经无任何错误地完成,这种情况适用于,诸如进程在启动后并不在后台继续运行的情况,例如,在系统启动时由于考虑到兼容性因素执行在SysVinit里面常用的/etc/rc.d/rc.local文件的服务单位。“Running”表示正在后台运行的服务,如cron、dbus、sshd和udev。
第五栏是对该单位的描述。标有“LSB”或“SYSV”的单位已由systemd自动创建以管理传统启动脚本。
不能启动或启动后崩溃的服务在第四栏中用红色标为“failed”。可用如下命令来察看该服务是何时崩溃的以及在服务程序结束后提供了什么错误代码:
systemctl status ntpd.service
systemctl会列出包含文本终端的登录进程(agetty)的服务型单位。因为SystemD不同于Sysvinit,它会像管理普通的后台服务一样以服务单位的形式对这些进程进行管理。

1. SystemD服务管理
systemctl is-enabled .service                   #查询服务是否开机启动
sudo systemctl enable .service                  #开机运行服务
sudo systemctl disable .service                 #取消开机运行
sudo systemctl start .service                   #启动服务
sudo systemctl stop .service                    #停止服务
sudo systemctl restart .service                 #重启服务
sudo systemctl reload .service                  #重新加载服务配置文件
systemctl status .service                       #查询服务运行状态
systemctl –failed                              #显示启动失败的服务

2. 开机模块加载
/etc/modules-load.d/.conf,相当于原rc.conf中的MODULES变量
模块黑名单仍在/etc/modprobe.d/下,如blacklist.conf:

3. Locale
/etc/locale.conf,相当于原rc.conf中的LOCALE

4. 日志服务
systemd自带日志服务,参考systemd Journal
可以删除syslog-ng了

5. 主机名
/etc/hostname,相当于原来rc.conf中的HOSTNAME变量

6. 网络
还是用NetworkManager工具

三、 单位文件与目标(target)

1. 单位的处理
创建单位用的系统配置文件位于/lib/systemd/system/,但/etc/systemd/system目录下的同名文件会优先于前者。
单位文件的定义通常比传统的SysVinit脚本要短得多。例如,用于通过NTP来同步网络时间的服务只有短短几行:
1  [Unit]
2  Description=Network Time Service
3
4  [Service]
5  ExecStart=/usr/bin/ntpd -n -u ntp:ntp -g
6
7  [Install]
8  WantedBy=multi-user.target
所有的单位文件都包含由[Unit]开头的一节,其中包含一般设置与简短介绍。
[Service]一节含有针对该服务要进行的任务的指定设置。
[Install]一节包含了SystemD在(反)安装时要解释的说明。

2. 目标
“目标”单位的概念与SysVinit的运行级别相似;实际上,为考虑兼容性,SystemD甚至能够识别与目标对应的运行级别名称。所以,可在引导装载程序中的kernel一行中加入single这个参数;SystemD就会激活rescue.target,提供一个相当于单用户模式的最小化界面。
在SystemD中,多用户模式(即非图形化登录启动系统的模式)由multi-user.target表示,可以通过下面这个链接来将其设为默认启动目标:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
如果此后确实需要默认启动图形化登录界面,可用同样的方式来将graphical.target设为默认目标。这等同于传统初始化工具的运行级别5。也可以在引导装载程序中为kernel指定想要启动的目标单位:
systemd.unit=multi-user.target
如想在操作过程中激活一个不同的目标单位,可用systemctl的isolate命令(需要root权限):
systemctl isolate rescue.target
切换为rescue目标对于管理任务来说很有用,SystemD这时会停止所有的用户登录与后台服务,只有系统服务在运行。有时,甚至这些服务也需要停止并重新安装,这时可使用emergency.target来进入紧急模式(emergency mode),这时只有命令提示符的进程以及内核线程在运行。
3. 运行级别
SystemD用target替代了runlevel的概念,提供了更大的灵活性,如可以继承一个已有的target,并添加其它服务,来创建自己的target。
sudo systemctl list-units –type=target              #查询当前target
sudo systemctl isolate graphical.target              #改变当前target,重启无效
sudo systemctl enable multi-user.target              #改变启动时默认target
sudo systemctl enable kdm.service                    #graphical是默认target,指定使用的display manager
4. 其他
sudo systemctl reboot #systemctl还有系统关机、重启、挂起等功能sudo systemctl suspend

Linux(Centos)防DDOS攻击软件-DDoS-Deflate

Linux(Centos)防DDOS攻击软件-DDoS-Deflate

(D)DoS-Deflate是一款免费的用来防御和减轻DDoS攻击。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.
DDoS-Deflate安装及配置
1、安装

wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

2、配置

配置文件是 /usr/local/ddos/ddos.conf ,默认有如下配置
FREQ=1
NO_OF_CONNECTIONS=150
APF_BAN=0
KILL=1
EMAIL_TO="test@qq.com"
BAN_PERIOD=600

配置参数的解释:

FREQ=1 ;检测时间间隔,默认是一分钟,如果修改这个要重新设置Cron Job
NO_OF_CONNECTIONS=150 ;最大连接数,超过这个就会禁止IP
APF_BAN=1 ;使用APF设置为1,使用iptables设置为0
KILL=1 ;是否禁止IP
EMAIL_TO=”root” ;邮件通知,写上接收邮件的邮箱
BAN_PERIOD=600 ;禁止IP时长,默认是600秒

IP地址白名单:/usr/local/ddos/ignore.ip.list
卸载

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos

查看IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

可以参考:
http://www.huzs.top/?p=1526

来做测试,看能否封掉IP.
iptables -L -n

如下图,192.168.1.200就被封掉了:
20140528003426

Centos 下实时查看网卡流量的工具 – nload

nload 的官方网站为: http://www.roland-riegel.de/nload/

在 CentOS 下,nload 目前就只能基于源代码进行编译安装了。默认安装的 CentOS ,要编译安装 nload 时,可能还需要安装几个需要的软件包:gcc 、gcc-c++ 和 ncurses-devel

yum install gcc gcc-c++ ncurses-devel
wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz
tar xvf nload-0.7.4.tar.gz
cd nload-0.7.4
./configure
make
make install

完成后,nload 被安装在了 /usr/local/bin/nload 。

用图形方式查看实时流量:
nload -t 200 -i 1024 -o 128 -u H

查看第一网卡的流量情况,显示的是实时的流量图
nload eth0

同时查看多个网卡的流量情况。
nload -m

效果是这样的:
nload

参数说明:
Options:
-a period Sets the length in seconds of the time window for average calculation. Default is 300.
-a period 设置在时间窗口平均计算秒的长度。默认值是300。

-i max_scaling Specifies the 100% mark in kBit/s of the graph indicating the incoming bandwidth usage. Ignored if max_scaling is 0 or the switch -m is given. Default is 10240.
-i max_scaling 指定了100%标记在图中的kbit / s的指示传入的带宽使用率。如果max_scaling为0或开关-m时给予忽略。默认值是10240。

-m Show multiple devices at a time; no traffic graphs.
-m 显示多个设备同时使用;没有流量图。

-o max_scaling Same as -i but for the graph indicating the outgoing bandwidth usage. Default is 10240.
-o max_scaling 相同的AS-I,但对于曲线图,显示出带宽使用。默认值是10240。

-t interval Determines the refresh interval of the display in milliseconds. Default is 500.
-t interval 确定以毫秒为单位显示的刷新间隔。默认值是500。

-u h|b|k|m|g Sets the type of unit used for the display of traffic numbers.
-u h|b|k|m|g 设置用于流量数字的显示单元的类型。
H|B|K|M|G h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc. H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc. Default is h.
-U h|b|k|m|g Same as -u, but for a total amount of data (without “/s”).

-U h|b|k|m|g 同-U,但是对于数据的总量(没有“/秒”)。
H|B|K|M|G Default is H.

devices Network devices to use. Default is to use all auto-detected devices.
devices 网络设备使用。默认值是使用所有自动检测到的设备。

例子: nload -t 200 -i 1024 -o 128 -U M

The options above can also be changed at run time by pressing the ‘F2’ key.
上面的选项也可以在运行时按“F2”键改变。
实时查看网卡流量的工具除了 nload 之外,还有 slurm 以及 systat 等。