一次偶然的机会,在开源中国上了解到一个有趣的开源项目:xblog (C++开发的BLOG程序),因为自己一直做后台开发,主要用C/C++实现,对于Web方面的开发知之甚少,但又比较好奇是否可以用C/C++来实现web应用,因此该项目很对我的胃口,希望能深入了解这个项目的实现。
近期在xBlog项目作者xSky的帮助下,终于将xBlog项目在我的linux虚拟机上部署成功,现将整个过程记录下来,以方便后续进一步学习,也供其他对xBlog感兴趣的朋友参考。
在RedHatLinux 6.3 (x86_64, 最简安装环境,minimal, 配置了redhat安装盘自带的本地yum源,无法连接外网)上安装部署xBlog的步骤如下:
- 安装文件准备:
- xblog-master_20140114.zip
- MySQL-server-5.5.30-1.el6.x86_64.rpm
- MySQL-client-5.5.30-1.el6.x86_64.rpm
- MySQL-devel-5.5.30-1.el6.x86_64.rpm
- libevent-2.0.21-stable.tar.gz
- xblog-master_20140114.zip
- 安装数据库:
- 查看是否安装过MYSQL,显示已有相关lib包安装
# rpm -qa | grep -i mysql
- 将系统自带的mysql删除
# rpm -ev --nodeps mysql-libs-5.1.61-4.el6.x86_64
- 安装MYSQL服务端:
# yum install -y MySQL-server-5.5.30-1.el6.x86_64.rpm
- 安装MYSQL客户端:
# yum install -y MySQL-client-5.5.30-1.el6.x86_64.rpm
- MYSQL安装完成,关闭MYSQL服务:
# service mysql stop
- MYSQL开发库配置:
# rpm -ivh MySQL-devel-5.5.30-1.el6.x86_64.rpm
- Mysql 配置
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
在[mysql]节添加如下配置项
[mysql]
default-character-set = utf8
在[mysqld]节对配置进行调整
修改:
max_allowed_packet = 300M
添加:
lower_case_table_names=1
character_set_server=utf8
collation-server=utf8_general_ci
character_set_client=utf8
max_connections=1000
#skip-name-resolve
local-infile = 0
启动MYSQL:
#service mysql start
对mysql的用户名、帐号、及默认数据库进行调整
/home/mysql/bin/mysql -u root –p
然后会提示输入密码,输入正确密码后,会出现mysql>提示符
mysql>use mysql;
mysql>SET PASSWORD FOR root@localhost=PASSWORD('111111');(修改root密码)
创建xblog数据库:
mysql>use mysql;
mysql>insert into user(host, user, password) values('localhost', 'xblog', password('xblog'));
mysql>create database xblog default character set utf8 collate utf8_general_ci;
mysql>grant all privileges on xblog.* toxblog@localhost identified by 'xblog';
mysql>flush privileges;
mysql>quit
- 查看是否安装过MYSQL,显示已有相关lib包安装
- libevent安装
- 原本计划通过rpm包安装(rpm -ivh libevent-devel-1.4.13-4.el6.x86_64.rpm),但是发现依赖:libevent-headers-1.4.13-4和libevent-doc-1.4.13-4,但是安装rpm -ivh libevent-headers-1.4.13-4.el6.noarch.rpm, rpm -ivh libevent-doc-1.4.13-4.el6.noarch.rpm的时候又报错说依赖:libevent-devel-1.4.13-4,陷入依赖的死循环
- 网上查了一下,在CentOS, REHL6上似乎的确存在libevent依赖问题,应此改用源代码包安装:libevent-2.0.21-stable.tar.gz
- tar -xvzf libevent-2.0.21-stable.tar.gz
- ./configure
- make
- make install
- tar -xvzf libevent-2.0.21-stable.tar.gz
- 原本计划通过rpm包安装(rpm -ivh libevent-devel-1.4.13-4.el6.x86_64.rpm),但是发现依赖:libevent-headers-1.4.13-4和libevent-doc-1.4.13-4,但是安装rpm -ivh libevent-headers-1.4.13-4.el6.noarch.rpm, rpm -ivh libevent-doc-1.4.13-4.el6.noarch.rpm的时候又报错说依赖:libevent-devel-1.4.13-4,陷入依赖的死循环
- 编译源代码
- 解压源码包:
- yum install unzip.x86_64
- unzip xblog-master_20140114.zip
- yum install unzip.x86_64
- 编译源码:
- yum install gcc.x86_64
- yum install gcc-c++.x86_64
- yum install make.x86_64
- yum install zlib.x86_64
- yum install zlib-devel.x86_64
- 调整xBlogMain.cpp的第18行为:(int)event_get_version_number(),
- 编辑makefile文件
增加:LIB_DIR := /usr/lib64/mysql
将LDFLAGS调整为: LDFLAGS := -L$(LIB_DIR)$(addprefix -l,$(LD_LIBS)) `mysql_config --cflags --libs`
- make
- yum install gcc.x86_64
- 解压源码包:
- 系统参数配置
- 编辑xblog的配置文件xblog.ini
设置监听地址及端口:
[HTTPD]
IP=192.168.94.135
PORT=8080
设置根据之间建立的数据库设置数据库的参数:
[MYSQLPOOL]
IPADDR=127.0.0.1
PORT=3306
USER=xblog
PASSWD=xblog
DBNAME=xblog
- 关闭linux防火墙
iptables -L
iptables -F
service iptables stop
chkconfig --level 2345 iptables off
chkconfig --list | grep iptables
- 编辑xblog的配置文件xblog.ini
- 设置环境变量,启动应用
- 由于需动态加载libevent库,应此在脚本执行前,需指定lib目录
whereis libevent
libevent: /usr/local/lib/libevent.la /usr/local/lib/libevent.a /usr/local/lib/libevent.so
在xBlog.sh中添加:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 调整脚本的执行权限
chmod +x xBlog.sh
- 由于部署主机无法连接外网,因此需手动调整部分代码:
编辑/xblog-master/xblogroot/admin/admin.htm
对jquery.min.js访问进行调整:
原:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="/admin/js/jquery.main.js"></script>
<script type="text/javascript" src="/admin/js/admin.js"></script>
调整为:
<!-- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> -->
<script type="text/javascript" src="/admin/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/admin/js/admin.js"></script>
<script type="text/javascript" src="/admin/js/jquery.main.js"></script>
- 启动xblog:
# ./xBlog.sh start
Now will start the [xblog].
Now run the [xblog]. Please waite...
The [xblog] is started successful! The pid is [24268].
- 由于需动态加载libevent库,应此在脚本执行前,需指定lib目录
- 访问:http://192.168.94.135:8080/admin (admin,123)
修改部分默认配置:
网站配置(站点配置)页面中,将“XBLOG_HOST”的访问地址设置为“http://192.168.94.135:8080/”
- 登录系统首页:http://192.168.94.135:8080/