CentOS 7.0: 搭建SVN服务器以及使用NetBeans管理代码

公司网站代码需要方便管理,而公司网站服务器是CentOS 7.0,所以只好给CentOS7.0搭建一个SVN服务器,以及通过NetBeans编辑器来管理代码。

第一步: 安装svn

1. 通过 yum install subversion来安装

20150130014617

2. 提示已经安装。查看svn版本

使用:  svnserve –version

20150130014800

第二步: 创建svn版本库

使用命令: svnadmin create svn/repo

20150130015222

第三步: 配置svn信息

1. 进入版本库中的配置目录conf,此目录有三个文件: svn服务综合配置文件、 用户名口令文件、权限配置文件。

20150130015658

2. 配置权限配置文件authz

说明:两个站点为bbs,blog,所以分为三个组超级管理组admin、bbs管理组bbsadmin、blog管理组blogadmin。超级管理组admin可以读写所有站点内容,而bbsadmin对bbs站点可以读写,而只能读blog站点。以及blogadmin对blog站点可以读写,对bbs站点只读。

20150130020725

3. 配置用户口令文件passwd

添加组用户以及密码

20150130020952

4. 配置 svn服务综合配置文件svnserve.conf

20150130021339

第四步: 启用svn,连接svn以及关闭svn

1. 启用svn

svnserve -d -r /home/svn/project/

20150130021706

2. 连接svn

(1) 出现错误,认证失败

20150130023501

(2) 修改/root/.subversion/servier选项

20150130023635

(3) 安装openssl以及openssl-devel

20150130023923

(4)如果以上2步都操作还是提示认证失败,那只能无奈的用这个了:

20150130025729

(5)连接成功,以及导入文件成功

20150130025842

3. 关闭svn

通过ps -aux|grep svn 查看到的svn进程id来进行关闭

20150130021835

第五步: 使用NetBeans来连接svn,以及管理代码

1. 打开NetBeans软件

20150130030033

2. 团队开发-> subversion

20150130030153

3. 填写svn信息

20150130030332

4. 使用超级管理组admin对应的账号jhonse来连接

20150130030501

5. 连接svn成功

20150130030742

6. 因为现在svn上为空,所以需要用超级管理组admin对应的账号Jhonse来创建站点blog/bbs

(1) 在CentOS7.0上使用svn命令来创建站点。

因为只有超级管理组admini的用户才能对根目录下创建文件夹,所以必须用jhonse这个用户来登录。

20150130041736

(2)用windows系统上对应的TortoiseSVN客户端来创建

20150130041949

20150130042033

20150130042106

7. 使用NetBeans创建站点bbs/blog

(1)使用bbsadmin管理组的用户bbs_jhonse来连接svn

20150130042342

(2)选择站点目录

20150130042603

(3) 创建站点项目

20150130042655

(4)新建项目

20150130042805

(5) 新建php项目

20150130042854

(6)创建项目成功

20150130042957

8. 创建php文件,然后提交svn

(1) 创建php文件

20150130043131

(2) 选择项目提交
20150130043215

(3) 填写提交信息

20150130043333

(4) 提交成功!

20150130043539

(5) 查看版本控制信息

20150130044257

20150130044400

说明:

1. 每天上班coding之前最好先从svn服务器上更新下数据,再接着coding.

20150130043714

2. 如果不嫌麻烦,可以用TortoiseSVN客户端来也不赖哟!

20150130043918

Linux Glibc库严重安全漏洞修复

说明: 此漏洞信息来自于阿里云提供

日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235。黑客可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限,此漏洞触发途径多,影响范围大,请大家关注和及时临时修复,后续我们会尽快更新镜像修复。

一、    漏洞发布日期

2015年1月27日

二、    已确认被成功利用的软件及系统

Glibc 2.2到2.17 (包含2.2和2.17版本)

三、    漏洞描述

GNU glibc标准库的gethostbyname 函数爆出缓冲区溢出漏洞,漏洞编号:CVE-2015-0235。 Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到Glibc。远程攻击者可以利用这个漏洞执行任意代码并提升运行应用程序的用户的权限。

四、    漏洞检测方法

行检测:

[[test]]  
$ cat > GHOST.c << EOF  
#include <netdb.h>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <errno.h>  
#define CANARY"in_the_coal_mine"  
struct {  
  char buffer[1024];  
  char canary[sizeof(CANARY)];  
} temp = { "buffer", CANARY };  
int main(void) {  
  struct hostent resbuf;  
  struct hostent *result;  
  int herrno;  
  int retval;  
  /*** strlen (name) = size_needed -sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/  
  size_t len = sizeof(temp.buffer) -16*sizeof(unsigned char) - 2*sizeof(char *) - 1;  
  char name[sizeof(temp.buffer)];  
  memset(name, '0', len);  
  name[len] = '\0';  
  retval = gethostbyname_r(name,&resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);  
  if (strcmp(temp.canary, CANARY) !=0) {  
    puts("vulnerable");  
    exit(EXIT_SUCCESS);  
  }  
  if (retval == ERANGE) {  
    puts("notvulnerable");  
    exit(EXIT_SUCCESS);  
  }  
  puts("should nothappen");  
  exit(EXIT_FAILURE);  
}  
EOF  
[test]  
$ gcc GHOST.c -o GHOST  
[test]  
$./GHOST  
vulnerable

 五、    建议修补方案

特别提示:由于glibc属于Linux系统基础组件,为了避免修补对您服务器造成影响,建议您选择合适时间进行修复,同时务必在修复前通过快照操作进行备份。

Centos 5/6/7:

yum update glibc

Ubuntu 12/14:

apt-get update 
apt-get install libc6

Debian 6 :

wget -O /etc/apt/sources.list.d/debian6-lts.list http://mirrors.aliyun.com/repo/debian6-lts.list 
apt-get update 
apt-get install libc6

Debian 7 :

apt-get update 
apt-get install libc6

Opensuse 13 :

zypper refresh 
zypper update glibc*

Aliyun linux 5u7 :

wget -O /etc/yum.repos.d/aliyun-5.repo http://mirrors.aliyun.com/repo/aliyun-5.repo  
yum update glibc

Zend Guard 6.0: 解密php文件

一直以来很少接触Zend Guard加密这块,主要是在网上下了一个php源码,本想有空的时间研究下其代码,结果一看用Zend Guard加密了,所以就开始接触Zend Guard加密这块,所以就开始写了几篇关于Zend Guard的博文。而对于Zend Guard加密的php文件进行解密,网上提供的资料以及软件很多,不过只是针对于php5.2之下的,而php5.3,php5.4的版本进行解密就根本找不到,找到也是在线解密需要money。

刚好我下载的php源码是Zend Guard 6.0加密的,并且对于的php版本是5.3。查找了很多网页,最后终于找到了。所以接着来一篇Zend Guard博文记录下。

说明: 非常感谢提供软件的大神们。

第一: php5.2以及php5.2以下的版本

1. 使用如下软件

20150129030420

2. 查看加密文件代码

此文件加密的版本为php 5.2

20150129030748

3. 使用此软件解密

20150129031012

4. 使用命令行进入到此目录

20150129031154

5. 开始解密

20150129031304

6. 解密成功

20150129031410

7. 说明: 这里提供解密的版本如下:

20150129031535

第二: php5.3版本

1. 使用如下软件

20150129031759

2.  查看加密文件代码

此版本为php5.3

20150129032042

3. 使用此软件解密

20150129032208

4. 打开此软件,选择Xcache解密

20150129032336

5. 选择加密文件,开始解密

20150129032453

6. 解密成功!

至于软件上的其它功能,大家可以下载去玩玩!

20150129032545

PHP扩展开发: 简单的HelloWord

最近摸索CentOS7.0系统的操作比较多,而php对应的扩展部署加载也用的比较多,但是一直都没有想去开发一个属于自己的扩展,刚好最近需要用到这个扩展开发,开发一些小功能,所以就开始着手写一个比较简单的HelloWord扩展来记录下。

第一步: 查看服务器上的PHP版本

说明: 开发php扩展前提是服务器上的apache和php都正常。

20150128004038

第二步: 下载php5.4.16源码

1. 下载php5.4.16,自己到php官网下载即可

20150128004338

2. 上传到/home/jhonse目录下

20150128004439

3. 解压

20150128004604

第三步: 开发php扩展

1. 进入解压好的php文件夹下的ext目录

20150128004752

2. 创建一个php扩展

20150128005017

3. 查看创建好的扩展jExt

20150128005220

4. 修改config.m4文件

说明: dnl 注释

20150128005530

20150128005804

 

5.  编辑扩展头文件php_jExt.h

20150128010925

6. 在头文件中添加HelloWorld方法声明

20150128011233

7. 编辑jExt.c源文件

20150128011445

8. 在jExt.c文件中添加HelloWorld方法。

20150128011734

20150128012043

9. 使用phpize命令把config.m4文件的内容生成configure文件  

20150128012205

报错,需要安装php-devel

20150128012544

20150128012753

10. 生成.so扩展文件

 ./configure --with-php-config=/usr/bin/php-config

20150128013017

make

20150128013156

 

20150128013301

第四步: 调用扩展

调用开发出来的扩展其实跟调用json.so等等扩展是一样。

1. 修改php.ini文件或者在php.d/目录下添加jExt.ini文件

20150128013645

2. 把生成出来的jExt.so复制到php对应的module目录下。

20150128013839

3. 重启httpd服务,并且查看是否已加载次扩展文件。

通过phpinfo()来查看。

20150128014047

4. 调用此模块中的HelloWorld方法

20150128014230

20150128014258

Zend Guard 6.0: 搭建zend环境

Zend Guard 6.0安装了,也破解了,php文件也加密了,现在需要的是如何在服务器上正常访问该加密的php文件。也就是说如何搭建zend环境。请看如下步骤:

第一步: 查看php版本

说明: 因为加密的php文件是采用的是php5.4版本,所以服务器上的php版本也应该是5.4.

1

2第二步: 把加密的php文件上传到服务器上看看效果

11

12

提示php文件采用了Zend Guard加密,需要安装Zend Loader/ZendOptimizer

第三步: 下载Zend Guard Loader

首先说明下ZendOptimizer不再支持php版本为5.3以上的了,只能使用Zend Guard Loader。所以为windows/linux下载Zend Guard Loader文件。windows对应的为dll文件,而Linux对应的为so文件。

21

22

第四步: 修改php.ini文件

把下载好的Zend Guard Loader.dll/Zend Guard Loader.so文件放到php的扩展模块目录下module/ext.

31

32

修改php.ini文件

20150126183055

windows版本也差不多,这里就不多说了,因为我本地的环境是wamp,而wamp的php是Thread Safe模式,而Zend Guard Loader只能用在No Thread Safe版本,所以下面的就只介绍Linux版本的了。

第六步: 重启httpd服务,查看Zend Guard Loader是否安装

20150126183633

第七步: 查看加密文件是否正常

20150126183735

还是提示未安装Zend Loader。。。如何解决?

第八步: SElinux的原因,临时关闭SElinux。

20150126184119

 

并且重启httpd服务。

第九步: 查看效果

20150126184316

 

 

CentOS7.0 PHP卸载以及安装

因为项目需求得把php版本从5.4降到5.3.所以需要先把CentOS7.0自带的php卸载,然后安装php5.3。请看如下步骤。

第一步: 卸载php5.4

1. 查看php版本

20150126114044

2. 卸载php

20150126112017

3. 查看php是否卸载

20150126112100

php未能完成卸载,还有对应的依赖包。所以需要接着来卸载。

4. 卸载php对应的依赖包

网上的资料是用rpm -e来卸载,但是试了几次都提示不能找到该安装包。

# rpm -e php-mysql-5.1.6-27.el5_5.3
# rpm -e php-pdo-5.1.6-27.el5_5.3
# rpm -e php-xml-5.1.6-27.el5_5.3
# rpm -e php-cli-5.1.6-27.el5_5.3
# rpm -e php-gd-5.1.6-27.el5_5.3
# rpm -e php-common-5.1.6-27.el5_5.3

自己解决的办法是如下:

20150126114734

20150126114812

5. 再次查看php是否卸载完成

20150126114903

第二步: 安装php

1. 下载php

20150126140759

2. 上传到服务器,并且解压

20150126141001

3. 安装php

1. 说明:

#–prefix=/usr/php ##PHP安装路径

#–exec-prefix=/usr/bin ##PHP命令执行路径

#–sysconfdir=/etc ##配置文件存放路径

#–with-apxs2=/usr/sbin/apxs ##Apache apxs扩展路径

#–with-mysql=/var/lib/mysql ##mysql路径

#–with-mysqli=/usr/bin/mysql_config ##mysqli路径

#–with-mcrypt ##启用加密模块

20150126142358

2. 出现错误, error: xml2-config not found.

20150126142757

20150126142848

20150126143231

3. 接着安装php

20150126161152

20150126143343

4. 编译php

20150126143629

5. 出现错误提示

20150126144211

网上解决方法如下:

20150126144306

20150126151845

6. 接着编译php

20150126152914

7. 编译test

20150126153604

8. 安装成功

20150126155515

 

9. 说明

如果apache不识别php,请对应的在http.conf中添加:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php

Zend Guard 6.0: 加密php文件

安装破解版的Zend Guard 6.0软件之后,博主Jhonse哥就尝试给php文件加密。

第一步: 打开Zend Guard 6.0软件

20150124142748

20150124142757

第二步: php文件加密

1.  创建Zend Guard Project

20150124143014

2. 填写项目信息

20150124143436

3. 添加源文件或者源文件夹

20150124143849

4. 配置源文件加密属性

因为我的windows/Linux服务器的php版本都是5.4的,所以选择版本为5.4加密

20150124144015

5. 开始加密

20150124144247

6. 加密成功

20150124144448

7. 查看php文件加密效果

20150124144627

20150124144711

Zend Guard 6.0: 安装以及破解

从来没有用过Zend Guard 6.0给php文件加密,最近需要用到这功能,所以到Zend官网下载这工具,结果需要注册才能下载,下载之后只能使用14天,需要花钱购买。所以只好网上查资料来破解破解…

说明: Zend Guard 6.0支持php5.3和5.4,其加密性能更强。

20150124104031

第一步:  先从官网下载Zend Guard 6.0使用版

20150124104737

第二步. 如果不想注册账号而下载对应的安装包,本博客提供一个已经下载好的安装包。

20150124105814

第三步.  开始安装,双击ZendGuard-6_0_0.exe

20150124105954

第四步.  正在安装中.

20150124110106

第五步. 进入安装界面,点击下一步。

20150124110201

第六步. 同意协议,下一步

20150124110548

第七步.  选择安装路径,下一步

20150124110646

第八步. 接着进行下一步,等待安装完成。

20150124110751

第九步. 安装完成!

20150124112211

第十步. 看看试用版界面

20150124113152

第十一步. 下载破解包

20150124113248

第十二步. 将这4个文件放到plugins\com.zend.guard.core.resources.win32.x86_6.0.0.201305051318\resources

20150124113446

20150124113713

第十三步. 再次启动zend guard 6.0,破解成功!

20150124113912

说明:

Zend Guard – 5.5.0 适用于加密:php 5.2/php 5.3的文件
Zend Guard – 6.0.0 适用于加密:php 5.3/php 5.4的文件

企业高并发的成熟解决方案: 负载均衡LVS搭建

一直想通过LVS来实现负载均衡,看上去很牛逼的样子。所以博主Jhonse哥第一时间看视频教程,网上查资料,终于通过LVS实现了负载均衡,也为以后公司需要的时候可以直接用上。不过此搭建过程都是在虚拟机里操作的。

20150116213224

第一步: 搭建4台服务器

4台服务器都是CentOS 7.0,至于如何在虚拟机里创建CentOS,请看之前的博文。

20150119120613

第二步: 给4台服务器分配IP

分配IP可以采取两种方式: 自动分配,手动分配。

1. 自动分配

这个比较简单,如果在安装完CentOS 7.0之后,虽然选择的自动分配IP,但是获取不到IP,为什么呢?

20150119121236

如何设置才能自动分配IP呢?找到网卡配置文件。

20150119121455

编辑ifcfg-eno16777736,并修改ONBOOT为yes,以及BOOTPROTO为dhcp.

20150119121553

保存退出,然后重新启动network服务。

20150119122030

如果提示这个错误,请开启虚拟机对应的服务即可。

20150119122156

重启network服务,即可获得IP地址。

20150119122312

2. 手动分配IP

20150119122608

重新启动network服务,即可获得IP地址。

20150119122748

第三步: 通过4台服务器的IP,对应的分配负载均衡服务器,以及APP服务器

负载均衡主机:  192.168.197.131

负载均衡备机:  192.168.197.4

APP服务器1:   192.168.197.132

APP服务器2:   192.168.197.133

虚拟IP(访问IP): 192.168.197.100

20150119123950

第四步: 开始搭建负载均衡

1. 配置APP服务器站点

在/var/www/html/目录下添加index.php文件

20150119141947

关闭防火墙

20150119142046

展示结果

20150119145031

20150119151013

 

2. 为APP服务器配置虚拟IP

添加虚拟IP配置文件

20150119124835

编辑ifcfg-lo:0, 记得NETMASK=255.255.255.255,不然无法ping通。

20150119150730

然后保存退出,重启network服务

20150119125353

接着修改/etc/rc.local文件

20150119130708

然后执行route add -host 192.168.197.100 dev lo:0

20150119144239

调整/proc响应参数,修改 /etc/sysctl.conf

20150119130816

使用sysctl -p命令来查询是否正确

20150119130957

查看虚拟IP

20150119131048

根据以上方法将APP服务器二也设置好虚拟IP.

20150119141526

3. 设置负载均衡主机

需要安装ipvsadm、keepalived软件,而CentOS7.0自带了。

20150119151758

20150119151942

找到keepalived配置文件: /etc/keepalived/keepalived.conf

20150119153757

! Configuration File for keepalived

global_defs {
   notification_email {
	admin@jhonse.com #故障接受联系人
   }
   notification_email_from Alexandre.Cassen@firewall.loc #故障发送人
   smtp_server 192.168.200.1 #本机发送邮件
   smtp_connect_timeout 30 #BACKUP上修改为LVS_BACKUP
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER #BACKUP上修改为BACKUP
    interface eno16777736 #网卡接口名称
    virtual_router_id 51 #虚拟路由标识,主从相同
    priority 100 #BACKUP上修改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111 #主从认证密码必须一致
    }
    virtual_ipaddress {  #Web虚拟IP(VTP)
        192.168.197.100
    }
}

virtual_server 192.168.197.100 80 {  #定义虚拟IP和端口
    delay_loop 6  #检查真实服务器时间,单位秒
    lb_algo wrr    #设置负载调度算法,rr为轮训
    lb_kind DR   #设置LVS负载均衡DR模式
    nat_mask 255.255.255.0
    persistence_timeout 50 #同一IP的连接60秒内被分配到同一台真实服务器
    protocol TCP  #使用TCP协议检查realserver状态

    real_server 192.168.197.132 80 {  #第一个web服务器
        weight 1  #节点权重值
        TCP_CHECK {  #健康检查方式
            connect_timeout 3  #连接超时
            nb_get_retry 3 #重试次数
            delay_before_retry 3 #重试间隔/S
        }
    }
	
	real_server 192.168.197.133 80 {  #第二个web服务器
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

启动keepalived

20150119152649

查看当前连接负载的情况

20150119152737

关闭防火墙

20150119152829

查看效果:

20150119154011

20150119154436

20150119154519

当一台APP服务器挂了的效果是:

20150119154712

20150119154740

4. 设置负载均衡备机

其实和配置负载均衡主机差不多,只是要keepalived配置文件不一致而已,配置文件中已注释了。

20150119155010

效果:

20150119155314

当负载均衡主机挂了的时候,负载均衡备机开始工作。

20150119155504

20150119155542

虚拟机VMware 10安装CentOS 7.0系统

需要搭建负载均衡服务器,需要Centos系统以及在本地测试,所以只好用虚拟机VMware10来安装CentOS7.0系统来测试。如何安装CentOS7.0系统,请看如下步骤:

第一步: 下载CentOS7.0对应的ISO包。

20150116154443

第二步: 安装VMware10.0虚拟机

20150116154601

第三步: 安装CentOS7.0系统

1. 在虚拟机中新建虚拟机

20150116154754

2. 设置类型配置

20150116154944

3. 选择CentOS7.0镜像文件

20150116155039

4. 选择操作系统

20150116155146

5. 命名虚拟机

20150116155304

6. 指定磁盘容量

20150116155346

7. 已准备好创建虚拟机

20150116155428

8. 进入配置好虚拟机界面

20150116155516

9. 开启虚拟机

20150116155613

10. 进入CentOS安装界面

20150116155648

11. 安装CentOS 7.0

20150116160413

12. 选择系统语言

20150116160616

13. 安装信息摘要(无界面的系统)

20150116160903

 

软件的话我选择的是基本网页服务器,且没有界面的

系统对应的网络请开启,且我选择的DHCP自动获得IP

14. 配置root账号

20150116161017

15. 等待安装

20150116161147

16. 安装完成

20150116164419

17. Centos7.0界面

20150116164628

18. 测试网络以及USB接口

20150116164820

未获得IP以及USB不识别,解决方法是开启对应的服务。

20150116165505