Tutor版本的OpenEdx的初始配置

       使用Tutor安装完成OpenEdx后即可通过域名方式进行访问,由于Tutor使用一个nginx的容器转发所有的网络流量,其利用域名分别处理对lms和cms的请求,但在内网中,这种方式反而麻烦。因此打算将其改成基于端口的模式,预期将lms和cms分别绑定在80和81端口。配置方式如下:

       首先修改docker-compose的配置文件:
 #~/.local/share/tutor/env/local/docker-compose.yml
...
  nginx:
    image: docker.io/nginx:1.13
    restart: unless-stopped
    ports:
      - "80:80"
      - "81:81" 
#加上一个81:81,即将nginx容器外部的81端口绑定到容器内的81端口
      - "443:443"
    networks:
      default:
        aliases: []
    volumes:
      - ../apps/nginx:/etc/nginx/conf.d/:ro
      - ../../data/openedx:/var/www/openedx:ro
      - ../../data/openedx-media:/var/www/openedx-media:ro
       配置完成后使用”tutor local reboot -d nginx”才能让nginx对应的”docker-compose.yml”的配置生效,注意仅仅使用”tutor local restart nginx”似乎只是启动容器,而不更新”docker-compose.yml”的配置。此时查看”docker ps -a”即可查看到对应的端口映射已经出现。
       由于nginx容器的配置文件时通过docker的目录挂载来实现的,相应的配置文件在”~/.local/share/tutor/env/apps/nginx/”中。此时对于lms的配置将部分配置文件进行修改,cms也类似:
#lms.conf
upstream lms-backend {
    server lms:8000 fail_timeout=0;
}
server {
  listen 80 default_server;     #绑定80端口
  server_name _;
  ....
}
 
#cms.conf
upstream cms-backend {
    server cms:8000 fail_timeout=0;
}
server {
  listen 81 default_server;   #绑定81端口
  server_name _;
  ...
}
     配置完成后通过”tutor local restart lms”和”tutor local restart cms”重启相应服务后,再次尝试访问,此时发现还是不能访问。原因在于lms和cms的站点访问策略设置的太严格。进入”~/.local/share/tutor/env/apps/openedx/settings/”目录中,分别在lms和cms的子目录中找到”production.py”文件,这个即是相应服务的启动文件。分别在对应的”ALLOWED_HOSTS”加入”*”来允许任意站点的访问。
#~/.local/share/tutor/env/apps/openedx/settings/lms/production.py
....
######## End of common LMS settings
ALLOWED_HOSTS = [
    ENV_TOKENS.get("LMS_BASE"),
    FEATURES["PREVIEW_LMS_BASE"],
    "*",                               #允许任意站点访问
    "lms",
    "127.0.0.1",
    "localhost",
    "preview.localhost",
]
...
 
#~/.local/share/tutor/env/apps/openedx/settings/lms/production.py
....
######## End of common CMS settings
ALLOWED_HOSTS = [
    ENV_TOKENS.get("CMS_BASE"),
    "cms",
    "*",                               #允许任意站点访问
    "127.0.0.1",
    "localhost",
    "studio.localhost",
]
...
      配置完成后,再次使用”tutor local restart lms”和”tutor local restart cms”重启相应服务后,再次尝试访问80和81端口就正常了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注