PHP网页编程之PHP装置攻略:PostgreSQL
对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,皮皮你有没?攻略 以下将申明利用Apache+PHP3+PostgreSQL作为基于Web的数据库平台的装置和设置装备摆设办法。关于Apache、PHP3和PostgreSQL的更多内容可以从软件的附带文档、Linux的HOWTO文件和以下站点处找到:Apache: http://www.apache.org
PHP3: http://www.php.net
PostgreSQL: http://www.postgresql.org
1. PostgreSQL的装置和设置
1.1 取得源法式
PostgreSQL最新版本的源法式可以在http://www.postgresql.org找到。今朝的最新版本是6.5.X。以下以6.4版为例申明装置办法。
1.2 筹办任务
编译PostgreSQL需求3.75版以上的GNU make (用gmake -v反省版本号) ,2.7.2版以上的 GNU C(用gcc -v 反省版本号)和bison和flex(凡是这两种东西都已装置) 。
PostgreSQL的默许装置地位为/usr/local/pgsql/,体系文件约需3-10M空间。附带的测试法式在运转时需求约20M空间,所以装置时应注重预留足够的空间,建议/usr/local/pgsql/ 目次下包管有50M以上空间。别的睁开和编译源法式约需30-60M空间。
对多用户的使用情况,建议设置一个公用用户名,例如 postgres :
$ su 起首登录为root
# /usr/sbin/adduser postgres
别的PostgreSQL利用了System V的同享内存机制。FreeBSD默许形态不撑持该机制。如利用中的内核的设置文件中无以下项目则需追加后从头编译内核:
options SYSVSHM
options SYSVSEM
options SYSVMSG
建保留源法式的目次/usr/local/src/pgsql和装置目次/usr/local/pgsql:
#mkdir /usr/local/pgsql
#chown postgres:postgres /usr/local/pgsql
#mkdir /usr/local/src
#mkdir /usr/local/src/pgsql
#chown postgres:postgres /usr/local/src/pgsql
1.3 编译
以postgres用户登录, 解紧缩源法式:# su postgres
$ tar -xzvf /tmp/postgresql-v6.4.tar.gz
[假定下载文件保留在/tmp目次下]
完成后应生成一个postgresql-v6.4目次,上面入手下手编译:
$ cd /usr/local/src/pgsql/postgresql-v6.4/src
$ ./configure --with-mb=EUC_CN
个中,--with-mb=指定体系默许字符编码。除GB码(EUC_CN) 外,还可以指定为日语(EUC_JP)、韩语(EUC_KR) 、台湾(EUC_TW) 、UNICODE、MULE_INTERNAL、LATIN1等。
注重,如利用6.3.2版需用--with-template=... 指定操作体系,详细内容见源法式附带的申明文件。
configure如顺遂完成,将生成GNUmakefile,Makefile.global和Makefile.port等文件。 $ gmake all在编译停止后将显示以下信息:All of PostgreSQL is successfully made. Ready to install。
装置:$ gmake install
正常完成后,PostgreSQl的履行文件和库文件等将被装置到/usr/local/pgsql目次下。
装置附带文档:
$ gmake install-man
$ cd /usr/local/src/postgresql-v6.4/doc
$ make install
至此PostgreSQL的编译装置已完成,上面入手下手早期设置。
1.4 早期设置
设置情况变量:
如利用的shell为bash, 则在.bashrc中添加以下号令:
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPTH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
然后履行 source ~/.bashrc
如利用的shell为csh/tcsh则在.cshrc中添加以下号令:
setenv PATH="$PATH":/usr/local/pgsql/bin
setenv POSTGRES_HOME=/usr/local/pgsql
setenv PGLIB=$POSTGRES_HOME/lib
setenv PGDATA=$POSTGRES_HOME/data
setenv MANPATH="$MANPTH":$POSTGRES_HOME/man
setenv LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
然后履行 source ~/.cshrc
以上情况变量是一切利用数据库的用户都需求设置的。
数据库目次的初始化:
$ initdb
可使用的参数:
pgdata=/pgsql/db 指定命据库目次,默许利用情况变量PGDATA指定的地位
pgencoding=EUC_CN 指定命据库的字符编码,默许利用configure时指定的编码。
需求注重的是履行initdb的用户将具有所建数据库目次的办理权。
利用以下号令启动PostgreSQL:
$ postmaster -S
运转测试法式:
$ cd test/regression
$ gmake all runtest
如测试法式能正常运转则申明PostgreSQL能正常运转。
为了让 PostgreSQL在体系启动时能主动启动,需作以下变动:
起首以root登录
$ su
Linux: 在/etc/rc.d/rc.local中追加以下内容:
POSTGRESDIR=/usr/local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster -a
d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster'
fi
FreeBSD: 在/usr/local/etc/rc.d中创立名为
pgsql.sh的文件,内容为:
#! /bin/sh
POSTGRESDIR=/usr/local/pgsql
if [ -x $POSTGRESDIR/bin/postmaster
-a -d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster'
fi
修正pgsql.sh文件的权限:
# chmod 755 pgsql.sh
如今PostgreSQL的装置和设定根基已完成了,然而今朝为止能利用数据库的用户只要postgres。
为使其他用户可使用数据库,需求登录数据库用户和生成用户数据。
如经由过程Web办事器Apache停止查询的用户,用户名为nobody:
% createuser nobody
Enter user's postgres ID or RETURN to use unix
user ID: 1000 ->1000
Is user "nobody" allowed to create dataase(y/n)n
Is user "nobody" allowed to add users?(y/n)n
createuser: nobody was successfully added
删除用户可使用号令destroyuser 用户名
PostgreSQL可以同时办理多个数据库(但数据库之间不克不及停止join等操作)。新建数据库:
$ createdb 数据库名
新建的数据库将被放在/usr/local/pgsql/data/base的同项目录下(情况变量PGDATA指定途径的base目次下)。如省略数据库名参数,将主动以用户名作为数据库名。
例如 名为db1的数据库将被保留在/usr/local/pgsql/data/base/db1目次下。也可以使用initlocation号令指定其他地位:
$ initlocation /pgsql/data
$ export PGDATA2=/pgsql/data
$ createdb -D PGDATA2 db2
则数据库db2将被保留在/pgsql/data目次下。别的PostgreSQL 6.4版可以在创立数据库时指定文字编码:createdb -E “字符编码” “字符编码” 拜见configure、initdb。
删除数据库:destroydb 数据库名
PostgreSQL最根基的数据库办理东西是
pgsql. 根基利用办法:pgsql 数据库名
1.5 平安设置:
PostgreSQL供应了基于主机的认证体例host based authentication(HBA) 、基于口令的用户身份认证和用户操作权限设置等平安机制。
1.5.1 HBA体例和基于口令的用户身份认证体例
HBA体例的设置文件为pg_hba.conf。其格局为:
host DBNAME IP_ADDRESS ADDRESS_MASK USRAUTH
host: 固定标记,不克不及修正
DBNAME: 数据库名,all代表一切数据库
IP_ADDRESS,ADDRESS_MASK:指定IP地址,也可指定子网,如192.168.10.0/255.255.255.0
USERAUTH: 对用户的认证体例,包含ident(RFC1413) 、trust(不停止认证) 、reject (回绝合适前提的会见)、password (依据flat file口令文件停止认证) 、 crypt(利用PostgreSQL的体系数据库pg_shadow停止认证)、kbr4/kbr5(Kerberos V4/V5认证) 。如在作为Web 数据库利用, 利用passwd口令文件停止当地登录时可以下设置:
Host all 127.0.0.1 255.255.255.255 password passwd
passwd文件默许地位为/usr/local/pgsql/data, 无数据库办理权限的用户可使用
pg_passwd号令办理该文件(注重:flat file口令认证体例采取明文传送口令,故要从收集上其他主机登录,建议利用crypt认证体例)。
1.5.2 用户操作权限设置
利用SQL号令grant/revoke可以设置用户/用户组能否利用select/insert/update/rule号令。
依据SQL尺度,一个数据表文件(table) 在刚创立时只要创立该表文件的用户有权会见。要分派给用户会见权限,可使用grant号令:
grant < 权限品种 > on to < 用户/组 >
权限品种:all,select,insert,update,delete,rule
table名:被设置用户会见权限的表文件
用户/组:public(一切用户) 或用户名/组名
revoke号令感化与grant号令相反,用法以下:
revoke <权限品种> on from <用户/组>
table已设置的用户权限可使用pgsql的\z 号令检查。
2. Apache+PHP3的装置及设置
2.1 源法式
Apache和PHP3的最新版根源法式可以从http://www.apache.org/和http://www.php.net/找到。
以下以Apache 1.3.6和PHP3 3.0.5 为例。
2.2 编译
假定Apache和PHP3的源法式都保留在/tmp目次下,起首登录为root:
$ su
# cd /usr/local/src
# tar -xzvf /tmp/apache_1.3.6.tar.gz
# ./configure
# cd /usr/local/src
# tar -xzvf /tmp/php3-3.0.5.tar.gz
# cd php-3.0.5
# ./configure --with-pgsql --with-apache=
../apache_1.3.6 --enable-track-vars
# make
# make install
最初一步将创立/usr/local/src/apache_1.3.6/src/modules/php3目次,并将以下文件
复制到该目次下:
Makefile.libdir libmodphp3.a mod_php3.c php_version.h
Makefile.tmpl libphp3.module mod_php3.h
编译和装置Apache:
设置情况变量LD_LIBRARY_PATH csh和tcsh shell利用以下号令:
# setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
sh和bash利用以下号令:
# LD_LIBRARY_PATH=/usr/local/pgsql/lib
# export LD_LIBRARY_PATH
然后
# cd /usr/local/src/apache_1.3.6
# ./configure --activate-module=src/modules/php3/libphp3.a
# make
# make install
2.3 修正设置文件
# cd /usr/local/src/php-3.0.5
# cp php3.ini-dist /usr/local/lib/php3.ini
将/usr/local/apache/etc/srm.conf中以下两行内容前的#号删除,
假如以.php3作为PHP3文件的扩大名,则将.phtml 更改成 .php3:
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
在srm.conf文件的DirectoryIndex下增添 index.php3:
DirectoryIndex index.html index.php3
2.4 启动Apache
# /usr/local/apache/sbin/apachectl start
apachectl start: httpd started
在当地机上启动收集阅读器,地址栏输出http://localhost/(或在其他盘算机上的阅读器地址栏输出Apache办事器地址),如能显示出Apache的入手下手画面则申明Apache已装置胜利。上面测试PHP3模块任务是不是正常:
# cd /usr/local/apache/share/htdocs/
# ln -s /usr/local/src/php-3.0.5 .
然后在阅读器的地址栏输出
http://localhost/php-3.0.5/examples/date.php3
察看php3文件的运转了局是不是正常。如日期函数能显示准确了局,则申明PHP3模块任务正常。
至此,基于Apache Web办事器和办事器端剧本言语PHP3的PostgreSQL数据库体系的装置已完成 :-)
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。 当然这种网站的会员费就几十块钱。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 爱上php,他也会爱上你。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 当然这种网站的会员费就几十块钱。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 本文当是我的笔记啦,遇到的问题随时填充 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
页:
[1]