我使用 Web Plaform Installer 创建了一个 Web 角色来安装 PHP(运行良好,没有问题),我使用 Eclipse 创建了一个 Worker 角色来安装 MySql。Eclipse 创建 Mysql_WorkerRole.dll(以及其他)。以下是我的 .csdef 文件
<WebRole enableNativeCodeExecution="true" name="PhpMySqlWA_phpWebRole">
<Startup>
<Task commandLine="install-php.cmd" executionContext="elevated" taskType="background" />
</Startup>
<Sites>
<Site name="MyPHPSite" physicalDirectory=".\PhpMySqlWA_phpWebRole">
<Bindings>
<Binding name="HttpEndpoint" endpointName="HttpIn" />
</Bindings>
</Site>
</Sites>
<Imports/>
<Endpoints>
<InputEndpoint name="HttpIn" port="80" protocol="http"/>
</Endpoints>
<ConfigurationSettings>
<Setting name="StorageAccountName"/>
<Setting name="StorageAccountKey"/>
<Setting name="SqlAzureHost"/>
<Setting name="SqlAzureUserName"/>
<Setting name="SqlAzurePassword"/>
<Setting name="SqlAzureDatabase"/>
<Setting name="UseDataStorage"/>
<Setting name="UseDevelopmentStorage"/>
<Setting name="UseCloudStorage"/>
<Setting name="UseSqlAzure"/>
<Setting name="LogLevel"/>
<Setting name="ScheduledTransferPeriodInSeconds"/>
<Setting name="WindowsAzureStorageConnectionString"/>
<Setting name="XDrives"/>
<Setting name="XDrivesLocalCache"/>
</ConfigurationSettings>
</WebRole>
<WorkerRole enableNativeCodeExecution="true" name="PhpMySqlWA_MysqlWorkerRole" vmsize="Medium">
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
<LocalResources>
<LocalStorage cleanOnRoleRecycle="false" name="MySQL" sizeInMB="260"/>
<LocalStorage cleanOnRoleRecycle="false" name="MySQLDatastore" sizeInMB="60"/>
</LocalResources>
<ConfigurationSettings>
<Setting name="InitFile"/>
<Setting name="LogLevel"/>
<Setting name="ScheduledTransferPeriodInSeconds"/>
<Setting name="WindowsAzureStorageConnectionString"/>
</ConfigurationSettings>
<Endpoints>
<InternalEndpoint name="MySQL" protocol="tcp"/>
</Endpoints>
</WorkerRole>
当我执行
cspack ServiceDefinition.csdef /generateConfigurationFile:ServiceConfiguration.cscfg /role:PhpMySqlWA_MysqlWorkerRole;PhpMySqlWA_MysqlWorkerRole;Mysql_WorkerRole.dll /role:PhpMySqlWA_phpWebRole;PhpMySqlWA_phpWebRole /copyonly
and
csrun ServiceDefinition.csx ServiceConfiguration.cscfg /launchbrowser
Compute Emulator 中的 web 角色和 worker 角色都是绿色的,以下是我看到的 worker 角色
[fabric] Role Instance: deployment17(63).PhpMySqlWA.PhpMySqlWA_MysqlWorkerRole.0
[fabric] Role state Started
[runtime] Role entrypoint . CALLING OnStart()
[WaWorkerHost.exe] RoleEntryPoint.OnStart()
[runtime] Role entrypoint . COMPLETED OnStart()
[runtime] Role entrypoint . CALLING Run()
Information: Mysql_WorkerRole entry point called
Information: Copying folder mysql to C:/Users/ksaleh.CORP/AppData/Local/dftmp/Resources/d3fdb9aa- 67b5-4dad-9c50-0d5116ded0bc/directory/MySQL/
Information: Copying folder mysql\data to C:/Users/ksaleh.CORP/AppData/Local/dftmp/Resources/d3fdb9aa-67b5-4dad-9c50-0d5116ded0bc/directory/MySQLDatastore/
Information: MySQLIP=127.255.0.0
Information: MySQLPort=20001
Information: Copy C:/Users/ksaleh.CORP/AppData/Local/dftmp/Resources/d3fdb9aa-67b5-4dad-9c50- 0d5116ded0bc/directory/MySQL/my.ini
Information: Starting mysqld C:/Users/ksaleh.CORP/AppData/Local/dftmp/Resources/d3fdb9aa-67b5-4dad-9c50-0d5116ded0bc/directory/MySQL/bin/mysqld.exe
Information: Arguments --init-file=C:\\Users\\ksaleh.CORP\\AppData\\Local\\dftmp\\Resources\\d3fdb9aa-67b5-4dad-9c50-0d5116ded0bc\\directory\\MySQL\\
Information: enter looping
Information: Working
我将 connectDB.php 更改为使用 127.255.0.0:20001 作为主机(如上),但它会生成“连接到数据库时出错!”。我检查了我机器的事件查看器,发现错误:
C:/Users/myuser/AppData/Local/dftmp/Resources/d3fdb9aa-67b5-4dad-9c50-0d5116ded0bc/directory/MySQL/bin/mysqld.exe: unknown option '--skip-locking'
它说mysqlid.exe关闭完成
我是否真的安装了 mysql localy(计算模拟器),如果是,为什么服务停止了?为什么我无法连接数据库?我如何检查一切正常?谢谢你的建议。