来源: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
- 注意:将来可能会更改