NOTE: These are instructions for the Full Stack or Native configuration, not the Developer the Developer Stack.
Table of Contents |
---|
Managing the server
manage.py commands
login to the server and change to the /edx/app/edxapp/edx-platform
directory to use manage.py
- list all manage.py commandssudo -u www-data
source /edx/
...
app/
...
edxapp
...
/edxapp_env
python /edx/
...
app/
...
edxapp/edx-platform/manage.py lms --
...
settings production help
create or upgrade a user to superuser
Execute the following commands (updating the username and email account appropriately)
Code Block language text > sudo su edxapp -s /bin/bash > cd >source /edx/app/binedxapp/edxapp_env python.edxapp /edx/bin/app/edxapp/edx-platform/manage.edxapppy 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
- set or change password sudo -u www-data
source /edx/app/
...
edxapp/
...
edxapp_env
python /edx/app/edxapp/edx-platform/manage.py lms --settings production
changepassword user
- launch the django shell sudo -u www-data
source /edx/
...
app/edxapp/edxapp_env
python /edx/app/edxapp/edx-platform/manage.py lms --settings production
shell
importing a course from github
Example using the demo course
...
cd
...
/var/tmp
...
git
...
clone
...
https://github.com/edx/edx-demo-course.git
...
source /edx/app/edxapp/
...
edxapp_env
python /edx/
...
app/
...
edxapp/edx-platform/manage.py
...
cms
...
--settings=
production
...
import
...
/edx/var/edxapp/data
...
/var/tmp/edx-demo-course
...
run migrations
sudo su edxapp -s /bin/bash cd ~ source edxapp_env python
cd /var/tmp git clone https://github.com/edx/edx-demo-course.git
source /edx/app/edxapp/edxapp_envpython /edx/app/edxapp/edx-platform/manage.py
...
{lms/cms}
...
syncdb
...
--settings=
production
...
delete course
sudo -u www-data
source /edx/
...
app/edxapp/edxapp_env
python /edx/app/edxapp/edx-platform/
manage.py cms --settings=
production
delete_course Organization/CourseNumber/CourseRun
...
- delete course in Cypress version
sudo -u www-data
source /edx/app/
...
edxapp/
...
edxapp_env
python /edx/app/edxapp/edx-platform/
manage.py cms --settings=
production
delete_course course-v1:Organization+CourseNumber+CourseRun commit
See help
and help <cmd>
for more information!
MySQL access
First install jq
, then you should be able to just run this. Note that you lms.auth.json
location may be different:
...
sudo mysql $(jq -r '.DATABASES.default | "-u" + .USER + " -p\"" + .PASSWORD + "\" -h" + .HOST + " -P" + ( .PORT | tostring ) + " " + .NAME' /opt/openedx/lms.auth.json)
Use runserver instead of gunicorn (helpful for debugging)
- Shutdown the lms and cms (and optionally the workers)
sudo /edx/bin/supervisorctl
> stop lms edxapp:cms edxapp_worker:
- Launch the lms using the debug server
cdsource /edx/app/edxapp/edx-platform
sudo -u www-data edxapp_env
python /edx/binapp/python.edxapp .edxapp/edx-platform/manage.py lms runserver 8000 --settings production
When you connect your browser requests will go to the debug server instead of gunicorn through nginx. You will still need to compile static assets of they change
See what services are running
sudo /edx/bin/supervisorctl status
...
certs RUNNING pid 19862, uptime 0:00:04
edxapp:cms RUNNING pid 19884, uptime 0:00:03
edxapp:lmslms 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
Restarting Services
- LMS -
sudo /edx/bin/supervisorctl restart lms
CMS - sudo /edx/bin/supervisorctl restart cms
- Workers -
sudo /edx/bin/supervisorctl restart edxapp_worker:
(Note: the colon character :
at the end of the line is mandatory!)
Updating Versions using edX repos
Use the /edx/bin/update
to update repo versions on the server.
...
sudo /edx/bin/update edx-platform master
- change edx-platform to use the latest on the master branchsudo /edx/bin/update cs_comments_service master
- change the forums service to use the latest on the master branch
Generate certificates after a course ends
Note: the honor@example.com and verified@example.com users have been pre-added to the certificate whitelist in the vagrant image so you can generate a certificate even if they have not passed the course
- Certificates should only be generated after the course ends. The reason for this is because we store a final grade in the certificate table. To ensure your course has ended login to studio and confirm the end date
- Once the end date has passed for a course the users will see that 'final course details' are being wrapped up.
- Next you can either run the ungenerated_certs django admin command or the regenerate_user django admin command to generate certificates for an entire course or for a single user. This command does the following:
- Grade the student
- Update the generated certificate table with the students score and certificate status
- Send a certificate request to the certificate process
- The certificate server will generate a pdf, sign it and copy it to the certificate publish directory
- The student's dashboard will update to show the link to the pdf and the validation page.
These are the django commands to generate certificates for an entire course or a single student. Note the --insecure flag which is so that http is used for the lms callback url. It is not necessary if https is supported on the lms.
...
...
Using an edx-platform fork
sudo rm -rf /edx/app/edxapp/edx-platform
- to change the remote you need to remove the existing edx-platform checkout- Add the following line to
/edx/app/edx_ansible/server-vars.yml
-edx_platform_repo: "https://github.com/<user>/edx-platform.git"
sudo /edx/bin/update edx-platform master
- update edx-platform using the forked repo
Compile assets manually
To compile javascript and css outside of the update script run the following commands:
...
python manage.py cms --settings=
production
collectstatic --noinputpython manage.py lms --settings=
production
collectstatic --noinput
Generating dummy translations
To generate dummy translation strings for i18n and right-to-left testing:
sudo -H -u edxapp bash
source /edx/app/edxapp/edxapp_env
cd /edx/app/edxapp/edx-platform
paver i18n_dummy
Troubleshooting
Unable to connect to the LMS
Check to see if nginx is running:
...
sudo /edx/bin/supervisorctl status edxapp:lms cms
If you are still unable to connect to the LMS run the following commands:
...
While tailing the log files try to connect your browser to the LMS or Studio
Log files
- The Full stack sends all application logs to rsyslog which writes config files to the
/edx/var/log
directory. - Supervisor logs stderr and stdout, its logs are located in
/edx/var/log/supervisor
server-vars.yml does not make any changes after running the update bash script
Take a look at this line in the /edx/bin/update
bash script to see where the server-vars.yml file should be:
...