概述

由于开发EduSoho需要有一些基础技术能力,为帮助广大开发者简单、便捷、快速开发应用,云平台为开发者提供一系列视频开发教程,视频教程对应用的开发指南进行了详细说明,供开发者参考使用应用开发视频教程

注:开发的应用只能在EduSoho产品中运行。

前期准备

1.代码下载

Git下载:git clone https://github.com/EduSoho/EduSoho.git
SVN下载:svn co https://github.com/EduSoho/EduSoho
文件下载:https://github.com/EduSoho/EduSoho/archive/master.zip

2.开发环境

官方推荐的配置是LNMP,即Linux+Nginx+MySQL+PHP。Windows用户请参考相关文档 Windows一键安装包.

在支持论坛上,有各种环境安装的帖子:各种环境安装测试教程汇总

操作系统:Linux 推荐使用Ubuntu,CentOS
Web服务器:推荐Nginx或Apache2
MYSQL数据库:推荐5.5及以上版本
PHP版本:推荐5.3.17以上
开发工具:推荐Sublime Text2

3.主要文件目录结构说明

目录说明
App应用程序核心目录
App/cache缓存目录
App/DoctrineMigrations数据库更新脚本目录
App/config配置文件目录
App/data该目录下存放的是私有的文件课时的视频、音频等
App/logs程序日志
doc文档目录,包含apache和nginx的配置文件
plugins插件目录
src源代码目录
Src/Topxia/WebBundle前台界面代码目录
Src/Topxia/AdminBundle管理后台界面代码目录
Src/Topxia/Service核心业务代码目录
Src/Topxia/DataTag模板标签目录
Src/Topxia/Common程序通用类目录
Vendor程序依赖的第三方库
Vendor_user程序依赖的第三方应用中心类库
webweb资源根目录
Web/app_dev.php开发环镜下程序主入口文件
Web/bundles程序前后台资源文件
Web/themes程序主题目录

4.系统主要业务逻辑模块说明

模块文件地址说明
Src/Topxia/Service/Course/CourseService课程核心服务
Src/Topxia/Service/Course/MaterialService课程资料服务
Src/Topxia/Service/Course/NoteService课程笔记服务
Src/Topxia/Service/Course/ReviewService课程评价
Src/Topxia/Service/Course/ThreadService课程讨论区服务,含话题及问答
Src/Topxia/Service/User/UserService用户服务
Src/Topxia/Service/User/MessageService私信服务
Src/Topxia/Service/User/NotificationService系统通知服务
Src/Topxia/Service/Taxonomy/CategoryService分类服务
Src/Topxia/Service/Taxonomy/TagService标签服务
Src/Topxia/Service/System/LogService日志服务
Src/Topxia/Service/System/SettingService系统设置服务
Src/Topxia/Service/Testpaper/TestpaperService题库服务

5.安装第三方组件

EduSoho采用Composer来管理第三方组件的依赖关系,只需在项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。关于Composer的使用请 查阅官方文档
Composer下载:
1.使用curl下载:
curl -sS https://getcomposer.org/installer | php
如果你没有安装curl,你可以使用php下载
2.php下载:
php -r "readfile('https://getcomposer.org/installer');" | php

安装步骤:
  php composer.phar install


  Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
  - Installing doctrine/lexer (v1.0)
    Loading from cache

  - Installing doctrine/annotations (v1.2.0)
    Loading from cache

  - Installing doctrine/cache (v1.3.0)
    Loading from cache

  - Installing doctrine/collections (v1.2)
    Loading from cache

  - Installing twig/twig (v1.16.0)
    Loading from cache

  - Installing symfony/symfony (v2.3.18)
    Loading from cache
......
Generating autoload files
Creating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_driver (pdo_mysql): 
database_host (127.0.0.1): 
database_port (null): 
database_name (symfony): edusoho-test
database_user (root): 
database_password (null): root
mailer_transport (smtp): 
mailer_host (127.0.0.1): 
mailer_user (null): 
mailer_password (null): 
locale (en): 
secret (ThisTokenIsNotSoSecretChangeIt): 
由于本地曾经下过第三方组件,所以下载时都是从缓存中取的;至此第三方组件安装与数据库配置完成。

服务部署

关于Nginx:
下载地址: http://nginx.org/en/download.html
版本推荐: 1.0以上
首先需要设置Nginx上传文件的大小限制:
修改nginx.conf文件: 找到”sendfile on"上方插入一行"client_max_body_size 200m;"。
EduSoho的Nginx虚拟主机配置文件 (更多内容详见软件包中的doc/nginx_server_config.txt文件):

server {
    listen 80;

    # [改] 网站的域名
    server_name edusoho-dev.com www.edusoho-dev.com;

    # [改] 程序的安装路径
    root /var/www/edusoho/web;

    # [改] 日志路径
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
	
    location / {
        index app.php;
        try_files $uri @rewriteapp;
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }

    location ~ ^/udisk {
        internal;
        # [改] 请根据程序的实际安装路径修改。该目录下存放的是私有的文件课时的视频、音频等。
        root /var/www/edusoho/app/data/;
        
    }

    location ~ ^/(app|app_dev)\.php(/|$) {
        # [改] 请根据实际php-fpm运行的方式修改
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  HTTPS              off;
        fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
        # [改] 请根据程序的实际安装路径修改。该目录下存放的是私有的文件。
        fastcgi_param HTTP_X-Accel-Mapping /udisk=/var/www/edusoho/app/data/udisk;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 8 128k;
    }

    # 配置设置图片格式文件
    location ~* \.(jpg|jpeg|gif|png|ico|swf)$ {
        # 过期时间为3年
        expires 3y;
        
        # 关闭日志记录
        access_log off;

        # 关闭gzip压缩,减少CPU消耗,因为图片的压缩率不高。
        gzip off;
    }

    # 配置css/js文件
    location ~* \.(css|js)$ {
        access_log off;
        expires 3y;
    }

    # 禁止用户上传目录下所有.php文件的访问,提高安全性
    location ~ ^/files/.*\.(php|php5)$ {
        deny all;
    }

    # 以下配置允许运行.php的程序,方便于其他第三方系统的集成。
    location ~ \.php$ {
        # [改] 请根据实际php-fpm运行的方式修改
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  HTTPS              off;
    }
}
配置完成之后重新加载nginx
	php nginx -s reload
关于Apache2:
下载地址: http://httpd.apache.org/download.cgi
推荐版本: 2.0以上
EduSoho的Apache2 虚拟主机配置文件 (更多内容详见软件包中的doc/apache_server_config.txt文件):


    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/edusoho/web

    LoadModule xsendfile_module modules/mod_xsendfile.so
    XSendFile On
    XSendFilePath /var/www/edusoho/web/files/

    <Directory /var/www/edusoho/web/> 
        # enable the .htaccess rewrites
        AllowOverride All
        Order allow,deny
        Allow from All
    </Directory> 

    ErrorLog /var/log/apache2/example.com_error.log
    CustomLog /var/log/apache2/example.com_access.log combined


修改hosts ,以配置的相同的域名访问
	sudo vim /etc/hosts

	#在hosts文件中加入server_name,与nginx_server_config.txt中的server_name或与apache_server_config.txt中的ServerName相同

	127.0.0.1       edusoho-dev.com www.edusoho-dev.com

数据库

    mysql -u root -p

    create database edusoho-test
创建插件配置文件app/config/routing_plugins.yml,内容可以为空。
初始化表结构与数据
	app/console doctrine:migrations:migrate

	app/console topxia:init
打开浏览器访问www.edusoho-dev.com,如页面能正常打开说明您在开发前的准备工作已经完成。