Managing Tips and Tricks

来源:https://openedx.atlassian.net/wiki/spaces/OpenOPS/pages/60227913/Managing+OpenEdX+Tips+and+Tricks#ManagingOpenEdXTipsandTricks-Seewhatservicesarerunning

注意:这些是  完整堆栈  或本配置的说明,而不是开发人员堆栈。

管理服务器

manage.py命令

登录到服务器并切换/edx/app/edxapp/edx-platform 到使用manage.py 的  目录

  • 列出所有manage.py命令 
    sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings production help
  • 创建最终成绩并为单个用户生成证书 
    sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings production regenerate_user -u honor@example.com -c edX/Open_DemoX/edx_demo_course

  • create or upgrade a user to superuser
    • 执行以下命令(适当更新用户名和电子邮件帐户)
      > sudo su edxapp -s /bin/bash> cd> /edx/bin/python.edxapp /edx/bin/manage.edxapp lms manage_user staff staff@example.com --staff --superuser --settings=production
    • See also Creating an admin user in LMS/CMS, which is written for devstack

  • 设置或更改密码  
    sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings production changepassword user
  • 启动django shell 
     sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings production shell
  • 从github导入课程

使用演示课程的示例

  cd /var/tmp
  git clone https://github.com/edx/edx-demo-course.git
  cd /edx/app/edxapp/edx-platform
  sudo -u www-data /edx/bin/python.edxapp ./manage.py cms --settings=production import /edx/var/edxapp/data /var/tmp/edx-demo-course 
  • 运行迁移sudo su edxapp -s /bin/bash cd ~ source edxapp_env python /edx/app/edxapp/edx-platform/manage.py {lms/cms} syncdb --settings=production
  • 删除课程       sudo -u www-data /edx/bin/python.edxapp ./manage.py cms --settings=production delete_course Organization/CourseNumber/CourseRun 
  • 删除赛普拉斯版本的课程   
          sudo -u www-data /edx/bin/python.edxapp ./manage.py cms --settings=production delete_course course-v1:Organization+CourseNumber+CourseRun commit

请参阅  help 并  help <cmd> 获取更多信息!

MySQL访问

首先安装jq,然后你应该能够运行它。请注意,您的  lms.auth.json位置可能有所不同:

sudo apt-get install jq

sudo mysql $(jq -r'.DATABASES.default |“ -  u”+ .USER +“ -  p \”“+ .PASSWORD +”\“ -  h”+ .HOST +“ -  P”+(。PORT | tostring)+“”+ .NAME'/opt/openedx/lms.auth.json)

使用runserver而不是gunicorn(有助于调试)

  • 关闭lms和cms(以及可选的工作人员)
sudo /edx/bin/supervisorctl
> stop edxapp: edxapp_worker:
  • 使用调试服务器启动lms
cd /edx/app/edxapp/edx-platform
sudo -u www-data /edx/bin/python.edxapp ./manage.py lms runserver 8000 --settings production 

当您连接浏览器时,请求将通过nginx转到调试服务器而不是gunicorn。您仍然需要编译它们更改的静态资产

查看正在运行的服务

sudo /edx/bin/supervisorctl status

你应该看到如下内容:

certs                            RUNNING    pid 19862, uptime 0:00:04
edxapp:cms                       RUNNING    pid 19884, uptime 0:00:03
edxapp:lms                       RUNNING    pid 19879, uptime 0:00:03
edxapp_worker:cms_default_4      RUNNING    pid 19915, uptime 0:00:03
edxapp_worker:cms_high_1         RUNNING    pid 19901, uptime 0:00:03
edxapp_worker:cms_low_3          RUNNING    pid 19890, uptime 0:00:03
edxapp_worker:lms_default_3      RUNNING    pid 19897, uptime 0:00:03
edxapp_worker:lms_high_4         RUNNING    pid 19922, uptime 0:00:03
edxapp_worker:lms_high_mem_2     RUNNING    pid 19894, uptime 0:00:03
edxapp_worker:lms_low_1          RUNNING    pid 19908, uptime 0:00:03
forum                            RUNNING    pid 19855, uptime 0:00:04
ora                              RUNNING    pid 19875, uptime 0:00:04
ora_celery                       RUNNING    pid 19866, uptime 0:00:04
xqueue                           RUNNING    pid 19853, uptime 0:00:04
xqueue_consumer                  RUNNING    pid 19860, uptime 0:00:04

重启服务

  • LMS – sudo /edx/bin/supervisorctl restart lms
  • CMS – sudo / edx / bin / supervisorctl重启cms
  • 工作人员 – sudo /edx/bin/supervisorctl restart edxapp_worker:

注意:行尾  的冒号字符: 是必填字符  !)

使用edX repos更新版本

使用  /edx/bin/update 更新服务器上的repo版本。

允许的  repo 名称[edx-platform,xqueue,cs_comments_service,xserver,ease,edx-ora,configuration,read-only-certificate-code]

例子:

  • sudo /edx/bin/update edx-platform master – 更改edx-platform以使用主分支上的最新版本
  • sudo /edx/bin/update cs_comments_service master – 更改论坛服务以使用主分支上的最新服务

课程结束后生成证书

注意:  honor@example.com  和  verified@example.com  用户已预先添加到vagrant图像中的证书白名单中,因此即使他们没有通过课程也可以生成证书

  • 证书只应在课程结束后生成。这是因为我们在证书表中存储了最终成绩。确保您的课程已结束登录工作室并确认结束日期 
  • 一旦课程结束日期过后,用户将看到“最终课程详细信息”正在被整理。 
  • 接下来,您可以运行ungenerated_certs django admin命令或regenerate_user django admin命令来为整个课程或单个用户生成证书。此命令执行以下操作:
    • 给学生评分
    • 使用学生分数和证书状态更新生成的证书表
    • 将证书请求发送到证书过程
    • 证书服务器将生成pdf,对其进行签名并将其复制到证书发布目录
    • 学生的仪表板将更新以显示指向pdf和验证页面的链接。
证书下载

这些是为整个课程或单个学生生成证书的django命令。请注意  –insecure  标志,以便http用于lms回调URL。如果lms支持https则没有必要。

# Generate or regenerate a certificate for a single user in a course
sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings production regenerate_user -u honor@example.com -c edX/Open_DemoX/edx_demo_course --insecure # Grade and generate certs for all users in a course sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings production ungenerated_certs -c edX/Open_DemoX/edx_demo_course --insecure 

使用edx-platform fork

  • sudo rm -rf /edx/app/edxapp/edx-platform – 要更改遥控器,您需要删除现有的edx平台结帐
  • 添加以下行  /edx/app/edx_ansible/server-vars.yml – edx_platform_repo: "https://github.com/<user>/edx-platform.git"
  • sudo /edx/bin/update edx-platform master – 使用forked repo更新edx-platform

手动编译资产

要在更新脚本之外编译javascript和css,请运行以下命令:

  • sudo -H -u edxapp bash
  • source /edx/app/edxapp/edxapp_env
  • cd /edx/app/edxapp/edx-platform
  • paver update_assets cms --settings=production
  • paver update_assets lms --settings=production

建议发出以下命令来调试r.js优化器问题

  • python manage.py cms --settings=production collectstatic --noinput
  • python manage.py lms --settings=production collectstatic --noinput

生成虚拟翻译

为i18n和从右到左测试生成虚拟翻译字符串:

  • sudo -H -u edxapp bash
  • source /edx/app/edxapp/edxapp_env
  • cd /edx/app/edxapp/edx-platform
  • paver i18n_dummy

故障排除

无法连接到LMS

检查nginx是否正在运行:

  • sudo service nginx status
  • sudo service nginx start

NGINX日志位于  /edx/var/log/nginx NGINX配置中/edx/app/nginx/sites-enabled

检查lms / cms是否正在运行

  • sudo /edx/bin/supervisorctl status edxapp:

如果仍然无法连接到LMS,请运行以下命令:

  • sudo service nginx stop
  • sudo service supervisor stop
  • sudo service supervisor.devpi stop
  • sudo pkill -u www-data
  • sudo service nginx start
  • sudo service supervisor start
  • sudo service supervisor.devpi start
  • 停止除LMS和CMS之外的所有内容
sudo /edx/bin/supervisorctl stop discern discern_celery \
  forum ora ora_celery xqueue xqueue_consumer xserver edxapp_worker:
  • sudo tail -f /edx/var/log/{lms,cms,nginx}/*log

在拖尾日志文件时尝试将浏览器连接到LMS或Studio

日志文件

  • 完整堆栈将所有应用程序日志发送到rsyslog,后者将配置文件写入/edx/var/log 目录。
  • 主管记录stderr和stdout,其日志位于 /edx/var/log/supervisor

运行更新bash脚本后,server-vars.yml不会进行任何更改

看一下/edx/bin/update bash脚本中的这一行,  看看server-vars.yml文件应该在哪里:

  • 这意味着您使用的是旧版本的配置存储库,因此请在/edx/var/edx_ansible/server-vars.yml中创建并添加设置:
if [[ -f /edx/var/edx_ansible/server-vars.yml ]]; then
    extra_args="-e@/edx/var/edx_ansible/server-vars.yml"
fi
  • / edx / bin / update中的以下行表示您正在使用配置存储库的当前版本。如果是这样,请在/edx/app/edx_ansible/server-vars.yml中创建和修改您的设置:
if [[ -f /edx/app/edx_ansible/server-vars.yml ]]; then
    extra_args="-e@/edx/app/edx_ansible/server-vars.yml"
fi
  • 注意:将来可能会更改