zoukankan      html  css  js  c++  java
  • 第一天--开始一个工程

     
    第一天--开始一个工程

    挑战

    我 们将要开始的Symfony日历是一个24个教程的集合,是在12月1日到圣诞节之间一天一天发布的。确实如此,每一天,包括周末,而一个新的教程也会马 上发布。每一个教程都是在一小时以内,从中我们可以看到正在发展中的web 2.0程序的开发。到圣诞节时,最终的程序将会放在网上,而源码也会开源。这个程序将会是可用的,有用的,有趣的。

    24次小于一小时的时 间相当于不到一天的时间,而这正是我们认为一个开发者学习Symfony所需要的时间。每一天都会有新的特性加入到程序中,而我们将会充分利用这些开发来 展示Symfony的功能,以及在Symfony web开发中的一些有益的实践。每一天,我们都会认识到使用Symfony开发一个web程序是多么的快速与高效,而我们也将会了解更多的内容。

    我们认为这些挑战已经足够了,而且因为我们是懒人,我们对于21天的冬天时间并没有安排。社区最需要的特性将会添加到程序当中,无需准备,而我们将会使其工作。

    工程

    我 们将要设计的程序是一个琐碎的"显示与通知"程序,就像一份要做事情的列表,一个电话本,或是一个书店。但是我们希望在原始的工程上使用Symfony, 而且工程有用,并且具有许多特性和一个合适的尺寸。这个目标就是要证明Symfony可以用于在复杂的条件下,使用样式与少量的工作来开发专业的程序。

    我 们也希望有许多来实际使用这个程序,从而可以显示Symfony站点也可以支持一个重要的负载。这也就是为什么这个程序需要提供实际的服务,回答存在的需 求,或是创建一个新版本的原因。网站的运行是一个实在的压力测试,这就意味着我们需要你,以及更多的读者来使用这个站点并且在实际的生活讨论他,从而可以 检测他可以支持多少的访问者。

    工程的内容对于其他天来说是保密的。今天我们还有许多工作要做,而不会描述一个完整的web 2.0程序。这些为我们提供了足够的时间来考虑新的特性。然而,我们需要一个名字,所以我们就称这个工程为askeet。

    今天的内容

    今天的目标就是要在一个网络浏览器中显示一个程序页面,并且要设置一个专业的开发环境。这包括安装Symfony,创建程序,配置网络服务器,以及设置源码版本控制系统。

    这对于已经完成了前面教程的读者来是很容易的,而对于其他人来说也并不难。而所有的人都会学到一些新的东西。

    我们认为你会使用一个安装有Apache,MySQL与PHP5的类Unix系统。如果你运行一个Windows系统,也并不痛苦:他也可以工作的很好,我们只需要在cmd提示符下输入一些命令。

    安装Symfony

    安装Symfony最简单的方法就是使用PEAR包。然而,为了可以使用频道--以及访问Symfony频道--我们需要更新到PEAR 1.4.0或是更高版本:

    $ pear upgrade PEAR

    现在我们可以添加Symfony频道:

    $ pear channel-discover pear.symfony-project.com

    现在我们就准备好安装Symfony的最新的稳定版本以及相应的依赖包了:
    $ pear install symfony/symfony

    可以通过使用命令行来检测Symfony版本以确定Symfony是否已经成功安装:
    $ symfony -V

    如 果我们想知道这个新的命令行工具可以为我们做哪些事情,我们可以输入symfony -T来列出所有可用的选项。我们也许希望阅读Running symfony一节来了解如何由一个tgz文档或是svn库来安装Symfony。在symfony wiki中也有一个社区贡献的非PEAR安装的版本。

    设置工程

    在Symfony 中,共享相同数据模型的程序(application)组织在工程(project)中。对于askeet工程,我们已经他有一个前端也一个后端:这就成 为两个程序。工程是程序的外壳,他需要首先被创建。为要完成这要的工作,我们所需要的就是一个目录以及一个symfony init-project命令行:

    $ mkdir /home/sfprojects/askeet
    $ cd /home/sfprojects/askeet
    $ symfony init-project askeet

    现在我们使用symfony init-app命令来创建前端程序:

    $ symfony init-app frontend

    Wow,实在是太快了。

    配置网络服务

    配置网络服务器

    现 在我们需要改变我们的Apache配置从而可以访问新的程序。在一个专业的环境下,更好的方法是将新的程序设置为一个虚拟主机,而这也正是我们这里要描述 的。然而,如果我们更喜欢将其添加为一个alias,我们可以查看web server configuration一节来进行配置。

    打开Apache/conf/目录下的httpd.conf文件,并且在末尾添加下面的内容:
    <VirtualHost *:80>
        ServerName askeet
        DocumentRoot "/home/sfprojects/askeet/web"
        DirectoryIndex index.php
        Alias /sf /usr/local/lib/php/data/symfony/web/sf

        <Directory "/home/sfprojects/askeet/web">
            AllowOverride All
        </Directory>
    </VirtualHost>

    /sf指向了我们的PEAR数据目录中的Symfony目录。要确定这个目录,我们可以输入pear config-show命令。Symfony程序需要访问这些目录来得到一些图片以及JavaScrit文件,从而可以正确的运行web调试工具栏以及AJAX帮助者。

    在Windows中,我们可以用下面的命令来替换Alias:

    Alias /sf "C:/php/pear/data/symfony/web/sf"

    声明域名

    askeet域名需要声明为本地域名。

    如果我们运行一个Linux系统,那么已经在/etc/hosts/文件中完成了这样的工作。如果我们运行Windows XP,那么这个文件位于C:/WINDOWS/system32/drivers/etc/目录下。

    添加下需的行:
    127.0.0.1    askeet

    如果我们不希望设置一个新的主机,我们需要在我们的网站服务器上添加一个在另一个端口上的Listen语句。这就允许我们使用本地域名。

    测试新配置

    重启Apache服务器,来检测我们可以访问我们的新程序:

    http://askeet

    恭喜

    Symfony 可以使用mod_rewrite模块来移除URL中的/index.php/部分。如果我们不想使用他或者是我们的服务器并没有提供相应的功能,我们可以 移除位于web/目录下的.htaccess文件。如果我们的Apache版本并没有使用mod_rewrite来进行编译,检查我们是否安装了 mod_rewrite DSO,并且在我们的httpd.conf文件中有下面几行:

    AddModule mod_rewrite.c
    LoadModule rewrite_module modules/mod_rewrite.so

    我们可以在Links and the Routing System一节中了解更多内容。

    我们也应试着在开发环境下访问程序。我们可以输入面的URL:

    http://askeet/frontend_dev.php/

    此时web调试工具栏应出现在右上角,包括确认我们的Alias sf/配置正确的小图标。

    web调试工具栏

    如果我们在Windows环境下运行IIS服务,那么配置会有一些小小的不同。我们可以在related tutorial中查找到配置方法。

    Subversion

    懒 人的一条原则就是不必担心打乱现在的代码。因为我们希望快速的工作,我们希望如果对我们的修改不满意可以恢复到以前的一个版本,我们希望多个人同时在一个 工程上工作,而我们还希望你可以访问程序的每一天的版本,我们将会使用源码版本系统。因为这个原因,我们会使用Subversion。现在假设你已经安装 了一个Subversion服务器或是可以访问一个Subversion服务器。

    首先,为askeet工程创建一个新的仓库:

    $ svnadmin create $SVNREP_DIR/askeet
    $ svn mkdir -m "layout creation" file:///$SVNREP_DIR/ask/trunk file:///$SVNREP_DIR/askeet/tags file:///$SVNREP_DIR/askeet/branches

    接下来,我们需要做第一次导入,忽略cache/与log/临时文件:

    $ cd /home/sfprojects/askeet
    $ rm -rf cache/*
    $ rm -rf log/*
    $ svn import -m "initial import " . file:///$SVNREP_DIR/askeet/trunk

    现在删除原始的程序目录,而使用一个检出的SVN版本:

    $ cd /home/sfprojects
    $ mv askeet askeet.origin
    $ svn co file://$SVNDIR/askeet/trunk askeet/
    $ ls askeet/

    $ rm -rf askeet.origin

    现在还有一件事情需要配置。如果我们向代码仓库提交我们的工作目录,我们也许会拷贝一些我们并不希望的文件,例如位于我们工程的cache与log目录中的内容。所以我们需要为这个工程向SVN设置一个忽略列表:

    $ cd /home/sfprojects/askeet
    $ svn propedit svn:ignore cache

    这些就会启动为SVN所配置的默认的文本编辑器。添加cache的子目录,这样当提交时SVN就会忽略这些内容:
    *

    保存退出,我们就完成了设置工作。

    对log/目录重复这样的过程:

    $ svn propedit svn:ignore log

    然后只输入:*

    现在,确保将cache与log目录的写权限设置回合适的级别,这样我们的web服务器可以向其中写入。在命令行输入下面命令:

    $ chmod 777 cache
    $ chmod 777 log

    如果我们希望了解更多的源码版本控制的内容,我们可以查阅project creation chapter一节。

    明天见

    好了,现在已经到1小时了。我们谈论了许多,但是却并没有为Symfony作任何事情。我们看一下明天的Symfony日程会涉及到哪些内容:

    程序可以做什么
    构建数据模型并且生成对象关系映射
    搭建一个模型

     原文地址 http://www.symfony-project.com
  • 相关阅读:
    Redis源码阅读笔记(2)——字典(Map)实现原理
    Partition List ——LeetCode
    docker format (golang template)
    markdown 换行
    pecan快速教程
    nvdimm
    k8s device plugin
    linux 文件同步
    复制MIFARE Classic卡
    install docker swarm on centos
  • 原文地址:https://www.cnblogs.com/dyllove98/p/2462034.html
Copyright © 2011-2022 走看看