近日国创要中期报告,赶在之前傻瓜式地搭了一下http服务器,过程如下(仅供参考):
目的:实现Android客户端与服务器间的通信,Android客户端用于识别条形码,并上传码值到服务器,通过查询数据库获取商品对应信息,再通过xml格式发回客户端进行解析并显示给用户。
客户端部分再次不做介绍。
开始打算在PC端用java socket写个java 服务器,由于网络编程知识的不足,短时间难以实现socket 发送xml的功能(网上说可以通过java序列化、soap之类的东西解决,但是多半是客户端提交给服务器,还请大虾们赐教),后来通过某些途径得知使用http协议可以搞定这一切(措辞可能不太专业),便找来wmap 5集成的安装包,搭了一个简单的服务器(当然可以分别安装,这里是为图简便)。
首先,下载wamp 5软件(wamp是Windows+Apache+MySQL+PHP的简称,这里是特定软件)。
然后安装wamp 5,一路默认就行。
下面就是配置了,一下截取至网络:
1、设置phpmyadmin
在WampServer安装完成后,通过http://localhost/打开后可以看到WampServer自带的一个简单的页面,里面有phpinfo、phpmyadmin和sqlitemanager三个工具。
打开phpmyadmin会在下方看到提示,root用户没有设置密码,我们先为root帐户设置密码。点击phpmyadmin页面中部的“权限”,可以看到“用户一览”,这时候应该只有一行用户信息,即root localhost这一行,点击这一行最右侧的编辑权限图标,在新页面找到“更改密码”,为root用户设置密码,并点击“执行”。
然后刷新页面,会看到错误提示,这是因为帐户已经设置密码,到WampServer程序安装目录,在apps目录找到phpmyadmin的目录,打开phpmyadmin目录里面的config.inc.php文件,找到下面这一行:
$cfg['Servers'][$i]['password'] = '';
在等号右面的单引号里面输入刚才设置的密码,重新打开phpmyadmin的页面并刷新,这时候phpmyadmin就可以正常访问了。
好了,我已经用WampServer简单的架设起一个Apache + PHP + MySQL的服务器了。
2、允许外网访问:
wamp 默认是禁止外网访问APACHE的,左键点击右下的wamp图标Apache - httpd.conf ,搜索关键字 "deny from ",会发现一处 "deny from"将其下的一行"Allow from 127.0.0.1" 之前加一个 #号,表示注释掉,新插入一行,手动输入Allow from all 。保存,重新启动下apache 服务就可以允许外网访问了。
3、apache, mysql 服务的开机自动运行
Windows - 开始? - 设置 - 控制面板 - 管理工具 - 服务,找到 wampmysqld, wampapache, 将 "启动类型" 由"手动" 改为"自动" 即可。
4、开启支持rewrite module
#LoadModulerewrite_module modules/mod_rewrite.so
去前面掉#,修改为
LoadModule rewrite_modulemodules/mod_rewrite.so
<Directory />
OptionsFollowSymLinks
AllowOverride None # 修改为AllowOverride All #
Order deny,allow
Deny from all
Satisfy all
</Directory>
<Directory"d:/wamp/www/">
#
# Possible values forthe Options directive are "None", "All",
# or any combinationof:
# Indexes IncludesFollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that"MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it toyou.
#
# The Optionsdirective is both complicated and important. Please see
#http://httpd.apache.org/docs/2.2/mod/core.html#options
# for moreinformation.
#
Options IndexesFollowSymLinks
#
# AllowOverridecontrols what directives may be placed in .htaccess files.
# It can be"All", "None", or any combination of the keywords:
# Options FileInfoAuthConfig Limit
#
AllowOverride None # 修改为AllowOverride All #
#
# Controls who canget stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
5、.php配置
查找short_open_tag =Off,把off改成On,注意是前面没有#号的那一排。
memory_limit =128M ;最大内存使用,运行程序提示内存不足时可修改其大小
upload_max_filesize =2M ;附件大小
、对于中文用户来说,安装结束后,首先要设置的是,把MySQL的数据库默认编码改为UTF-8,这样可以排除很多中文乱码问题:在WAMP5菜单中选择打开my(wamp).ini,设置其中的default-character-set=utf8, 然后重启WAMP5。
6、数据库默认的密码是空的,可以在phpMyAdmin中设置root帐号的密码为123456;当然修改之后,就要跟着修改phpMyAdmin的配置文件config.inc.php,否则phpMyAdmin就进不了数据库啦:
$cfg[''Servers''][$i][''user'']= ''root'';
$cfg[''Servers''][$i][''password'']= ''123456'';
至此,剩下的就是PHP的问题了(数据库提前建好)。花了一下午把PHP了解了一下,写了几句代码,但是,基本功能都实现了:接收客户端的post请求,访问数据库,更新xml,响应给客户端。
<?php
//获取客户端传来的条形码值book_id
$book_id = $_REQUEST['name'];
//$book_id=2009081318;
//通过条形码值查询数据库,更新xml文件
$link = mysql_connect('localhost', 'root','123456')
or die('Could not connect: ' . mysql_error());
mysql_select_db('test_android') ordie('Could not select database');
$query =" SELECT * FROM `students`WHERE qq = '$book_id' ";
$result = mysql_query($query,$link) ordie('Query failed: ' . mysql_error());
//$result1=mysql_fetch_assoc($result)."<br />";
//print_r($result1);
$line = mysql_fetch_row($result);
//simplexml方法解析xml
$xmlfile =simplexml_load_file("note.xml");
if (strlen($line)==0)
echo"No results!\n";
else
{
$xmlfile->student->name=$line[0];
$xmlfile->student->speciality=$line[1];
$xmlfile->student->qq=$line[2];
}
$newxml = $xmlfile->asXML(); //标准化$xml
$fp = fopen("note.xml","w"); //新建xml文件
fwrite($fp, $newxml); //写入xml文件
fclose($fp);
mysql_close($link);
//===========================================================================
echo "http://192.168.5.184/note.xml";
?>
所有东西差不多就OK了~~~
进一步打算,先深入理解wamp各部分原理,再在redhat上搭建lamp.