如何搭建LNMP环境(一)

当你想学习一门语言的时候,第一步应该做什么,写 Hello World?

No, 首先你要学会如何搭建开发环境。这个系列一共有两篇,第一篇介绍如何在 ubuntu 14.04 上面搭建 lnmp 环境,第二篇介绍如何在 centos 7.0 上面搭建 lnmp 环境。


如何在 ubuntu 14.04 上面搭建 lnmp 环境

1. 使用 apt-get 安装nginx, php, mysql

# sudo apt-get install nginx php5-cli php5-fpm php5-mysql mysql-server

2. 修改 nginx 配置

安装好 nginx 之后,你可以在 /etc/nginx 目录下面找到 nginx 的配置文件。

# cat /etc/nginx/nginx.conf

查看 nginx.conf 文件,我们发现如下一行配置,加载 sites-enabled 目录下面的所有配置文件。

include /etc/nginx/sites-enabled/*;

然后我们查看 sites-enabled 目录,发现有一个指向 /etc/nginx/sites-available/blog 配置文件的软链接。

# ls -l /etc/nginx/sites-enabled/

blog -> /etc/nginx/sites-available/default

如法炮制,我们首先在 sites-available 目录下面创建一个新的配置文件 blog,然后把它放到 sites-enabled 目录下面。

# cp /etc/nginx/sites-available/default /etc/nginx/sites-available/blog

# ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog

然后修改 sites-available 目录下面的 blog 配置文件,注意不要直接修改 sites-enabled 目录下面的软链接。

# sudo vi /etc/nginx/sites-available/blog

最后移除 default 配置文件软链接。

# rm /etc/nginx/sites-enabled/default

重新加载 nginx 配置文件,nginx 的配置就到此为止了。

# service nginx reload

参考:

https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

460 total views, no views today

PHP 技术栈

写代码三年了,庆幸自己还没有厌倦。然而日复一日的写一些业务逻辑代码,程序员该怎么提高自己呢?这是一个不得不面对的问题。看书,写博客是一个很好的方法。可是该看什么书呢?每天都会涌现出一大批新技术,该学什么好呢?


PHP

入门

当我是一个新人的时候,总是渴望别人能给我意见。可是现在当别人要我给点建议的时候,我才发现写代码其实就是每天坚持不断地写,写多了自然就会了。

如果一定要说点什么的话:自学就好,没有必要参加培训班。这个阶段不要想太多,网上搜索 w3school,按照教程搭建一个开发环境,直接开始写代码。

初级

初级是怎样的一个阶段呢?不管你是几天、几个月、还是几年的时间入门,当你找到工作,把写代码当做职业而不是兴趣的时候,你就是一位初级工程师了。

开始的一两年是成长的最快的一个阶段,作为一个 PHP 程序员,你可能已经可以独立完成一个小项目的开发。

需要警惕的是,千万不要停止学习,有些人一辈子就停留在了初级程序员这个阶段。

中级

我想处在这个阶段,大多数人已经可以轻松的完成开发任务。那么如何写更少的代码,更快的完成开发任务呢?

我认为还是多看书,多总结。目前的学习的规划是:理解设计模式,阅读框架源码,或者自己实现 PHP 框架。

高级

我原本认为高级 PHP 程序员的标准是,能够阅读 PHP 源码,能够编写 PHP 扩展。但是现在觉得太肤浅了,等我达到那个阶段再来回答这个问题吧。


技术栈

什么是技术栈?我所理解的的 “技术栈” 就是为了完成特定的 “工作” 所需要的 “技术储备”。

比如作为一个 PHP 程序员,除了 LNMP,你可能还需要会 HTML、CSS、JavaScript 等等。

这里分享一张 PHP 程序员画的 “全栈工程师技能树” 思维导图:

764 total views, no views today

如何科学上网

“The best time to plant a tree was 20 years ago. The second best time is now.”
— Chinese Proverb

一直想写点什么,却由于各种各样的原因一直没能实现。

最近红杏挂了,用阿里云的服务器搭了一个简单的 vpn,顺便用 WordPress 搭了一个个人博客。

可能会写一些技术文章,读书笔记,旅行日记,一切皆有可能。

对于一个拖延症晚期的人来说,保证按时更新基本是不可能的。

所以至少每月一篇吧。


为什么科学上网(翻墙)是每个科技工作者必备的技能?

因为一些众所周知的原因,包括 Google 在内的许多海外知名网站都被封了,而且随着 GFW 的不断升级,会有越来越多的网站无法访问。

那么问题来了,如何用正确的姿势来科学上网(翻墙)呢?

如果你去网上搜索一下,你会发现原来有这么多种科学上网的方法,不管你是没有什么经验的新手,还是已经解锁多种姿势的老手,相信都会大开眼界的。

这里主要介绍一些我用过的科学上网方法。

1.ssh 代理

首先你需要一个 ssh 账号。我当时用的是公司的账号。网上可以找到免费试用的 ssh 账号,如果需要购买可以去淘宝。

然后你需要 Bitvise SSH Client (以前叫 Bitvise Tunnelier),Firefox 浏览器 和 Foxyproxy 插件。

由于没有 Windows 系统的电脑(其实是懒),就不写详细的步骤了,教程可以自行网上搜索。

2.红杏

鉴于红杏已经挂了,不知道什么时候能恢复,这里就不介绍了。

3.vpn

不得不说,vpn 用户才是科学上网的主力军。

今天我们主要介绍怎么在 ubuntu 14.04 上搭建 PPTP 服务器。

安装和配置 pptp 服务器

首先我们用 apt-get 安装 pptp 服务器

# sudo apt-get install pptpd

然后我们需要修改 pptp 服务器配置文件

# sudo vi /etc/pptpd.conf

在文件结尾添加 server IP 和 client IP. 比如下面这样:

localip 192.168.0.1
remoteip 192.168.0.100-200

把 PPTP 服务器的 IP 配置为 192.168.0.1, 同时给连接到该 PPTP 服务器的 PPTP 客户端分配 192.168.0.100 到 192.168.0.200 的地址段。

配置当 PPTP 客户端 连接到 PPTP 服务器时使用的 DNS 服务器

# sudo vi /etc/ppp/pptpd-options

去掉 ms-dns 配置前面的 #,你可以像下面一样添加 google 的 DNS 服务器或者其他的 DNS 服务器

ms-dns 8.8.8.8
ms-dns 8.8.4.4

然后在配置文件 /etc/ppp/chap-secrets 里面添加用户数据

# sudo vi /etc/ppp/chap-secrets

每一行是是一个用户,一共四项数据,用空格隔开。

第一项是用户名。第二项是服务器名称,你可以填 “pptpd”。第三项是密码。最后一项是 IP 地址,填 * 代表允许所有 IP 访问。

# client server secret IP addresses
username * password *

最后启动 PPTP 服务器

# /etc/init.d/pptpd restart

OK,现在可以使用你的用户名密码连接到 PPTP 服务器了,是不是就大功告成了呢?

然而并没有,你会发现虽然你已经连上了 VPN,但是根本上不了网。因为你忘了一个重要的步骤。

配置 IP 转发

我们可以通过修改/etc/sysctl.conf 文件来启用 IPv4 转发。

# sudo vi /etc/sysctl.conf

把下面一行的注释去掉

net.ipv4.ip_forward=1

然后重新加载配置文件

sudo sysctl -p

把转发规则添加到 iptables

# sudo vi /etc/rc.local

在 exit 0 之前添加下面两行

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356

重启之后你就可以连接到你的 PPTP 服务器,并且愉快的 Google 一下了。

参考:

免费 ssh 代理

http://blog.onlybird.com/getfreessh

Bitvise SSH Client 下载地址

https://www.bitvise.com/ssh-client-download

在Ubuntu上搭建VPN(PPTP)

https://help.ubuntu.com/community/PPTPServer


最后说点题外话,这个世界上并没有绝对的自由。当我们讨论如何科学上网时,我们讨论的是一种技术问题,而不是是非问题。

1,500 total views, no views today