我的PHP开发(三)

装好了环境,可以开始编写代码了,php的基础其实不是很难,翻一下文档,随便看基本书(前提是好书),基本上都可以在很快的时间段内掌握语法,可以写出几个可以运行的代码来。

可是,要写的爽,维护起来方便,还是需要其他知识去补充的。

想想写php代码已经也有5年左右时间了,各类开源框架和插件也偶有心得,目前用的比较熟悉的有smarty模板引擎,基本上每个项目都用; 做电子商务网站的时候oscommerce, 对新版本也略有研究,比较老版本确实增进了不少; 其他的就是Drupal了,这个东西很大,而且能做很多东西,目前在研究中;另外对于小项目来说,利用2010年的春节期间基本完成了一个生成MVC模型的application,他被包含在我的工具箱里,这个MVC模型的php半成品框架我把他定名为Copils, 意思是拷贝自Rails。 因为很多方法都源自rails, 稍后我会专门写文章介绍一下他,这种适合懒人的东西应该和大家分享。

另外,目前我的开发平台由于工作需要迁回了windows server。 因此稍作修改了一下我的工具箱,新增了几个小工具,

1) 配置apache虚拟目录,包括php的目录和rails的目录,apache的很简单,在主配置目录里include2个专门用于我自己来用的conf文件来存储虚拟目录,1个给php,1个给rails,然后通过php来操作这个文件来读取,存储,删除虚拟目录。这里值得一提的是关于php的版本,因为php5.3已经放出来了,所以升级了一下,有几个函数需要注意,eregi类的函数全部使用preg的类perl的正则函数来代替,还有date函数也有更新,需要查看一下手册。rails是使用mongrel作为server,然后添加windows服务,然后apache里做虚拟主机,就可以直接访问了。

当然这些操作都是用我的工具来完成,实在是懒人之福。

2)系统Host文件的操作,这里可以添加自己的域名在本机进行开发和测试,管理起来方便多了。

最后一个就是php项目生成工具了,其实就是个半成品,项目包含了数据库操作函数,错误机制,模板机制,简单的后台权限,还有一些公有函数,css文件,javascript文件。所以把这个项目文件夹拷贝到web目录后,就可以运行了,前提是数据库已经建立好,而且已经有后台用户的table。接下来的事情其实很简单,设计好表,根据表生成模型文件,目前只支持单表模型,1对1模型。1对多和多对多这2个很纠结,原因是性能降低太多,这部分有时间单独放出来分析一下(主要原因是在写这个的同时,本人研究和参照了rails的模型和hibernate的工作方式)。

模型好了然后生成controller,controller可以自己定义,如果是给后台生成的,直接用模板生成类似rails的scaffold, 直接对模型进行crud操作。 如果是其他controller, 生成空的controller文件和一个view页面以及一个包含这个view页面的控制器页面,具体实现很简单,另外原理和rails一样。

完成了目前的这些东西,对于我的工作方向也有了进一步的改变,更多的时间放在rails和java上,虽然做了几个自己玩的rails应用,但是还需要更多时间浸淫在这些新东西里面,特别是Java的hibernate和struts,虽然只是在理论上研究,但还是体会到很多东西,另外正是hibernate,当我在尝试把xml配置文件翻译成php的class和数据库表时,幡然醒悟,停止了制造轮子的错误行为。让我重新回到研究框架的工作中来,所以新年里除了希望大家新年快乐,多多发财以外,同时也希望自己在技术上更上一层楼。

我的PHP开发(二)

装好了环境,一般情况下一些必要的配置和工具也要先准备好,不然等到开发的时候,也不至于手忙脚乱。

虚拟目录很简单,譬如

<VirtualHost *:8080>
ServerAdmin jacky@ecstorm.com
DocumentRoot "/home/jacky/workspace/"
ServerName www.workspace.com
</VirtualHost>

这就是最简单的虚拟目录了,一般我把所有的代码都放在/home/jacky/workspace/下, 给整个文件夹建立个虚拟目录,目的是易于管理,在本人刚接触代码编写的时候着实给我了很大帮助。

在这个目录下有几个子目录是必不可少的,比如管理mysql的phpMyAdmin, test目录,tool 目录。虽然我比较崇尚命令行,检查mysql运行情况的时候打开console,确实很方便。test目录放的是很多其他代码,比如第一次用的脚本,jquery的帮助文档和各种插件,Ext的整个demo,都可以放里面,方便查阅。 Tool目录可是我最得意的东西,很多系统管理脚本,甚至是非php的脚本,例如perl和python的的东西都放在里面,因为个人比较懒,玩的时间都不够,里面最多的就是代码生成的脚本,用起来真爽啊。

说起系统脚本,php的部署虽然比较简单,但是为了能够做到一键完成,本人正在努力编写部署脚本,初步订下来用perl实现,包括建立虚拟目录(apache配置文件),SVN仓库管理,数据库导入,源代码check in等功能。 用户界面可以是console和web,没有多大关系。从这方面讲,对于源码管理我还是比较偏爱SVN的,虽然ftp方便,但是更专业源码管理的诸多好处更合我心意。

配置好了,接下来就是工具问题了,轻量级的win平台的editplus,notepad++都可以,Linux平台的gEdit够了,当然也不反对vi。 好点的IDE, eclipse,netbeans 2个平台都有,用起来也舒服,好多东西都集成在里面,php,java,ror,python一网打尽。前提是机器要够好,内存要够大。

我的PHP开发(一)

做了php那么久,略有心得,总想归纳一下,另外有几个小朋友一直问我是否有快速入门的捷径,我想最好的捷径就是不停的动手做吧,因此整理了一下自己开发的经验,对最基础的php开发进行稍微的阐述。

首先是环境,本人一直标榜自己是open source 流,所有关于工作的和自己兴趣方面的都和开源有关系,MS的东西能不碰尽量不碰,并不是我偏执,其中有很多原因的,目前基本上我的工作在linux平台的php开发,另外其他的小工具大多数是perl和python来写的,数据库方面一直使用mysql,这就不必多说了,开发工具Gedit就可以,高级点就是eclipse加上php插件,源码控制SVN,零零碎碎的小工具,拼凑一下就是的工作环境了。

Linux的发行版我推荐Ubuntu或者CentOS,没有别的原因,就是方便,如果一定要使用window,本人推荐使用虚拟机,用ftp上传到开发的环境上,虽然听上去繁琐,但是如果真的要开发入门,环境一定要好,装个虚拟机,不要装图形界面,下载个putty,开了ssh,连上去,所以设置手动完成。 当然毕竟是做开发,不是做系统管理,装软件还是用apt或者yum来完成,没必要下载源代码编译,太费时了。等到有一定水平和经验了,再进行更细致的研究也不迟。

下面是我非常基本的安装命令:

Ubuntu 下

安装ftp

sudo apt-get install vsftpd

配置 /etc/vsftpd.conf , 开启本地帐号就可以了,没必要设置虚拟用户什么的

安装mysql

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install php5-mysql

安装apache

sudo apt-get install apache2

安装php

sudo apt-get install libapache2-mod-php5
sudo apt-get install php5

CentOS下

yum install vsftpd

同样配置,教程网上很多

Install Database

yum install mysql mysql-server mysql-devel
/usr/bin/mysqladmin -u root password 'YOUR PASSWD'

Install apache and PHP

yum install httpd
yum install php php-devel php-pear php-mysql php-mbstring

很简单,配置虚拟主机也很方便,但是首要条件,比较熟悉linux下操作,比如使用vi,如果不习惯可以用nano,各种操作文件的命令,配置文件的位置等等,这些可以google到的,最好把这些记录下来,方便以后查找。

Linux目录简介

此篇非常简单的介绍Linux标准系统下各种目录的文章。现在,各种公司的Linux都是换汤不换药,但是还是多少有些区别,所以不能保证下面的介绍适用于所有的Linux系统,比如说Debian。

Windows下的软件一般都会放在一个固定的目录里面。比如说程序X放在C:Program_ComeOnBabyX,程序Y放在C:Program_SkybirdY。但是Linux系统就有很大的不同,它更加复杂。因为它不是根据程序的目的或者类型来放在一个目录里的,而是把二进制可执行文件放在一个目录里,把配置文件放在另外一个目录里,把数据文件放在你可能根本想不到的地方……这种情况对于那些准备从Windows搬家到Linux的用户来说可能有些不方便,所以我写了这篇文章让大家有个基本的了解,希望如此。

目录结构

/

这就是根目录。在Windows,DOS或者其他类似的操作系统里面,每个分区都会有一个相应的根目录。但是Linux和其他Unix系统把所有的文件都放在一个目录树里面,/ 就是唯一的根目录。一般来讲,根目录下面很少保存什么文件,或者只有一个内核映像在这里。

/boot

很多Linux系统把内核映像和其他一些和启动有关的文件放在这里。

/tmp

一般只有启动的时候产生的临时文件才会放在这个地方。我们自己的那些临时文件都放在 /var/tmp。

/mnt

这个目录下面放着一些用来mount其他设备的子目录,比如说/mnt/cdrom或者/mnt/floppy。在某些Linux里面这个目录是被/mount代替的。

/lib

启动的时候所需要用到的库文件都放在这个目录下。那些非启动用的库文件都会放在/usr/lib下。内核模块是被放在/lib/modules/(内核版本)下的。

/proc

这个目录在磁盘上其实是不存在的。里面的文件都是关于当前的系统状态的,包括正在运行的进程,硬件状态,内存使用的多少……大部分文件都是给电脑看的。

/dev

这个目录下保存着所有的设备文件。里面有一些Linux内核创建的用来控制硬件设备的特殊文件。注意,网卡设备文件(eth0,ppp0等)不在这儿。

/var

这里有一些被系统改变过的数据。比如说/var/tmp,就是用来储存临时文件的。还有很多其他的进程和模块把它们的记录文件也放在这个地方。下面将会列举一些重要的子目录:

/var/log

这里放着绝大部分的记录文件。随着时间的增长,这个目录可能会变得很臃肿。所以需要定期来清理一下。

/var/run

包括了各种运行时的小信息。

/var/lib

包括了一些系统运行的时候需要的文件。如果你用笔记本上网,/var/lib/pcmcia/stab可能会对你有用。

/var/spool

邮件,新闻,打印序列的所在地。

/root

Root用户的主目录。

/home

一般用户的主目录都会放在这个目录下。就跟学校宿舍的各个房间一样。在Linux下,你可以通过$ cd ~ 来进入你自己的主目录。

/etc

如果你是Root用户的话,这个目录应该是你最常来的地方。这里保存着绝大部分的系统配置文件。相对来讲,单个用户的系统配置文件将会保存在这个用户自己的主目录里面。这里的文件会根据你所安装的软件而增减。下面将会列举一下重要的子目录:

/etc/X11

这里放着X系统所需要的配置文件。XF86Config就是把配置储存到这个地方的。/etc/X11/fonts里面放着一些服务器需要的字体。还有一些窗口管理器存放的配置文件也是放在这个地方的。

/etc/init.d

对于Debian来说,这个目录保存着启动描述文件,包括各种模块和服务的加载描述。所以如果不清楚的话,最好不要随便删这里的东西。这里的文件都是系统进行配置的,不是用户自己用来配置的。

/etc/rcS.d

这里放着一些连接到/etc/init.d的连接文件,根据runlevel的不同而执行相应的描述。这里的文件名都是由S来开头的,然后是一个两位的数字——表示各种服务启动的顺序。比如,S24foo就是在S42bar前面执行的。接着就是相应的连接到/etc/init.d下面的文件的名字了。

/etc/rc0.d - /etc/rc6.d

这里面也是一些连接文件,和/etc/rcS.d差不多。不同的是,这些只会在指定的runlevel下运行相应的描述。0表示关机,6表示重启。所有以K开头的文件表示关闭,所有以S开头的文件表示重启。目前来讲,文件的命名方式和/etc/rcS.d是一样的。注意,在Debian下,2表示启动。

/bin, /sbin

这里分别放着启动的时候所需要的普通程序和系统程序。很多程序在启动以后也很有用,它们放在这个目录下是因为它们会经常被其他程序所调用。

/usr

这是一个很庞大的目录,几乎所有的文件都放在这下面,除了上面所说的那些。下面将会列举一些重要的子目录:

/usr/X11R6, /usr/X11, /usr/Xfree86

这里面保存着X系统所需要的文件,它的目录结构和/usr是一样的。

/usr/bin

二进制可执行文件存放的目录,这里放着绝大部分的应用程序。

/usr/sbin

这里放着绝大部分的系统程序。

/usr/games

游戏程序和相应的数据会放在这里。

/usr/include

这个目录保存着C和C++的头文件。除非你是程序员,否则你可能不会感兴趣。

/usr/lib

启动时用不到的库文件都会被放在这里。

/usr/info

这里保存着GNU Info程序所需要的数据。

/usr/man

这里保存着man程序所需要的数据。

/usr/src

这里保存着源代码文件。Linux内核的源代码都放在/usr/src/linux下了。

/usr/doc

这里保存着各种文档文件。这些文件可以帮助你了解Linux,解决问题和提供一些技巧。

/usr/local

这里面保存着本地计算机所需要的文件。在用户进行远程访问的时候特别有意义。这个目录在有些Linux系统下就是一个单独的分区,存放一些这台机子所属的那个用户的文件。里面的结构和/usr是一样的。

/usr/shared, /usr/share

这里保存着各种共享文件,比如说某个应用程序所需要的声音文件。

Linux下使用samba创建windows共享文件

在linux下安装samba,共享目录给windows,需要安装samba软件。

第一步,安装软件包, Centos下使用yum install samba 安装, Ubuntu下使用 sudo apt-get install samba。同时将安装perl等几个依赖包。

第二步,编辑samba的配置文件,打开/etc/samba/smb.conf, 添加

[sharename]     (你自己定的共享名,如sharedoc)
path = /share_dir (路径, 如 /home/demouser     /sharedoc)

valid user = demouser     (你系统中已有的用户)

writable = yes   (或者no,是否可写)

之后运行

smbpasswd   -a   demouser

目的是给用户添加samba密码。

运行samba服务

/etc/init.d/smb start

第三步, 在windows中可以连接到linux系统,然后使用\ip地址 可以访问linux系统,在弹出的用户认证框中就可以了。

其中,可以使用chkconfig 将samba服务作为默认启动服务,以上只是最简单的samba共享目录,具体内容可以阅读samba相关文档。