最新Canvas-lms 开源在线学习管理系统源码部署(生产版)_canvas lms

修改后内容如下(只修改 production部分): 此演示的是网易邮箱,其他邮箱配置请参考相应的邮箱SMTP配置相关内容

development:
  address: "smtp.example.com"
  port: "25"
  user_name: "user"
  password: "password"
  authentication: "plain" # plain, login, or cram_md5
  domain: "example.com"
  outgoing_address: "canvas@example.com"
  default_name: "Instructure Canvas"

# or to use sendmail --
#
# development:
#   delivery_method: "sendmail"

test:
  delivery_method: "test"

production:
  address: "smtp.126.com"  # 126的 smtp 地址
  port: "25"  # 126 默认端口
  user_name: "zcf" #  126 邮箱的账号,不带@126.com,实际发送会与下面domain拼接成zcf@126.com
  password: "password" # 126邮箱设置的客户端授权密码
  authentication: "plain" # plain, login, or cram_md5
  domain: "126.com"
  outgoing_address: "canvas@126.com" # 用户收到canvas发送的邮件时, 邮件会显示此邮件来自outgoing_address
  # ssl: true  # 此配置官网未提供, 但官网配置腾讯smtp是发不了邮件的, 还需要加这句
  default_name: "Instructure Canvas"

# If receiving mail from multiple inboxes (see incoming_mail.yml.example),
# you'll want to include those addresses in a reply_to_addresses array so
# Canvas will select the Reply-To field of outgoing messages from all of the
# incoming mailboxes.

multiple_inboxes:
  address: "smtp.example.com"
  port: "25"
  user_name: "user"
  password: "password"
  authentication: "plain" # plain, login, or cram_md5
  domain: "example.com"
  outgoing_address: "canvas@example.com"
  default_name: "Instructure Canvas"
  reply_to_addresses:
  - "canvas1@example.com"
  - "canvas2@example.com"
  - "canvas3@example.com"
  - "canvas4@example.com"


5. 可信URL配置, 只修改production部分

canvas@canvas-mechine:/var/canvas$ cp config/domain.yml.example config/domain.yml
canvas@canvas-mechine:/var/canvas$ nano config/domain.yml

配置文件内容如下:

test:
  domain: localhost

development:
  domain: "localhost:3000"

production:
  domain: "canvas.example.com" # 配置可信域名
  # whether this instance of canvas is served over ssl (https) or not
  # defaults to true for production, false for test/development
  ssl: true
  # files_domain: "canvasfiles.example.com" # 配置此域名, 只有含此域名的请求才能上传文件

6. 安全配置: 给production 部分 的 encryption_key 设置一个至少20个字符的随机字符串(长度大于20即可)

canvas@canvas-mechine:/var/canvas$ cp config/security.yml.example config/security.yml
canvas@canvas-mechine:/var/canvas$ nano config/security.yml
七. 生成资源(初始化资源文件)

1. Canvas需要先构建一些资产才能正常工作。首先,创建将存储生成的文件的目录

canvas@canvas-mechine:/var/canvas$ cd /var/canvas
canvas@canvas-mechine:/var/canvas$ mkdir -p log tmp/pids public/assets app/stylesheets/brandable_css_brands
canvas@canvas-mechine:/var/canvas$ touch app/stylesheets/_brandable_variables_defaults_autogenerated.scss
canvas@canvas-mechine:/var/canvas$ touch Gemfile.lock
canvas@canvas-mechine:/var/canvas$ touch log/production.log
 

2. 再运行下面的命令(最后一条命令中的 canvasuser 为当前部署 canvas 的操作系统用户)

canvas@canvas-mechine:/var/canvas$ yarn install
canvas@canvas-mechine:/var/canvas$ RAILS_ENV=production bundle exec rake canvas:compile_assets
canvas@canvas-mechine:/var/canvas$ sudo chown -R canvasuser public/dist/brandable_css

3. 如果你修改了 cnavas 的 源码, 最好执行下面的这条命令,然后在启动项目, 才能让你的修改完全生效

canvas@canvas-mechine:/var/canvas$ RAILS_ENV=production bundle exec rake brand_configs:generate_and_upload_all
八. 初始化数据库

1. 我们需要生成数据库表 并 在数据库中添加初始数据。在canvas安装根目录执行下面命令即可,执行命令后, 会要求你设置 canvas 默认管理员登录的电子邮件地址 和 登录密码, 还会设置一个登陆后的提示名称, 通常是您的组织名称,最后选择是否向canvas开发团队反馈使用信息:opt_in 所有信息,opt_out 不反馈任何信息 或 匿名反馈

canvas@canvas-mechine:/var/canvas$ RAILS_ENV=production bundle exec rake db:initial_setup
九. 配置Apache

1. 安装apache和passenger软件包, 如果执行以下安装命令报错(如:找不到包):请参考以下官方链接

https://www.phusionpassenger.com/library/install/apache/install/oss/trusty/

canvas@canvas-mechine:/var/canvas$ sudo apt-get install passenger libapache2-mod-passenger apache2

2. 启用 mod_rewrite (a2enmod 是 apache-2.4-common 包下的一个工具)

canvas@canvas-mechine:/var/canvas$ sudo a2enmod rewrite

3. 启用 passenger

canvas@canvas-mechine:/var/canvas$ sudo a2enmod passenger

4. 配置 passenger ( libapache2-mod-passenger软件包应该将符号链接放在*/ etc / apache2 / mods-enabled /中,名为passenger.conf*和 passenger.load),

(1)修改 / etc / apache2 / mods-enabled / 下的  passenger.load ,   修改后的文件内容

### Begin automatically installed Phusion Passenger load snippet ###
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
PassengerRoot /usr
PassengerRuby /usr/bin/ruby
### End automatically installed Phusion Passenger load snippet ###

(2)修改 */ etc / apache2 / mods-enabled / 下的  passenger.conf ,*避免由于权限问题而无法启动应用程序, 修改后的 文件内容

### Begin automatically installed Phusion Passenger config snippet ###
<IfModule mod_passenger.c>
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultUser canvas
  PassengerDefaultRuby /usr/bin/passenger_free_ruby
</IfModule>
### End automatically installed Phusion Passenger config snippet ###

十. 配置 Apache 支持 SSL

1.  确保Apache配置支持SSL,Ubuntu默认情况下不会在启用SSL模块的情况下发布Apache

canvas@canvas-mechine:/var/canvas$ sudo a2enmod ssl
十一.  配置 Canvas 使用 Apache 发布

1.  断开默认的站点(或删除这个文件)

canvas@canvas-mechine:/var/canvas$ sudo unlink /etc/apache2/sites-enabled/000-default.conf

2. 新建 canvas 的站点,创建一个名为 / etc / apache2 / sites-available / canvas.conf的新文件

<VirtualHost *:80>
  ServerName canvas.example.com # canvas 所在服务器地址或域名,在此填本机的地址或域名即可
#  ServerAlias canvasfiles.example.com # 服务器别名, 可不填
  ServerAdmin canvas@example.com # 这么填即可
  DocumentRoot /var/canvas/public # 将canvas安装路径下public目录放到apache web容器内,共用户访问
  RewriteEngine On
  RewriteCond %{HTTP:X-Forwarded-Proto} !=https
  RewriteCond %{REQUEST_URI} !^/health_check
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]  
  ErrorLog /var/log/apache2/canvas_errors.log
  LogLevel warn
  CustomLog /var/log/apache2/canvas_access.log combined
  SetEnv RAILS_ENV production
  <Directory /var/canvas/public>
    Allow from all
    Options -MultiViews
  </Directory>
</VirtualHost>
<VirtualHost *:443> # 此处配置同 <VirtualHost *:80> 配置一样即可
  ServerName canvas.example.com
  ServerAlias canvasfiles.example.com
  ServerAdmin youremail@example.com
  DocumentRoot /var/canvas/public
  ErrorLog /var/log/apache2/canvas_errors.log
  LogLevel warn
  CustomLog /var/log/apache2/canvas_ssl_access.log combined
  SSLEngine on
  BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
  # the following ssl certificate files are generated for you from the ssl-cert package.
  SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
  SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
  SetEnv RAILS_ENV production
  <Directory /var/canvas/public>
    Allow from all
    Options -MultiViews
  </Directory>
</VirtualHost>

!!!!!!注意:Apache 2.4用户:刚才配置中的 <Directory /var/canvas/public> 配置已经改变。需要修改为如下内容,否则访问canvas时会报没有权限访问服务器( Forbidden You don’t have permission to access / on this server. )的错误

<Directory /var/canvas/public>
    Options All
    AllowOverride All
    Require all granted
  </Directory>

3.  启用新的站点,执行下面的命令

canvas@canvas-mechine:/etc/apache2/sites-enabled$ sudo a2ensite canvas

4. SSL证书的说明(也可使用默认的配置), 若不配置, 则可能会报不安全的网站的警告

该配置在 / etc / apache2 / sites-available / canvas.conf 文件中的以下 两项, 修改成自己的 pem 和 key文件即可

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
十二.  优化文件下载

如果要在本地而不是在S3中存储上载的文件,则可以使用X-Sendfile标头(nginx中的X-Accel-Redirect)优化文件下载

1. 为 apache 安装并启用 mod_xsendfile 模块

canvas@canvas-mechine:/var/canvas$ sudo apt-get install libapache2-mod-xsendfile

2. 使用以下命令确保 mod_xsendfile 模块启动并正确运行

canvas@canvas-mechine:/var/canvas$ sudo apachectl -M | sort

3. 将 config/environments/production.rb 复制一份, 复制到 config/environments/production-local.rb 文件中, 并将其中的注释的行全部删掉, 只保留未注释的, 防止以后合并代码时出现错误。

4. 在 /etc/apache2/sites-available/canvas.conf  中添加优化下载的配置, 将下面两行加入到 中

XSendFile On
XSendFilePath /var/canvas
十三. Redis 缓存配置

canvas  建议使用 redis 进行缓存, 所需 Redis 版本:redis 2.6.x或更高版本。

1. 使用 backport PPA 来确保安装最新的 Redis, 执行下面的命令即可

canvas@canvas-mechine:/var/canvas$ sudo add-apt-repository ppa:chris-lea/redis-server
canvas@canvas-mechine:/var/canvas$ sudo apt-get update
canvas@canvas-mechine:/var/canvas$ sudo apt-get install redis-server

2. 配置 Redis 在服务器引导时自动运行

(1). 首先, 执行以下命令,配置 cache_store.yml

canvas@canvas-mechine:/var/canvas$ cd /var/canvas/
canvas@canvas-mechine:/var/canvas$ cp config/cache_store.yml.example config/cache_store.yml
canvas@canvas-mechine:/var/canvas$ nano config/cache_store.yml
canvas@canvas-mechine:/var/canvas$ sudo chown canvas config/cache_store.yml
canvas@canvas-mechine:/var/canvas$ sudo chmod 400 config/cache_store.yml

将以下行添加到你的 config/cache_store.yml 文件中(以下行包含测试、开发、生产缓存配置)

test:
    cache_store: redis_store
development:
    cache_store: redis_store
production:
    cache_store: redis_store

(2). 执行以下命令,配置 redis.yml(倒数第二条命令中的 canvasuser 为当前部署 canvas 的操作系统用户)

canvas@canvas-mechine:/var/canvas$ cd /var/canvas/
canvas@canvas-mechine:/var/canvas$ cp config/redis.yml.example config/redis.yml
canvas@canvas-mechine:/var/canvas$ nano config/redis.yml
canvas@canvas-mechine:/var/canvas$ sudo chown canvasuser config/redis.yml
canvas@canvas-mechine:/var/canvas$ sudo chmod 400 config/redis.yml

在 config/redis.yml 找到下面几行, 取消掉注释,修改为如下内容

production:
   servers:
#   # list of redis servers to use in the ring
   - redis://localhost

十四. 安装QTIMigrationTool

具体作用我也没搞懂, 官方说是为了复制或导入测验内容

1.运行该工具需要先安装 lxml python库,否则导入课程报错: Couldn’t convert QTI 1.2 to 2.1。运行以下命令即可完成安装

(或者使用 Python Package Index(pip),然后运行 pip install lxml

canvas@canvas-mechine:/var/canvas$ apt-get install python-lxml

2. 此工具需要安装在 canvas 安装目录下的 vender 目录下, 即 /var/canvas/vender 下, 执行以下命令下载源码并配置

canvas@canvas-mechine:/var/canvas$ cd /var/canvas/vendor
canvas@canvas-mechine:/var/canvas/vendor$ git clone https://github.com/instructure/QTIMigrationTool.git QTIMigrationTool
canvas@canvas-mechine:/var/canvas/vendor$ cd QTIMigrationTool
canvas@canvas-mechine:/var/canvas/vendor/QTIMigrationTool$ chmod +x migrate.py

3. 需要重新启动(或启动)延迟的作业守护程序

canvas@canvas-mechine:/var/canvas/vendor$ cd /var/canvas
canvas@canvas-mechine:/var/canvas$ script/delayed_job restart
十五. 自动化工作配置

Canvas有一些需要偶尔运行的自动化作业,例如电子邮件报告,统计信息收集和其他一些事情。如果不支持自动作业,您的Canvas安装将无法正常运行,因此我们也需要进行设置。 Canvas附带一个守护进程,可以监视和管理任何需要发生的自动化作业。   我们需要做的: 安装此守护进程,首先将 /var/canvas/script/canvas_init 中的符号链接添加到 /etc/init.d/canvas_init,然后将此脚本配置为运行在有效的运行级别, 运行以下命令即可

canvas@canvas-mechine:/var/canvas$ sudo ln -s /var/canvas/script/canvas_init /etc/init.d/canvas_init
canvas@canvas-mechine:/var/canvas$ sudo update-rc.d canvas_init defaults
canvas@canvas-mechine:/var/canvas$ sudo /etc/init.d/canvas_init start

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取
[外链图片转存中…(img-j13yobME-1714624071563)]
[外链图片转存中…(img-7n0xnXf8-1714624071564)]
[外链图片转存中…(img-5uG050T7-1714624071565)]
[外链图片转存中…(img-cr1TDLqO-1714624071565)]
[外链图片转存中…(img-mYidgrh2-1714624071566)]
[外链图片转存中…(img-xwulsHIg-1714624071566)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值