LDAP认证服务器
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
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/class="lazy" data-src/
cd /usr/class="lazy" data-src/db-4.5.20/build_unix/
../dist/configure
make
make install
安装ldap
tar zxvf openldap-stable-20100219.tgz -C /usr/class="lazy" data-src/
cd /usr/class="lazy" data-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后,这里发现一些错误)
解决方法
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
修改Ldap认证登录
注意:这里先创建一个符合复杂性的密码
/usr/local/sbin/slappasswd -v -u -s 你的密码 -h {crypt}
这里可能出现报错的情况
解决方法:
ln -s /usr/local/BerkeleyDB.4.5/lib/libdb-4.5.so /usr/lib/libdb-4.5.so
ldconfig
会得到下面的结果
Copy 上面密码的加密字符串
修改ldap配置文件
vim /usr/local/etc/openldap/slapd.conf
注解:
Suffix 指的登录域
Rootdn 指创建一个管理域的管理员
Rootpw 指管理员的密码(这里可写明文,但很不安全所以用了加密)
6.启用ldap,看是否正常运行
/usr/local/libexec/slapd
ps auxw | grep slapd
也可以检测389端口是否启用,ldap默认用的是389端口
这里我们强制关闭ldap
pkill slapd
在看看ldap情况
在启动ldap
/usr/local/libexec/slapd
这里启动正常,说明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
这里输入的密码就是前面我们创建的管理员的密码,输入密码后看到上面3行就表示导入成功了
我们在导另外一个
/usr/local/bin/ldapadd -x -W -D "cn=root,dc=demo,dc=com" -f /root/user.ldif
测试以管理者登入查询ldap的dit
/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"
接下来我们先安装mysql
先检测mysql有没有安装
rpm -q mysql
建立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/class="lazy" data-src/
cd /usr/class="lazy" data-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
这里可能会报错
解决方法:
vim /usr/local/mysql/etc/my.cnf
添加一行
datadir = /data/mysql
service mysqld start
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/class="lazy" data-src/
cd /usr/class="lazy" data-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/class="lazy" data-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/class="lazy" data-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
这里报错
添加新用户和用户组www
groupadd www
useradd -g www www
/etc/init.d/php-fpm start
添加开机启动
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/class="lazy" data-src/
cd /usr/class="lazy" data-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
参照截图里面的改法
这里改完先不重启nginx和php
Totaralms的发布安装
tar zxvf totaralms-2.4.1.tar.gz -C /usr/class="lazy" data-src/
cd /usr/class="lazy" data-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
访问http://192.168.0.103/
发现访问不了,找下原因
vim /usr/local/nginx/conf/nginx.conf
说明php没有启用php-cgi模式
vim /usr/local/php/etc/php-fpm.conf
找到151行,启用php-cgi进程
这里还要改一下php.ini里面的参数
vim /usr/local/php/etc/php.ini
改完这些我们在重启php和nginx
/etc/init.d/php-fpm restart
/usr/local/nginx/sbin/nginx -s reload
再次访问http://192.168.0.103/,居然还是不行,防火墙没有允许
我们先把iptables停掉
再次访问http://192.168.0.103/
然后按照提示一步步安装
给一下权限
chmod 777 -R /data/
继续向后
这里又报错了
php没有和mysql连上
解决方法
vim /usr/local/php/etc/php.ini
找到1194行 mysqli.default_socket = /tmp/mysqld.sock
这里指一下mysqld.sock文件位子
重启php 继续向后
/etc/init.d/php-fpm restart
里面是一些配置要求
没有问题,继续下一步,这里的*号里面的一定要填
安装完了这里我们在totaralms里面启用Ldap认证
改完这些点下面的保存更改就好了
然后测试之前我们创建的ldap帐号是否能登录
这里之前我们创建了3个帐号,一个个试试
这里很明显已经登录进来了
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
如图改
保存配置
cd /data/wwwroot/
mv phpldapadmin/ /data/wwwroot/totaralms/
修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
添加两行rewrite
重启nginx
/usr/local/nginx/sbin/nginx -s reload
然后访问http://192.168.0.103/phpldapadmin
这个界面更方便管理帐号信息
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341