menu

天魔窟

勇往直前

Avatar

学不完(Ubuntu 下 Perl 和 PostgreSQL 安装配置,附带 LAMP)

很久以前曾经想写一篇主题为“一个合格的 Web Developer 所必须具备的知识和技能”的帖子,但一直未能下笔,原因挺简单:我还远没有资格在这方面夸夸其谈。每次觉得自己可以总结一点什么的时候,就又会遇到新的一堆需要从头了解的东西。正所谓“学无止境”。

我在工作的时候主要使用微软的 Web 相关技术,比如 ASP.NET 和 IIS,到了德国后发现这边用得更多的还是开源的方案,比如 LAMP 和 Perl。后面这两个我都基本上一无所知。

现在给学校里的某部门打工,所干的事情主要就是用 PHP 和 Perl 写程序,功能都比较简单,属于很典型的 Web Application:以网页为交互界面做数据库的 CRUD。基本的核心思想我应该是清楚的,问题就在于开发/运行环境的配置和熟悉。

说点题外话,我们学校计算中心在 Web 开发方面用得最多的还是 Perl,无论是学校的主页,还是网上选课系统……数据库则是 Firebird。至于 PHP 只是学生们的玩具,微软的?貌似没有 Windows 服务器。明年学校还要承办德语区的 Perl 开发者大会。而我本人对于 Perl 的印象一直是个已经没落的老语言 -_-!

好了,回到正题。

折腾了整整一个周末,算是搭好了环境:
1. Linux(Ubuntu 6.06/Dapper)下 Perl+PostgreSQL 8.1 数据库,Apache CGI 程序。

2. (以前配的)Windows 下 Apache+PHP+Perl CGI。

对于 1.,Perl 应该是随着 Linux 的安装而默认装好的,似乎 pl 是标准的 Linux 的 shell 命令扩展名。

* 安装 PostgreSQL 数据库:
基本按照这个来:https://help.ubuntu.com/community/PostgreSQL

* 安装 PostgreSQL 的开发包,即系统中需要能执行 pg_config。
参考:http://cpan.netnitco.net/authors/id/D/DB/DBDPG/DBD-Pg-1.49.readme

You must also have the pg_config executable installed (to check, type
"which pg_config" on unix-like systems). If pg_config is not available,
then you need to install the development package for PostgreSQL. For example
on Debian: apt-get install postgresql-dev; on RedHat: yum postgresql-devel.
This development package is needed even if you already have PostgreSQL up
and running since DBD::Pg uses it for its installation.

* 安装 CPAN 的 DBD::Pg 模块,可以理解为 Perl 调用 PostgreSQL 所需的库。
终端下执行:perl -MCPAN -e "install DBD::Pg"。

* 配置 PostgreSQL,使得 CGI 代码可以通过传统的数据库用户/密码来调用。否则你很可能遇到这样的错误信息:“FATAL: Ident authentication failed”。
参考:http://www.depesz.com/index.php/2007/10/04/ident/
编辑 /etc/postgresql/.../pg_hba.conf(... 可能为版本号,main 什么的目录名),注释掉所有的设置,代之以:
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
host all all 0.0.0.0/0 md5

* 重启 PostgreSQL 服务:
/etc/init.d/postgresql reload
参考:http://en.wikibooks.org/wiki/Programming:Converting_MySQL_to_PostgreSQL

* Perl+PostgreSQL 的 Hello, world! 程序:

#!/usr/bin/perl

use DBI;

use strict;

my $conn = DBI->connect("dbi:Pg:dbname=test");

my ($first_name, $last_name, $hired_at);
my (@row);

$conn->do("SET DateStyle = 'European'");

my $query = $conn->prepare(
    "SELECT first_name, last_name, hired_at" .
    " FROM employees" .
    " ORDER BY last_name, first_name"
    );
$query->execute();

print sprintf("%-40s%-20s", "Name:", "Hired At:"), "\n";
print "-" x 60 . "\n";
while (@row = $query->fetchrow_array())
{
    ($first_name, $last_name, $hired_at) = @row;

    print sprintf("%-40s%-20s", $first_name . " " . $last_name, $hired_at),
        "\n";
}

undef($query);
$conn->disconnect();
$conn = undef;

总体心得:
* 窗外的世界很精彩。
* 微软的东西买那么多钱还是有道理的。
* Linux 那么多发行版其实是在削减自己的桌面市场份额。
* Google 万岁!

关于 Ubuntu 的 LAMP 安装和配置,这篇文章已经足够好。

累了,先写这么多吧,我在 Linux 面前基本就是个白痴。希望毕业时能够得心应手一些。

firebird,我高中时用它建BBS来着,没想到现在还存在...

可是我看瑞典找工作网站C#和Java用的多,开源方案的很少,唉,我学那点Php真的不算啥了,能写actionScript都比它有用

嗯……

哪位大大知道如何清空ubuntu的登录密码?

科室服务器的密码被我搞忘了……

Perl总是被人认为没落了,但实际上生命力很强大,呵呵。另外,firebird不是那个BBS程序吧?

1) 推荐用RPM或者deb包管理来装,不要自己手工装
15秒就搭建好LAMP,然后楼主就会发现其实微软是白痴。。。。
微软产品不值那么多钱
微软产品就基本的文件校验功能都没有
怎么能当服务器产品用啊?

2) linux发行版多是因为开放
不会削减其市场份额,会进一步细分这个市场
比如有一定技术实例的用debian
新手用ubuntu
企业买SuSE Desktop
互相不冲突

3) 楼上,完了密码的用single模式进单用户
启动grub时候按e,在启动模式上加single
具体的google一下即可,很简单,30秒搞定

用多了linux/unix的思路,就会

pc说的不错。

deb的包管理机制能强大,但用起来却很方便。比如要找什么需要的软件,直接
apt-cache search perl postgresql
就能找到:
....
libdbd-pg-perl - a PostgreSQL interface for Perl 5 using DBI
....
如果还不确定,可以查看包的说明等信息:
apt-cache show libdbd-pg-perl
剩下的就是安装了。debian和ubuntu自带的软件包已经很多,大多数时候常用的基本都有,一般不用去google查如何安装某软件包。

关于linux的不同发布版,以及windows,只能说各有各的存在价值。对于使用者来说,其实不必关心它们谁又压过谁。有句话广告词不是说了吗,只选对的,不选贵的。

楼上是我,xyb。刚刚回复的时候写错了名字,抱歉。

xyb?
小鱼饼?

原来此firebird不同彼firebird,呵呵

评论已关闭