Windows Azure的Website服务可以托管多种代码编写的网站应用,包括.NET, Node.js和PHP。他们都使用IIS托管。其中PHP是通过IIS上的PHP插件进行支持的。当我们在Azure上申请一个Website时,它已经缺省支持PHP应用了,我们不需要进行任何配置。下面就简要看下如何发布PHP应用到Azure上
首先,在门户上创建Website
创建时选择Create with Database
为站点输入一个域名前缀。Azure上的网站都在azurewebsites.net域名下,我们如果自己有域名,可以在创建站点后将自己的域名和Azure上的站点绑定。数据库可以选择SQL database或者是Mysql. 其中SQL由微软提供服务,Mysql由ClearDB提供服务
创建成功后点击网站名
进入后可以查看网站的整体情况。上半部分是性能指标监控,包括CPU、流量、HTTP请求情况等,这些被监控的指标可以在Monitor页面中配置。中间的部分是使用信息计量,包括已消费的量和剩余的量。对于免费站点来说,每天可用的出流量是165MB,超出后该网站会被暂停,直到第二天又获得165MB配额。中间右侧是配置信息概览,包括站点URL,FTP地址和用户名等。底部是一些常用功能,比如停止或重启该站点,或者用WebMatrix编辑网站文件
此时点击网站链接即可访问网站。此时网站只有一个空页面。
在configure页面,可以配置PHP版本,绑定自己的域名,启用日志(日志可以通过FTP下载)等。在connection string里面,记录着刚才我们创建的数据库的连接字符串,把这里的database、data source、username和password记录下来,后面编写PHP应用时会采用这些信息连接数据库
在Scale界面,我们可以改变网站的规模。Free模式下只能有1个IIS实例,Shared模式下可以跟别人共享多个IIS实例,Reserved模式下可以独占多个IIS实例,且每个IIS实例运行于独立的虚机
下面,我们看下如何向该网站发布代码。Azure支持多种发布方式,包括:
- FTP。是最简单的方式,采用通用FTP客户端或者Windows都可以访问该站点的FTP入口
- Git。是目前一种比较热门的基于互联网的源代码管理服务。Azure和Git进行了集成。我们可以把代码发布到Git上,然后Azure会自动从Git上下载最新代码
- TFS。微软源代码管理服务。这里TFS的S是service而不是Server。我们可以把代码发布到TFS上,然后Azure会自动从TFS上下载最新代码
- WebDeploy。是微软的一种网站内容发布协议,微软的Visual studio或WebMatrix工具可以使用该协议发布网站内容。
首先看下FTP。回到Dashboard界面,在中部右侧有FTP hostname和FTP username,这里的密码如果不知道,点击上面的Reset Deployment Credentials,在里面输入用户名和新密码。
然后就可以用FTP连接了。这里我们用Windows自带的资源管理器来连接。直接在浏览器上点击FTP路径。
在弹出的对话框中输入用户名和密码。要注意用户名要跟界面上显示的一样,由站点名和用户名两部分组成,中间由"\"连接。
这样就可以用IE打开FTP目录了,里面有两个文件夹,分别是代码目录和日志目录。
不过IE不支持上传,只能浏览。可以切换到资源管理器。在菜单上选择View->open FTP....。之后就可以像访问本地文件一样访问远程文件了。
对于MySQL数据库的发布,有两种方式,一种方式使用Mysql命令行执行SQL命令进行表创建和数据生成,另一种方式是用Mysql工具进行数据导入。Mysql的连接方式可以从Configure界面里的connection strings获得,而上传的PHP程序里面指向的数据库也应该是这个位置
除了继续使用Mysql外,我们也可以把Mysql迁移到Azure上的SQL database上,可参考http://blog.csdn.net/shaunfang/article/details/8557773
下面就简单做一个PHP+MYSQL的测试。这里采用Mysql workbench工具作为Mysql管理工具。Mysql workbench可从Oracle网站下载
1. 首先用Mysql workbench连接到Azure上的Mysql实例上。在New connection里面输入Mysql的连接信息,包括hostname,username和密码。它们来自于前面提到的connection strings
2. 打开后即可运行SQL命令建表,比如:
CREATE TABLE registration_tbl(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(30), email VARCHAR(30), date DATE);
3.在本地建立一个PHP文件:index.php,把里面的host,user,pwd,db替换成connection strings里面提供的内容
<html>
<head>
<Title>Registration Form</Title>
<style type="text/css">
body { background-color: #fff; border-top: solid 10px #000;
color: #333; font-size: .85em; margin: 20; padding: 20;
font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;
}
h1, h2, h3,{ color: #000; margin-bottom: 0; padding-bottom: 0; }
h1 { font-size: 2em; }
h2 { font-size: 1.75em; }
h3 { font-size: 1.2em; }
table { margin-top: 0.75em; }
th { font-size: 1.2em; text-align: left; border: none; padding-left: 0; }
td { padding: 0.25em 2em 0.25em 0em; border: 0 none; }
</style>
</head>
<body>
<h1>Register here!</h1>
<p>Fill in your name and email address, then click <strong>Submit</strong> to register.</p>
<form method="post" action="index.php" enctype="multipart/form-data" >
Name <input type="text" name="name" id="name"/></br>
Email <input type="text" name="email" id="email"/></br>
<input type="submit" name="submit" value="Submit" />
</form>
<?php
// DB connection info
//TODO: Update the values for $host, $user, $pwd, and $db
//using the values you retrieved earlier from the portal.
$host = "value of Data Source";
$user = "value of User Id";
$pwd = "value of Password";
$db = "value of Database";
// Connect to database.
try {
$conn = new PDO( "mysql:host=$host;dbname=$db", $user, $pwd);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(Exception $e){
die(var_dump($e));
}
// Insert registration info
if(!empty($_POST)) {
try {
$name = $_POST['name'];
$email = $_POST['email'];
$date = date("Y-m-d");
// Insert data
$sql_insert = "INSERT INTO registration_tbl (name, email, date)
VALUES (?,?,?)";
$stmt = $conn->prepare($sql_insert);
$stmt->bindValue(1, $name);
$stmt->bindValue(2, $email);
$stmt->bindValue(3, $date);
$stmt->execute();
}
catch(Exception $e) {
die(var_dump($e));
}
echo "<h3>Your're registered!</h3>";
}
// Retrieve data
$sql_select = "SELECT * FROM registration_tbl";
$stmt = $conn->query($sql_select);
$registrants = $stmt->fetchAll();
if(count($registrants) > 0) {
echo "<h2>People who are registered:</h2>";
echo "<table>";
echo "<tr><th>Name</th>";
echo "<th>Email</th>";
echo "<th>Date</th></tr>";
foreach($registrants as $registrant) {
echo "<tr><td>".$registrant['name']."</td>";
echo "<td>".$registrant['email']."</td>";
echo "<td>".$registrant['date']."</td></tr>";
}
echo "</table>";
} else {
echo "<h3>No one is currently registered.</h3>";
}
?>
</body>
</html>
4.把这个文件通过FTP上传到Azure的wwwroot下
5. 最后,点击网站链接即可访问
结果如下
分享到:
相关推荐
Windows Azure Platform + PHP 微软云计算平台的PPT
在windowsazure中托管和使用wcf.
Windows Azure
Azure+OpenAI+(ChatGPT)试用攻略及企业Azure+OpenAI指南
全书共12章,内容包括云计算概论、云计算技术概观、初探Windows Azure、Windows Azure应用程序开发基础、Windows Azure应用程序开发:Table存储服务、Windows Azure应用程序开发:BLOB存储服务、Windows Azure应用...
Azure[Sky]+Dynamic+Skybox+v4.3.6.rar
windows azure mvp 的技术实践和心得体会,主要包括windows azure 平台的基础知识、使用方法、功能特点以及如何基于windows azure 平台设计高可靠、可扩展的应用程序,几乎涵盖了windows azure 平台的所有内容。...
Windows Azure 概述
Windows+Azure实战 资源是从华章出版社官网下载的
Build, deploy and manage cloud solutions using combination of Windows Azure Pack, System Center and Hyper-V Impress your peers at work by learning to build applications that can leverage the cloud to ...
《Windows Azure从入门到精通》针对微软的云计算平台windows azure,循序渐进地介绍了如何构建和管理云端的可扩展应用,一次一个知识点,同时辅之以适当的练习,可帮助读者轻松掌握基本的编程技能,掌握windows ...
Windows Azure MVP 的技术实践和心得体会,主要包括Windows Azure 平台的基础知识、使用方法、功能特点以及如何基于Windows Azure 平台设计高可靠、可扩展的应用程序,几乎涵盖了Windows Azure 平台的所有内容。...
例如,可以使用 Windows Azure 构建一个在 Microsoft 数据中心运行并存储其数据的 Web 应用程序。或者只使用 Windows Azure 存储数据,而使用此数据的应用程序则在本地(即公有云之外)运行。可以使用 Windows Azure...
学习微软云设计的好资料
Windows Azure入门教学系列
简要描述Windows Azure最新的功能、特色和主要的服务
微软WindowsAzure云应用开发实践整理.pdf
70-583 PRO: Windows Azure 题库
windows azure
Windows Azure使用入门 第二课:建立自己的网站.pdf