MAC上使用LNMP随笔

准备工作

新版的 Mac OS 内置了Apache 和 PHP,我的系统版本是OS X 10.9.3,可以通过以下命令查看Apache和PHP的版本号:

httpd -v

	Server version: Apache/2.2.26 (Unix)
	Server built:   Dec 10 2013 22:09:38

php --version

	PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15)
	Copyright (c) 1997-2013 The PHP Group
	Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

因为我们要自己动手来安装 Nginx,因此首先来关闭系统自带的apache:

sudo apachectl stop  #关闭apache,如果事先没开启过,可以忽略报错信息

如果你的apache已经加入了launchctl,使用下面的命令来关闭:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

为什么选择关闭apache?因为mac os x系统自带的apache是没有优雅的remove/uninstall 的方式的… 对于“洁癖”比较严重的童鞋,可以选择直接删除相关的文件!

sudo rm /usr/sbin/apachectl
sudo rm /usr/sbin/httpd
sudo rm -r /etc/apache2/

sudo rm -r /usr/bin/php #删除自带的php

阅读剩余部分 ...

L2TP/IPSec一键安装脚本

本脚本适用环境:

系统支持:CentOS6+,Debian7+,Ubuntu12+

内存要求:≥128M

更新日期:2016 年 09 月 12 日

关于本脚本:

名词解释如下

L2TP(Layer 2 Tunneling Protocol)

IPSec(Internet Protocol Security)

IKEv2 (Internet Key Exchange v2)

能实现 IPsec 的目前总体上有 openswan,libreswan,strongswan 这3种。

libreswan 是基于 openswan 的 fork,所以现在各个发行版基本已经看不到 openswan 的身影了。

当然也有使用 strongswan 的。

之所以要更新 L2TP 一键安装脚本,是因为随着各个 Linux 发行版不断推陈出新,原有的脚本已经不适应现在的需求。

本脚本通过编译安装最新版 libreswan 来实现 IPSec(CentOS7 下则是全部 yum 安装),yum 或 apt-get 来安装 xl2tpd,再根据各个发行版的使用方法不同,部署防火墙规则。

阅读剩余部分 ...

使用 Vagrant 打造跨平台开发环境

Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。

我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。

安装步骤

1. 安装 VirtualBox

虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。 

下载地址:https://www.virtualbox.org/wiki/Downloads

提示:虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的

2. 安装 Vagrant 并添加镜像

下载地址:https://www.vagrantup.com/downloads.html 根据提示一步步安装。

装好以后运行 vagrant box add hashicorp/precise64 添加 Vagrant 官方的 box 镜像。这时将从官网下载名为 hashicorp/precise64 的 box,可能需要等待一段时间。

如果你要其他系统的镜像,可以来这里查询下载:https://atlas.hashicorp.com/boxes/search

提示:如果你因为网络原因添加不了上面的镜像,可以用工具将这些 box 下载下来(下载地址),参照后文的“打包分发”部分进行添加。

阅读剩余部分 ...

linux命令之killall和kill

Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

#命令格式:
killall[参数][进程名]

#命令功能:
#用来结束同名的的所有进程

#命令参数:
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示

阅读剩余部分 ...

linux命令之crontab

一、crond简介

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

[root@localhost ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
[root@localhost ~]#

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

阅读剩余部分 ...