Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境。但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容易手动搭建,可控性很高
brew对于mac,就像apt-get对于ubuntu,安装软件的好帮手,不能方便更多…
brew的安装方式如下:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
brew常用选项
brew install xxx
brew uninstall xxx
brew list
brew update xxx
Apache的话使用mac自带的基本就够了,我的系统是10.9,可以使用以下命令控制Apache
sudo apachectl start
sudo apachectl restart
sudo apachectl stop
唯一要改的是主目录,mac默认在home下有个Sites
(站点)目录,访问路径是
http://localhost/~user_name
这样不太容易访问,修改/etc/apache2/httpd.conf
内容
DocumentRoot /Users/username/Sites
<Directory /Users/username/Sites>
Options Indexes MultiViews
# apache 2.2
# AllowOverride All
# Order allow,deny
# Allow from 127.0.0.1
# apache 2.4
Require local
</Directory>
这样Sites
目录就是网站根目录了,通过http://localhost
就可以访问了。
sudo apachectl start # 启动apache
sudo apachectl stop # 关闭apache
sudo apachectl restart # 重启apache
设置vhost可以很方便的进行站点调试,尤其是对于需要在根目录运行的站点。推荐 VirtualHostX.
设置方法是:
sudo vi /etc/apache2/extra/httpd-vhosts.conf
然后输入:
<Directory "/pash/to/site">
Allow From All
AllowOverride All
Options +Indexes
</Directory>
<VirtualHost *:80>
ServerName "site.test"
DocumentRoot "/path/to/site"
</VirtualHost>
这么设置会有个问题,默认的http://localhost
会被转到这儿来,所以专门再设置一下localhost
的host就好了。
<VirtualHost *:80>
ServerName localhost
DocumentRoot /path/to/root
</VirtualHost>
然后把host文件改一下,把刚刚设置的ServerName
改到本地就好了。
sudo vi /etc/hosts
写入:
127.0.0.1 site.test
要使用Nginx也比较方便,首先安装
brew install nginx
启动关闭Nginx的命令如下(如果想要监听80端口,必须以管理员身份运行)
#打开 nginx
sudo nginx
#重新加载配置|重启|停止|退出 nginx
nginx -s reload|reopen|stop|quit
#测试配置是否有语法错误
nginx -t
配置Nginx
cd /usr/local/etc/nginx/
mkdir conf.d
修改Nginx配置文件
vim nginx.conf
主要修改位置是最后的include
worker_processes 1;
error_log /usr/local/var/log/nginx/error.log warn;
pid /usr/local/var/run/nginx.pid;
events {
worker_connections 256;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/var/log/nginx/access.log main;
port_in_redirect off;
sendfile on;
keepalive_timeout 65;
include /usr/local/etc/nginx/conf.d/*.conf;
}
修改自定义文件
vim ./conf.d/default.conf
增加一个监听端口
server {
listen 80;
server_name localhost;
root /Users/username/Sites/; # 该项要修改为你准备存放相关网页的路径
location / {
index index.php;
autoindex on;
}
#proxy the php scripts to php-fpm
location ~ \.php$ {
include /usr/local/etc/nginx/fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
}
}
这个时候还不能访问php站点,因为还没有开启php-fpm。
虽然mac 10.9自带了php-fpm,但是由于我们使用了最新的PHP,PHP中自带php-fpm,所以使用PHP中的php-fpm可以保证版本的一致。
这里的命令在安装完下一步的php后再执行
sudo nginx
sudo php-fpm -D
PHP在mac下默认安装了,但是不好控制版本,利用brew可以再mac下安装最新版本,甚至是多个版本,我装了php5.5
brew update
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
# brew install php55 --with-fpm #Nginx
brew install php55 #Apache
然后修改php的cli路径和apache使用的php模块。在.bashrc或.zshrc里头加以下内容
#export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
就用刚刚安装的php代替了系统默认cli的php版本。然后在/etc/apache2/httpd.conf
下增加
LoadModule php5_module /usr/local/Cellar/php55/5.5.8/libexec/apache2/libphp5.so
这样就对apache使用的php版本也进行了修改。
后面会用到mongo和mysql,所以可以直接利用下面命令安装php模块,其他模块也类似
#brew install php55-mysql #这个已经不需要再安装了
brew install php55-mongo
mac不自带mysql,这里需要重新安装,方法依然很简单
brew install mysql
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
sudo chown -R your_user /usr/local/var/mysql/
第一句是安装,后面的是确保正常使用。然后是启动命令
mysql.server start
最好给mysql设个密码,方法如下
mysqladmin -u root password 'xxx'
如果想修改mysql的配置,在/usr/local/etc
下建立一个my.cnf
,例如增加log
[mysqld]
general-log
general_log_file = /usr/local/var/log/mysqld.log
MongoDB可以说是最简单的一个,直接执行
brew install mongodb
启动方法
mongod --fork
phpmyadmin几乎是管理mysql最容易的web应用了吧,每次我都顺道装上。
这样就装好了,虽然可能有点小复杂,但是来一次就习惯了。
这里很可能会遇到2002错误,就是找不到mysql.sock的问题,用下面方法解决
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
RockMongo是MongoDB很好用的一个web应用,安装也很容易
ln -s ~/Dropbox/sitename ~/Sites/sitename
chmod a+rw ~/Dropbox
chmod a+rw ~/Dropbox/sitename
这样就在mac下配置好一个php开发环境了,enjoy it!
最近弄了digitalocean的vps,研究了一下搭建一个vpn自己用,因为有些系统代理goagent还是搞不定。但是事实证明digitalocean线路还是很不稳,基本上没啥帮助=0=
用ubuntu就是安装东西快
sudo apt-get -y update
sudo apt-get -y install pptpd
配置一下dns
cat >/etc/ppp/options.pptpd <<END
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
END
说明
还有ip
cat > /etc/pptpd.conf <<END
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.2.1
remoteip 192.168.2.10-100
END
cat >> /etc/sysctl.conf <<END
net.ipv4.ip_forward=1
END
sysctl -p
备份当前iptables
iptables-save > /etc/iptables.down.rules
修改iptable NAT转发
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
设置MTU
iptables -I FORWARD -s 192.168.2.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300
保存新iptables
iptables-save > /etc/iptables.up.rules
重启后继续有效
cat >>/etc/ppp/pptpd-options<<EOF
pre-up iptables-restore < /etc/iptables.up.rules
post-down iptables-restore < /etc/iptables.down.rules
EOF
增加帐号密码都是test的用户
cat >/etc/ppp/chap-secrets <<END
test pptpd test *
END
/etc/init.d/pptpd restart
netstat -lntp
wget -c https://github.com/suyan/scripts/raw/master/Setup/pptp.sh
如果链接中断,并且出现下面问题:
Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.5, this is 2.4.6
在 /etc/pptpd.conf
文件中把 logwtmp
删掉就好了。
在这个信息爆炸的时代,我们阅读的来源实在太多了,以至于超过了我们能处理的极限。很好的筛选信息是很重要的,只阅读对自己当前最重要的文章。
Feedly 不用多说,作为 Google Reader 的替代者,功能上来说基本都满足了订阅RSS阅读的需求。为了筛选内容,可以考虑只读阅读人数多的文章。
RSS订阅包括了一些个人博客、媒体,比如:
Twitter 上关注了挺多开发者和科技媒体,偶尔关注一下最新动态。
每天一些精选内容,挑感兴趣的读一下。
微信上公众帐号经常有不错的文章,值得阅读。
微信公众帐号虽然关注了挺多,但是其实最后也只看这么几个人的:
稍后读工具之前还在用信息源的收藏,后来发现那些收藏既不容易翻阅,又不容易搜索,所以后来统一到了一个软件下。
Pocket 拥有比较广的支持,例如 Feedly, Twitter 和知乎日报都支持了 Pocket 收藏。只有微信不支持,不过没有关系,微信里点在 Safari 中打开,然后分享到 Pocket 即可。
稍后读的最大问题就是 Read It Never。不过这个没有问题,本来我们要做的也是阅读 or 归档。由于信息实在太多,有些内容又不是想现在读,合理的归档可以有助于以后再搜索。不过我们必须保证 Pocket 的尽量简洁,每天晚上尽量将今天收藏的文章归档。
Evernote 是我发现当前的最佳归档工具。它的检索非常快,而且网页版插件也非常好用。
我在mac下,使用port install zsh
就好了,因为mac自带的Zsh比较老,然后使用chsh -s /opt/local/bin/zsh
搞定
克隆配置
git clone git://github.com/sjl/oh-my-zsh.git ~/.oh-my-zsh
移动到根目录
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
使用Zsh的九个理由写了Zsh最令人激动的理由
直接使用“ ` ”符号包含起来,或者使用一个tab直接利用markdown来做高亮
Jekyll通过Pygments可以直接处理代码高亮
在Github Pages的文档里,也提到了这个方式,但是总觉得这样有点不是很舒服,打破了markdown的格式
这个方式使用了一个插件,而且gist也得管理,增大了开销……
这个方式使用了google-code-prettify来渲染代码高亮,本身库并不是很大,使用方便,最后我也选择了这个
直接到google-code-prettify官网下载代码,然后将它们放到项目下
官网提到了可以直接包含run_prettify.js的方式,这个会导入远程库,我选择了自己导入,如下
<link rel="stylesheet" href="/public/js/prettify/prettify.css">
<script src="/public/js/prettify/prettify.js"></script>
<script type="text/javascript">
$(function(){
$("pre").addClass("prettyprint linenums");
prettyPrint();
});
</script>
这里导入了css和js后,就可以直接用markdown的tab的方式来导入代码段了
默认主题不是很好看,只要更换prettify.css即可更换样式,可以到这里下载自己喜欢的主题css即可
Cobbler是一个Linux的安装服务,它可以在网络环境下迅速安装。它可以将众多Linux任务关连在一起,这样在你安装或修改系统时,就可以不必在众多命令和应用程序之间切换了。
随着一系列简单的命令,可以配置网络安装PXE(Preboot Execute Environment)、重新安装、基于媒体的网络安装和虚拟化安装(支持Xen、qemu、KVM、和一些类型的VMware)。Cobbler使用一个叫做’koan’(和Cobbler交互)的程序来重新安装及虚拟化支持。
Cobbler是一个轻量级的应用程序(只有1.5万行Python代码)。它试图在小型和大型安装时都非常简单易用,而且容易工作、扩展和阅读。它避免成为”企业级”(像那么复杂),但是它又拥有众多优秀的功能,非常适合在各种企业环境中使用,在重复性工作中节省大量的时间。
Cobbler可以选择性的帮助管理DHCP、DNS和yum包镜像基础设施,再者方面,它是一个更广义的自动化应用程序,而不仅仅只是处理配置。它还有一个轻量级的内置配置管理系统,以及整合与配置管理系统,像Puppet一样。Cobbler有一个命令行界面,一个网络界面,和许多用来访问配置的API。
puppet是一种Linux、Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
Puppet是一个C/S架构的配置管理工具,在中央服务器上安装puppet-server软件包(被称作Puppet master)。在需要管理的目标主机上安装puppet客户端软件(被称作Puppet Client)。当客户端连接上Puppet master后,定义在Puppet master上的配置文件会被编译,然后在客户端上运行。每个客户端默认每半个小时和服务器进行一次通信,确认配置信息的更新情况。如果有新的配置信息或者配置信息已经改变,配置将会被重新编译并发布到各客户端执行。也可以在服务器上主动触发一个配置信息的更新,强制各客户端进行配置。如果客户端的配置信息被改变了,它可以从服务器获得原始配置进行校正。
func全称 Fedora Unified Network Controller ,主要用在Radhat, Fedora,OpenSuse,Centos系列系统上由一个server管理任意台服务器的工具,建立了Master-Slaves 主从SSL证书管控体系,可以将证书自动分发到所有受控服务.func直接发送远程命令或者远程获取数据,但是只适用于一些常用功能的模块的操作,实现其它功能需要自己写Python API,个人认为没有使用比较适当的”for do done”循环程序效果明确和方便.