美文网首页
1.开始你的Jobeet项目

1.开始你的Jobeet项目

作者: 诸葛小白 | 来源:发表于2018-07-22 21:17 被阅读32次

第一天:开始你的Jobeet项目

*这一系列文章来源于Fabien Potencier,基于Symfony1.4编写的Jobeet Tutirual

什么是Jobeet?

Jobeet是一个开源的发布求职信息和招聘信息的网站。在这一些列的教程中我们将学会教你怎么样实现它。通过这Jobeet项目实例教程,你将学会使用最新的Web技术—Symfony3.4进行网站开发(你还不知道Symfony是什么?Symfony是一个PHP框架)。

对于每一天(每一章),从第一天开始一直到项目完成的那一天,我们会一步一步地编写代码来实现一个真实的网站。

在这一系列教程期间,我们每天(每章)都会给Jobeet添加一些新的功能,同时我们也会在编写代码的过程中向你介绍Symfony2的新功能和在Web开发中的最佳实践。

今天是我们的第一天,我们暂时先不写任何的代码。但是我们需要先搭建好开发环境。

搭建开发环境

首先,我们需要确保操作系统能够友好地支持Web开发环境。我们将会在VMware虚拟机上使用Ubuntu 12.04 LTS Server进行开发。接下来我们的系统上需要有Web服务器(例如Apache)、数据库(Mysql)和PHP(版本不低于5.3.3),这些软件都是最基本的要求。

1、安装Apache服务器

sudo apt-get install apache2

启动Apache的重写模块mod-rewrite:

sudo a2enmod rewrite

2、安装Mysql

sudo apt-get install mysql-server mysql-client

3、安装PHP

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

4、安装Intl扩展

sudo apt-get install php5-intl

5、重启Apache

sudo service apache2 restart

下载和安装Symfony2.3.2

我们现在需要做的事情是在服务器下准备一个目录来存放Jobeet项目。我们就把那个目录命名为jobeet:/var/www/jobeet

mkdir /var/www/jobeet

现在目录已经准备好了,那么我们要在目录里面放些什么呢?点击 http://symfony.com/download 到Symfony官网进行下载,选择 Symfony Standard 2.3.2 without vendors(2.3.2标准版)并进行下载。现在,把下载到的文件解压到刚才准备好的/var/www/jobeet目录中。

更新Vendors

在这一步中,我们将会更新Symfony的依赖库,我们会使用它们来开发Jobeet。一个Symfony项目通常需要依赖很多的扩展库,这些扩展库可以通过一个叫Composer的库来下载,并把下载的扩展库存放在*vendor/*目录下。

Symfony3.4标准版中,我们可以通过Composer来管理依赖库。我们先把Composer安装到jobeet目录下:

curl -s https://getcomposer.org/installer | php

如果你还没有安装curl扩展,那么你可以使用如下的命令进行安装:

sudo apt-get install curl

接下来,输入下面的命令开始下载所有必须的依赖库:

php composer.phar install

网站服务器配置

一个良好的Web实践是,我们只把浏览器需要访问到的资源文件放在网站的根目录下,比如css文件js文件图片文件。在Symfony项目中,我们通常推荐把这些文件放在项目中的*web/*子目录中。现在来配置我们的项目,在此之前我们需要创建一个虚拟主机(virtual host),打开终端,输入下面的命令:

sudo nano /etc/apache2/sites-available/jobeet.local

好了,我们创建了一个jobeet.local文件。接下来,把下面的代码复制到jobeet.local.config文件中,然后按下Control-O,回车进行保存,然后Control-X退出编辑器。

    ServerName jobeet.local

    DocumentRoot /var/www/jobeet/web

    DirectoryIndex app.php

    ErrorLog /var/log/apache2/jobeet-error.log

    CustomLog /var/log/apache2/jobeet-access.log combined

        AllowOverride All

        Allow from All

我们在Apache服务器中使用的jobeet.local本地域名需要声明后才能使用。如果你使用的是Linux系统,那么你需要找到*/etc/hosts文件。如果你使用的是Windows系统,你需要找到c:\Windows\System32\drivers\etc\hosts文件。把下面这行代码加入到hosts*文件的末尾:

127.0.0.1 jobeet.local

如果你是在非本地服务器上进行这些操作,你可以把127.0.0.1替换成远程服务器的ip地址。

为了使以上的配置操作能够生效,我们需要重启Apache服务器后才能使新配置的虚拟机生效。打开终端,输入下面的命令:

sudo a2ensite jobeet.local

sudo service apache2 restart

Symfony2有一个自带的测试工具来帮助我们检查当前的开发环境配置是否适合使用Symfony。我们可以通过下面的URL来检查配置:

http://jobeet.local/config.php

如果你不是在本地主机上运行confoig.php而是在远程服务器上运行的话,那么你应该修改web/config.php文件,把下面那些限制外部访问的代码给注释掉:

//web/config.phpif(!isset($_SERVER['HTTP_HOST'])) {exit('This script cannot be run from the CLI. Run it from a browser.');}/*if (!in_array(@$_SERVER['REMOTE_ADDR'], array(    '127.0.0.1',    '::1',))) {    header('HTTP/1.0 403 Forbidden');    exit('This script is only accessible from localhost.');}*///...

web/app_dev.php中做和上面相同的修改:

//web/app_dev.phpuseSymfony\Component\HttpFoundation\Request;useSymfony\Component\Debug\Debug;//If you don't want to setup permissions the proper way, just uncomment the following PHP line//read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information//umask(0000);//This check prevents access to debug front controllers that are deployed by accident to production servers.//Feel free to remove this, extend it, or make something more sophisticated./*if (isset($_SERVER['HTTP_CLIENT_IP'])    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])    || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1'))) {    header('HTTP/1.0 403 Forbidden');    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');}*/$loader=require_once__DIR__.'/../app/bootstrap.php.cache';Debug::enable();require_once__DIR__.'/../app/AppKernel.php';//...

当你运行config.php后,Symfony可能会要求你去修改开发环境配置以满足要求。完成下面这些配置能够帮助你消除*”warnings“*。

1、为app/cacheapp/logs修改权限

sudo chmod -R 777 app/cache

sudo chmod -R 777 app/logs

sudo setfacl -dR -m u::rwX app/cache app/logs

如果你还没有ACL,请先安装:

sudo apt-get install acl

2、设置php.ini中的date.timezone配置

date.timezone = Europe/Bucharest # date.timezone = Asia/Shanghai

sudo nano /etc/php5/apache2/php.ini

php.ini文件中的*[data]部分找到date.timezone配置项,然后删除前面的;*。

3、设置php.ini中的short_open_tagfalse

short_open_tag

    Default Value: Off

4、安装PHP加速器(推荐使用APC

sudo apt-get install php-apc

sudo service apache2 restart

重启Apache,在浏览器中输入http://jobeet.local/app_dev.php,你将会看到下面这个页面:

Symfony3控制台

Symfony3自带了一个命令行工具,我们可以使用它来完成不同的任务。

我们可以输入下面的命令查看Symfony2控制台能为我们做些什么:

php app/console list

创建应用程序的包(bundle

包(bundle)是什么

包十分类似于其它应用程序中的插件(plugin),但包比它们更加好用。在Symfony3.4中,所有的一切都是Bundle,包括核心的框架功能,还有我们应用中的代码。

一个包就是实现了一个功能的接口,它由许多文件组成,这些文件有组织地被放在一起,这就组成了一个包。

Tips:一个Bundle能够在任何地方使用,只要它能够被自动加载(app/autoload.php)。 在这里你可以了解更多关于bundle系统的知识:http://symfony.com/doc/current/book/page_creation.html#the-bundle-system

创建基本的包(bundle)框架

执行下面的命令启动Symfonybundle生成器:

php bin/console generate:bundle --namespace=Ibw/JobeetBundle

执行以上的命令后,生成器会询问我们几个问题。下面是这些问题和其答案(除了有一个不是默认的,其他全部都是默认的)

Bundle name [IbwJobeetBundle]: IbwJobeetBundle

Target directory [/var/www/jobeet/src]: /var/www/jobeet/src

Configuration format (yml, xml, php, or annotation) [yml]: yml

Do you want to generate the whole directory structure [no]? yes

Do you confirm generation [yes]? yes

Confirm automatic update of your Kernel [yes]? yes

Confirm automatic update of the Routing [yes]? yes

如果出现错误,修改composer.json文件

添加 "autoload": {

        "psr-4": {

            ……

            "Ibw\\JobeetBundle\\": "src/Ibw/JobeetBundle"

        },

生成bundle之后,我们需要清除cache

php bin/console cache:clear --env=prod

php bin/console cache:clear --env=dev

新生成的bundle可以在src/目录下找到:src/Ibw/JobeetBundle。Bundle生成器会生成一个DefaultController,在这个控制器中有一个*indexAction()*方法。

在之前的版本我们可以通过其他路径访问,3.4中新建bundle以后,默认为我们的主路径,我们可以通过下面的URL访问到它:http://jobeet.local/或者http://jobeet.local/app_dev.php/

如果需要修改路径,需要修改routing.yml文件。

如果访问报错,我们需要修改src/Ibw/JobeetBundle/Controller/DefaultController.php

return $this->render('IbwJobeetBundle:Default:index.html.twig');  修改为return $this->render('@IbwJobeet/Default/index.html.twig');

环境

Symfony3.4拥有不同类型的环境。如果你去查看web/目录,你会发现有两个PHP文件:app_dev.phpapp.php。这两个文件被叫做前端控制器,所有的请求都需要通过它们。app.php文件被用在Production环境,而app_dev.php则被用在Development环境。在Development环境下是十分方便的,因为它能够把所有程序中出现的的errorswarnings显示在调试栏(Debug Toolbar)上。哈哈,调试栏是开发者的最好的小伙伴。

好了,我们今天就先到这啦。在明天的内容中,我们将会给详细讲解Jobeet需要实现的功能有哪些。

相关文章

  • 1.开始你的Jobeet项目

    第一天:开始你的Jobeet项目 *这一系列文章来源于Fabien Potencier,基于Symfony1.4编...

  • 1.项目

  • 1.开始

    在很多时候,人总是找不到自己活着的意义,觉得活的如同走兽,每天,生命都是那样枯燥。 但是,也许人总有人存在的...

  • 1.开始

    就快要大三了,晓晓想。 这是木晓晓大二的期末,她还有两科没有考试,但是她却一点也不想复习。 一会儿再看吧,我一会儿...

  • 1.开始

    桐8岁,我38岁。心头忽然生出一丝感触,这好像是很有意义的两个数字,于是一些耳熟能详的话语飘过我的脑隙,比如8年抗...

  • 使用Eclipse搭建SpringBoot开发环境

    Eclipse中搭建SpringBoot项目 1.创建项目 接下来就开始从0开始创建SpringBoot项目。首先...

  • 1.构建项目

    第一步新建项目: 选择Spring Initalizr来初始化项目 填写好相关信息,点击next 选择core→D...

  • 1. 项目综述

    知识点: 下拉刷新 HelloCharts图表库 BoomMenu圆形菜单 BuddleView心形泡泡库 第三方...

  • 1.项目导入

    1.克隆项目 2.创建并且换分支 4.安装包 -verbose 在输出设备上显示虚拟机运行信息4.运行项目 有可...

  • 1.项目结构

    Ras-Node(Aero-Node) 使用树莓派控制小车或者无人机,同时树莓派通过无线自组织网络的方式连接起来,...

网友评论

      本文标题:1.开始你的Jobeet项目

      本文链接:https://www.haomeiwen.com/subject/ilyrmftx.html