LDAP认证服务器

发布时间:2017-12-07 22:27:06编辑:Run阅读(4497)

    1.要准备的环境与软件(这里测试环境是Centos6.0-64位系统)
    alfresco-community-4.2.c-installer-linux-x64.bin (注: alfresco是一个免费开源系统,可以自己去下载)
    apache-tomcat-7.0.42.tar
    db-4.5.20.tar
    jdk-6u45-linux-x64.bin
    openldap-stable-20100219.tar
    phpldapadmin-1.2.3.tar
    mysql-5.5.13.tar.gz (totaralms要求mysql的版本5.1以上)
    nginx-1.1.5.tar.gz
    php-5.4.14.tar.gz  (注意:由于totaralms要求php必须5.4以上版本才能正常安装)
    totaralms-2.4.1.tar.gz (注:totaralms其实就是moodle,一个教育平台,也是免费开源的,可以自己去下载)


    2.这里先检测下硬盘情况
    df –h

    图片.png

    3装一些依赖包
    yum -y install gcc gcc-c++ ncurses ncurses-devel libxml libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel gd gd-devel pcre pcre-devel cmake gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* libmcrypt* curl* icu gettext
    清除缓存文件
    yum clean all
    4.由于php要添加ldap模块,需要ldap先安装并且已启用,才能正常添加,这里我们先安装ldap,首先安装db数据库(注:ldap需要db数据库)
    tar zxvf db-4.5.20.tar.gz -C /usr/src/
    cd /usr/src/db-4.5.20/build_unix/
    ../dist/configure
    make
    make install

    安装ldap
    tar zxvf openldap-stable-20100219.tgz -C /usr/src/
    cd /usr/src/openldap-2.4.21/
    env CPPFLAGS="-I/usr/local/BerkeleyDB.4.5/include" LDFLAGS="-L/usr/local/lib -L/usr/local/BerkeleyDB.4.5/lib -R/usr/local/lib" LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.5/lib" ./configure --enable-crypt --with-pam   (注意这里都是一行)
    make depend
    make  (make后,这里发现一些错误)

    图片.png

    解决方法
    yum -y install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
    然后重新安装一次
    env CPPFLAGS="-I/usr/local/BerkeleyDB.4.5/include" LDFLAGS="-L/usr/local/lib -L/usr/local/BerkeleyDB.4.5/lib -R/usr/local/lib" LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.5/lib" ./configure --enable-crypt --with-pam
    make depend
    make
    make install

    5.修改ldap的配置文件
    vim /usr/local/etc/openldap/slapd.conf
    添加三行到指定位子
    include         /usr/local/etc/openldap/schema/cosine.schema
    include         /usr/local/etc/openldap/schema/inetorgperson.schema
    include         /usr/local/etc/openldap/schema/nis.schema
    图片.png

    修改Ldap认证登录
    注意:这里先创建一个符合复杂性的密码
    /usr/local/sbin/slappasswd -v -u -s 你的密码 -h {crypt}
    这里可能出现报错的情况

    图片.png

    解决方法:
    ln -s /usr/local/BerkeleyDB.4.5/lib/libdb-4.5.so /usr/lib/libdb-4.5.so
    ldconfig
    会得到下面的结果

    图片.png

    Copy 上面密码的加密字符串

    修改ldap配置文件

    vim /usr/local/etc/openldap/slapd.conf

    图片.png

    注解:
    Suffix  指的登录域
    Rootdn  指创建一个管理域的管理员
    Rootpw  指管理员的密码(这里可写明文,但很不安全所以用了加密)

    6.启用ldap,看是否正常运行
    /usr/local/libexec/slapd
    ps auxw | grep slapd

    图片.png

    也可以检测389端口是否启用,ldap默认用的是389端口

    图片.png

    这里我们强制关闭ldap

    pkill slapd

    在看看ldap情况

    图片.png

    在启动ldap

    /usr/local/libexec/slapd

    图片.png

    这里启动正常,说明ldap是正常的  (强调:ldap千万不要关闭了,这样会影响到后面php添加ldap模块)

    7.添加ldap帐号(注:ldap导入账户信息都是.ldif,后缀不要弄错了)
    vim /root/addou.ldif

    dn: dc=demo,dc=com
    objectclass: dcObject
    objectclass: organization
    o: school
    dc: demo

    dn: cn=root,dc=demo,dc=com
    objectclass: organizationalRole
    cn: root

    dn: ou=jishubu,dc=demo,dc=com
    objectClass: organizationalUnit
    ou: jishubu

    vim /root/user.ldif

    dn: uid=Sam.tao,ou=jishubu,dc=demo,dc=com
    uid: Sam.tao
    cn: Sam.tao
    sn: SIRNAME
    mail: Sam.tao@demo.com
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    userPassword: 123456
    loginShell: /bin/sh
    uidNumber: 601
    gidNumber: 601
    homeDirectory: /home/Sam.tao

    dn: uid=Roy.zhao,ou=jishubu,dc=demo,dc=com
    uid: Roy.zhao
    cn: Roy.zhao
    sn: SIRNAME
    mail: Roy.zhao@kineo.com
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    userPassword: 123456
    loginShell: /bin/sh
    uidNumber: 602
    gidNumber: 601
    homeDirectory: /home/Roy.zhao

    dn: uid=Kelvin.zhang,ou=jishubu,dc=demo,dc=com
    uid: Kelvin.zhang
    cn: Kelvin.zhang
    sn: SIRNAME
    mail: Kelvin.zhang@kineo.com
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    userPassword: 123456
    loginShell: /bin/sh
    uidNumber: 603
    gidNumber: 601
    homeDirectory: /home/Kelvin.zhang
    注意格式,千万不要加多空格,这里的userPassword可以是加密的,加密的方式前面说了
    下面我们导入帐号信息
    /usr/local/bin/ldapadd -x -W -D "cn=root,dc=demo,dc=com" -f /root/addou.ldif
    图片.png

    这里输入的密码就是前面我们创建的管理员的密码,输入密码后看到上面3行就表示导入成功了
    我们在导另外一个
    /usr/local/bin/ldapadd -x -W -D "cn=root,dc=demo,dc=com" -f /root/user.ldif
    图片.png

    测试以管理者登入查询ldapdit

    /usr/local/bin/ldapsearch -h 192.168.0.103 -x -D "cn=root,dc=demo,dc=com" -w 你的密码 -b "uid=Sam.tao,ou=jishubu,dc=demo,dc=com"

    图片.png

    接下来我们先安装mysql

    先检测mysql有没有安装

    rpm -q mysql

    图片.png

    建立mysql安装目录及数据存放目录
     mkdir /usr/local/mysql
     mkdir /data/mysql
    创建用户和用户组
     groupadd mysql
     useradd -g mysql mysql
    赋予数据存放目录权限
    chown mysql:mysql -R /data/mysql/

    tar zxvf mysql-5.5.13.tar.gz -C /usr/src/
    cd /usr/src/mysql-5.5.13/
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DSYSCONFDIR=/usr/local/mysql/etc \
    -DMYSQL_DATADIR=/data/mysql \
    -DMYSQL_TCP_PORT=3306 \
    -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
    -DEXTRA_CHARSETS=all \
    -DWITH_READLINE=1 \
    -DWITH_EMBEDDED_SERVER=1 \
    -DWITH_SSL=system

    make && make install

    创建my.cnf配置文件
    mkdir /usr/local/mysql/log
    mkdir /usr/local/mysql/etc
    cp support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf

    初始化数据库
    执行前需赋给scripts/mysql_install_db文件执行权限
    chmod 755 scripts/mysql_install_db
    scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

    创建管理MySQL数据库的shell脚本
    cp support-files/mysql.server /etc/init.d/mysqld

    赋予shell脚本可执行权限:
    chmod +x /etc/init.d/mysqld
    将mysqld添加为系统服务
    chkconfig --add mysqld
    chkconfig mysqld on
    启动MySQL
    service mysqld start
    这里可能会报错
    图片.png

    解决方法:
    vim /usr/local/mysql/etc/my.cnf
    添加一行
    datadir         = /data/mysql

    图片.png

    service mysqld start

    图片.png

    cd /root/
    编辑环境变量配置文件
    vi /etc/profile
    在最后一行添加一下代码:

    PATH=$PATH:/usr/local/mysql/bin

    重新加载配置文件
    source /etc/profile
    为root帐户设置初始密码为root
    mysqladmin -u root password root

    删除本机匿名连接的空密码帐号
    mysql -u root -proot
    mysql>use mysql;                        //选择系统数据库mysql
    mysql>select Host,User,Password from user;   //查看所有用户
    mysql>delete from user where password="";
    mysql>flush privileges;
    mysql>select Host,User,Password from user;    //确认密码为空的用户是否已全部删除
    mysql>exit;

    安装php  (注意:在php的参数里面第一要添加--with-ldap --with-ldap-sasl ,不然ldap模块加载不了)
    tar zxvf php-5.4.14.tar.gz -C /usr/src/
    cd /usr/src/php-5.4.14/
    ./configure --prefix=/usr/local/php --with-gettext --with-config-file-path=/usr/local/php/etc  --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml   --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm  --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-pdo_mysql --with-mysql=/usr/local/mysql/  --with-mysqli --enable-intl  --with-icu-dir=/usr
    make
    make ZEND_EXTRA_LIBS='-liconv'
    make install

    cp /usr/src/php-5.4.14/php.ini-production /usr/local/php/etc/php.ini
    拷贝模板文件为php-fpm配置文件
    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    编辑配置文件
    vi /usr/local/php/etc/php-fpm.conf
    user = www #设置php-fpm运行账号为www
    group = www #设置php-fpm运行组为www
    pid = run/php-fpm.pid #取消前面的分号
    设置 php-fpm开机启动
    #拷贝php-fpm到启动目录
    cp /usr/src/php-5.4.14/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
    chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限
    chkconfig php-fpm on #设置开机启动

    让root有权限执行
    chmod 755 /etc/init.d/php-fpm
    启动php
    /etc/init.d/php-fpm start
    这里报错
    图片.png

    添加新用户和用户组www
    groupadd www
    useradd -g www www
    /etc/init.d/php-fpm start

    图片.png

    添加开机启动
    echo "/etc/init.d/php-fpm start" >> /etc/rc.local


    安装nginx
    查看是否安装openssl和pcre 没有安装的话,使用yum安装就可以了
    [root@ns1 ~]# rpm -q openssl
    openssl-0.9.8e-12.el5_5.7
    [root@ns1 ~]# rpm -q pcre
    pcre-6.6-6.el5
    安装nginx
    tar zxvf nginx-1.1.5.tar.gz -C /usr/src/
    cd /usr/src/nginx-1.1.5/
    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre
    make && make install
    启动服务nginx服务
    /usr/local/nginx/sbin/nginx
    echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
    查看80端口是否开启
    netstat -anpt | grep :80
    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      14640/nginx

    整合Nginx与PHP
    上面已经讲过,Nginx自己并不处理动态网页的请求,而且Nginx将得到的动态请求转交给PHP,下面我们打开Nginx的配置文件看一下

    cd /usr/local/nginx/conf/
    cp nginx.conf nginx.conf.bak
    vi nginx.conf
    参照截图里面的改法
    图片.png

    图片.png

    图片.png

    这里改完先不重启nginx和php

    Totaralms的发布安装
    tar zxvf totaralms-2.4.1.tar.gz -C /usr/src/
    cd /usr/src/
    mv totaralms-2.4.1/ totaralms
    mkdir /data/wwwroot
    mv totaralms/ /data/wwwroot/
    重启nginx ,php
    /usr/local/nginx/sbin/nginx -s reload
    /etc/init.d/php-fpm restart

    图片.png

    访问http://192.168.0.103/

    图片.png

    发现访问不了,找下原因

    vim /usr/local/nginx/conf/nginx.conf

    图片.png

    说明php没有启用php-cgi模式

    vim /usr/local/php/etc/php-fpm.conf
    找到151行,启用php-cgi进程

    图片.png

    这里还要改一下php.ini里面的参数

    vim /usr/local/php/etc/php.ini

    图片.png

    图片.png

    改完这些我们在重启phpnginx

    /etc/init.d/php-fpm restart

    /usr/local/nginx/sbin/nginx -s reload

     

    再次访问http://192.168.0.103/,居然还是不行,防火墙没有允许

    我们先把iptables停掉

    图片.png

    再次访问http://192.168.0.103/

    图片.png

    然后按照提示一步步安装

    图片.png

    图片.png


    给一下权限

    chmod 777 -R /data/

    继续向后

    图片.png

    这里又报错了

    图片.png

    php没有和mysql连上

    解决方法

    vim /usr/local/php/etc/php.ini

    图片.png

    找到1194  mysqli.default_socket = /tmp/mysqld.sock

    这里指一下mysqld.sock文件位子

    重启php 继续向后

    /etc/init.d/php-fpm restart

    图片.png

    里面是一些配置要求

    图片.png

    没有问题,继续下一步,这里的*号里面的一定要填

    图片.png

    安装完了这里我们在totaralms里面启用Ldap认证

    图片.png

    图片.png

    图片.png

    图片.png

    改完这些点下面的保存更改就好了

    然后测试之前我们创建的ldap帐号是否能登录

    图片.png

    这里之前我们创建了3个帐号,一个个试试

    图片.png

    图片.png

    这里很明显已经登录进来了
    Ldap的帐号创建如果都用命令导,这样很复杂,这里我们装个管理工具phpldapadmin

    tar zxvf phpldapadmin-1.2.3.tar.gz
    mv phpldapadmin-1.2.3 /data/wwwroot/
    cd /data/wwwroot/
    mv phpldapadmin-1.2.3/ phpldapadmin
    配置phpldapadmin
    cd /data/wwwroot/phpldapadmin/config/
    cp config.php.example config.php
    vim config.php
    如图改

    图片.png

    图片.png

    保存配置
    cd /data/wwwroot/
    mv phpldapadmin/  /data/wwwroot/totaralms/
    修改nginx配置文件
    vim /usr/local/nginx/conf/nginx.conf
    添加两行rewrite

    图片.png

    重启nginx

    /usr/local/nginx/sbin/nginx -s reload

    然后访问http://192.168.0.103/phpldapadmin

    图片.png

    这个界面更方便管理帐号信息

















关键字