一、安装相关包
1、安装LDAP相关的扩展包
[root@localhost ~]# docker ps
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bb1c633de94 mysql:5.7 "docker-entrypoint.s…" 3 weeks ago Up 3 weeks 3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp, :::3307->3307/tcp mysql
10a1a24b437a redis:5 "docker-entrypoint.s…" 3 weeks ago Up 3 weeks 6379/tcp redis
75054a146810 hhyo/inception "/bin/sh -c 'nohup /…" 3 weeks ago Up 3 weeks 6669/tcp inception
87cfaee82763 hhyo/archery:1.8.0 "dockerize -wait tcp…" 3 weeks ago Up 7 minutes 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
02b26516ccea hanchuanchuan/goinception "/usr/local/bin/dumb…" 3 weeks ago Up 3 weeks 4000-4001/tcp goinception
[root@localhost ~]# docker exec -it 87 bash
[root@c3fe74f742ac archery]# yum -y install openldap-devel
2、安装PYTHON依赖库
# 缺少的话在浏览器登陆时会报错:"500 Internal Server Error"
[root@c3fe74f742ac archery]# source /opt/venv4archery/bin/activate
[root@c3fe74f742ac archery]# pip install django-auth-ldap==1.3.0 -i --trusted-host pypi.douban.com --upgrade pip
[root@c3fe74f742ac archery]# pip install six
[root@c3fe74f742ac archery]# cd /opt/venv4archery/lib/python3.8/site-packages/
[root@c3fe74f742ac archery]# cp six.py /opt/venv4archery/lib/python3.8/site-packages/django/utils/
3、重启下相关容器
[root@localhost ~]# docker restart 87
[root@localhost ~]# docker ps | grep archery
87cfaee82763 hhyo/archery:1.8.0 "dockerize -wait tcp…" 3 weeks ago Up 9 minutes 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
二、编辑配置文件
1、进入相关容器修改配置文件
[root@localhost ~]# docker exec -it 87 bash
[root@87cfaee82763 archery]# yum -y install vim
[root@87cfaee82763 archery]# cd /opt/archery/archery
[root@87cfaee82763 archery]# ls
asgi.py __init__.py __pycache__ settings.py settings.py.bak urls.py wsgi.py
[root@c3fe74f742ac archery]# cp settings.py settings.py.bak
[root@c3fe74f742ac archery]# vim settings.py ( 修改 LDAP 相关的部分如下内容 )
# LDAP
#ENABLE_LDAP = False
ENABLE_LDAP = True
if ENABLE_LDAP:
import ldap
from django_auth_ldap.config import LDAPSearch
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend', # 配置为先使用LDAP认证,如通过认证则不再使用后面的认证方式
'django.contrib.auth.backends.ModelBackend', # django系统中手动创建的用户也可使用,优先级靠后。注意这2行的顺序
)
AUTH_LDAP_SERVER_URI = "ldap://192.168.1.1"
AUTH_LDAP_BIND_DN = "cn=admin,dc=xxxxx,dc=cn"
AUTH_LDAP_BIND_PASSWORD = "xxxxxxx"
AUTH_LDAP_USER_SEARCH = LDAPSearch('ou=user,dc=xxxxxx,dc=cn',ldap.SCOPE_SUBTREE,'(uid=%(user)s)',)
AUTH_LDAP_ALWAYS_UPDATE_USER = True # 每次登录从ldap同步用户信息
AUTH_LDAP_USER_ATTR_MAP = { # key为archery.sql_users字段名,value为ldap中字段名,用户同步信息
"username": "cn",
"display": "displayname",
"email": "mail"
}
2、重启下相关容器
[root@localhost ~]# docker restart 87
[root@localhost ~]# docker ps | grep archery
87cfaee82763 hhyo/archery:1.8.0 "dockerize -wait tcp…" 3 weeks ago Up 13 minutes 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
3.查看docker logs日志:
# docker logs archery -f --tail=50
[2022-05-12 16:39:20 +0800] [39] [INFO] Started server process [39]
[2022-05-12 16:39:20 +0800] [39] [INFO] Waiting for application startup.
[2022-05-12 16:39:20 +0800] [39] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:39:20 +0800] [39] [INFO] Application startup complete.
[2022-05-12 16:39:20 +0800] [40] [INFO] Started server process [40]
[2022-05-12 16:39:20 +0800] [40] [INFO] Waiting for application startup.
[2022-05-12 16:39:20 +0800] [40] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:39:20 +0800] [40] [INFO] Application startup complete.
[2022-05-12 16:39:20 +0800] [41] [INFO] Started server process [41]
[2022-05-12 16:39:20 +0800] [41] [INFO] Waiting for application startup.
[2022-05-12 16:39:20 +0800] [41] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:39:20 +0800] [41] [INFO] Application startup complete.
[2022-05-12 16:39:47,540][ThreadPoolExecutor-0_0:140568935855872][task_id:django_auth_ldap][backend.py:657][WARNING]- cn=zhangyu,ou=user,dc=ienglish,dc=cn does not have a value for the attribute displayname
[2022-05-12 16:40:36,595][ThreadPoolExecutor-0_0:140568935855872][task_id:django_auth_ldap][backend.py:657][WARNING]- cn=zhaoyanchang,ou=user,dc=ienglish,dc=cn does not have a value for the attribute displayname
[2022-05-12 16:40:56,469][ThreadPoolExecutor-0_0:140568935855872][task_id:django_auth_ldap][backend.py:657][WARNING]- cn=zhangyu,ou=user,dc=ienglish,dc=cn does not have a value for the attribute displayname
2022/05/12 16:55:32 Received signal: terminated
2022/05/12 16:55:32 Command exited with error: signal: terminated
2022/05/12 16:55:33 Waiting for: tcp://mysql:3306
2022/05/12 16:55:33 Waiting for: tcp://redis:6379
2022/05/12 16:55:33 Connected to tcp://redis:6379
2022/05/12 16:55:33 Connected to tcp://mysql:3306
切换python运行环境
修改重定向端口
启动nginx
收集所有的静态文件到STATIC_ROOT
启动Django Q cluster
启动服务
[2022-05-12 16:55:35 +0800] [38] [INFO] Starting gunicorn 20.0.4
[2022-05-12 16:55:35 +0800] [38] [INFO] Listening at: (38)
[2022-05-12 16:55:35 +0800] [38] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2022-05-12 16:55:35 +0800] [40] [INFO] Booting worker with pid: 40
[2022-05-12 16:55:35 +0800] [41] [INFO] Booting worker with pid: 41
[2022-05-12 16:55:35 +0800] [42] [INFO] Booting worker with pid: 42
[2022-05-12 16:55:35 +0800] [43] [INFO] Booting worker with pid: 43
[2022-05-12 16:55:35 +0800] [40] [INFO] Started server process [40]
[2022-05-12 16:55:35 +0800] [40] [INFO] Waiting for application startup.
[2022-05-12 16:55:35 +0800] [40] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:55:35 +0800] [40] [INFO] Application startup complete.
[2022-05-12 16:55:35 +0800] [41] [INFO] Started server process [41]
[2022-05-12 16:55:35 +0800] [41] [INFO] Waiting for application startup.
[2022-05-12 16:55:35 +0800] [41] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:55:35 +0800] [41] [INFO] Application startup complete.
[2022-05-12 16:55:35 +0800] [42] [INFO] Started server process [42]
[2022-05-12 16:55:35 +0800] [42] [INFO] Waiting for application startup.
[2022-05-12 16:55:35 +0800] [42] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:55:35 +0800] [42] [INFO] Application startup complete.
[2022-05-12 16:55:35 +0800] [43] [INFO] Started server process [43]
[2022-05-12 16:55:35 +0800] [43] [INFO] Waiting for application startup.
[2022-05-12 16:55:35 +0800] [43] [INFO] ASGI 'lifespan' protocol appears unsupported.
[2022-05-12 16:55:35 +0800] [43] [INFO] Application startup complete.
4.用ldap账号登录页面进行测试。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15498/viewspace-2893931/ ,如需转载,请注明出处,否则将追究法律责任。