仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1658|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP装置攻略:PostgreSQL

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:26:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,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 [AUTH_ARGUMENT]
  host: 固定标记,不克不及修正
  DBNAME: 数据库名,all代表一切数据库
  IP_ADDRESS,ADDRESS_MASK:指定IP地址,也可指定子网,如192.168.10.0/255.255.255.0
  USERAUTH: 对用户的认证体例,包含ident(RFC1413) 、trust(不停止认证) 、reject (回绝合适前提的会见)、password [passwd_file](依据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长相奇怪也就不足为奇了。
再见西城 该用户已被删除
沙发
发表于 2015-2-4 13:07:48 | 只看该作者
当然这种网站的会员费就几十块钱。
不帅 该用户已被删除
板凳
发表于 2015-2-6 21:57:31 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-18 21:35:03 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
因胸联盟 该用户已被删除
5#
发表于 2015-3-2 20:10:48 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
只想知道 该用户已被删除
6#
发表于 2015-3-5 05:42:23 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
莫相离 该用户已被删除
7#
发表于 2015-3-7 15:23:53 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-8 12:04:22 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
9#
发表于 2015-3-13 22:07:40 | 只看该作者
爱上php,他也会爱上你。
透明 该用户已被删除
10#
发表于 2015-3-23 15:23:01 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
飘灵儿 该用户已被删除
11#
发表于 2015-3-30 16:24:24 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
愤怒的大鸟 该用户已被删除
12#
发表于 2015-4-1 05:11:02 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
柔情似水 该用户已被删除
13#
发表于 2015-4-1 06:08:37 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
再现理想 该用户已被删除
14#
发表于 2015-4-16 10:09:23 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
蒙在股里 该用户已被删除
15#
发表于 2015-4-20 02:40:22 | 只看该作者
当然这种网站的会员费就几十块钱。
admin 该用户已被删除
16#
发表于 2015-4-22 00:20:39 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
灵魂腐蚀 该用户已被删除
17#
 楼主| 发表于 2015-4-24 01:24:16 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
乐观 该用户已被删除
18#
发表于 2015-5-6 06:12:23 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
谁可相欹 该用户已被删除
19#
发表于 2015-5-8 01:23:26 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
飘飘悠悠 该用户已被删除
20#
发表于 2015-7-1 03:11:27 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表