准备 Azure 账号一枚(学生版也可) Windows/Linux/macOS/(BSD)/... 等支持 python 的命令行环境 FTP 客户端工具 安装 Azure 命令行工具 可以参考官方文档 [链接] 安装后打开命令行。 Azure 账号初始配置 登录 Azure 账号 az login 查看所有订阅 a ..

使用 Azure App Service 免费计划部署 Solo 博客过程记录

本贴最后更新于 278 天前,其中的信息可能已经时移世异

准备

安装 Azure 命令行工具

可以参考官方文档 Install Azure CLI

安装后打开命令行。

Azure 账号初始配置

登录 Azure 账号

az login

查看所有订阅

az account list --all

选择一个默认订阅进行操作(如果有不止一个订阅的话)

az account set -s 所选的订阅ID

创建部署用户(之后要用到!)

az webapp deployment user set --user-name 用户名 --password 密码

查看所有部署用户

az webapp deployment user show

创建应用服务

查看所有可用区域

az account list-locations

创建资源组,如果已创建可跳过,这里选择 East Asia(即香港区)

az group create -l eastasia -n 资源组名称

创建免费的应用服务计划,如果已创建可跳过

az appservice plan create -n 服务计划名称 -g 资源组名称 --sku FREE

查看所有运行时

az webapp list-runtimes

创建应用服务,这里选择java|1.8|Jetty|9.3运行时。

az webapp create -g 资源组名称 -p 服务计划名称 -n 应用服务名称 -r "java|1.8|Jetty|9.3"

部署 Solo

下载 Solo .war 包,我这里为大家提供了直链下载地址,请尽情地随意地放肆地使用(因为没有流量费),或者从百度盘的官方分享上自行下载

wget https://b2.actom.cc/file/ynq65v/b3log/solo/solo-2.9.6.war

上传 .war 包并部署

curl -X POST -u 部署用户名 \
--data-binary @"./solo-2.9.6.war" \
https://应用服务名称.scm.azurewebsites.net/api/wardeploy

配置 Solo

在 Azure 面板上,选择你的应用服务,开启 In-App MySQL 服务,等待一分钟。

此时访问一次 URL 首次启动应用以激活 MySQL 服务。开启页面可以直接关掉,不用等到加载完成。

打开 FTP 工具,使用面板上显示的 FTP 地址和 应用服务名称/部署用户名 及部署用户密码登录。

打开 data/mysql/MYSQLCONNSTR_localdb.txt 查看数据库密码及端口。如果不存在此文件,请继续等待或尝试重启。

用户名为 azure;数据库名为 localdb;服务器地址为 127.0.0.1

点击中间偏上方的 Manage 可以打开 phpMyAdmin。

然后选择 localdb 数据库,在 Operations 修改 Collation 为 utf8mb4_general_ci

打开 site/wwwroot/webapps/ROOT/WEB-INF 修改相关配置并通过 FTP 上传。请参考用户指南

数据库配置在 local.properties。下方为使用 In-App MySQL 的配置。

#### H2 runtime ####
#runtimeDatabase=H2
#jdbc.username=root
#jdbc.password=
#jdbc.driver=org.h2.Driver
#jdbc.URL=jdbc:h2:~/solo_h2/db

#### MySQL runtime ####
runtimeDatabase=MYSQL
jdbc.username=azure
jdbc.password=<YOUR_PASSWORD>
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.URL=jdbc:mysql://127.0.0.1:<YOUR_PORT>/localdb?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC

回到 Azure 面板,Stop 停止应用,一分钟后打开 URL,应出现蓝色 403 应用已停止提示界面。再 Start 启动。等待一分钟。

此时,打开 应用服务名称.azurewebsites.net,等待一会,应该就能看到初始化界面了。

后期折腾

使用 Azure 面板上的应用 console 功能,通过 tail 命令可以查看 solo.log,查找问题所在。

免费计划没有自定义域名功能。

正确的重启方式:应对配置不生效等奇葩问题

先确定配置已经正确上传 FTP,然后 Stop 停止应用,一分钟后打开 URL,应出现蓝色 403 应用已停止提示界面。

再 Start 启动,等一分钟,打开 URL,等待几十秒打开第一个页面,即完全启动。

此文来自一名从没学过 Java 的第一次部署 Solo 的学生党。还请多多指教。

打赏 15 积分后可见  
15 积分 • 1 打赏
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    712 引用 • 5414 回帖 • 698 关注
  • Azure
    4 引用 • 20 回帖
4 回帖   
请输入回帖内容...
  • ybh  

    使用默认的 email 配置,配置了正确的 smtp 用户名、密码和服务器地址 (mailgun), 报错
    javax.net.ssl.SSLException: java.security.ProviderException: java.security.KeyException: Key does not exist
    搜了半天,都没找到解决办法……

    mail.debug 的日志是 solo.log 吗?还是别的地方?

  • ybh  

    @88250 刚才那个报错就是开了 debug solo.log 里面找到的。

  • 88250

    你贴一下 mail.props 的配置,我们一起看看。注意密码不要帖。

    1 回复
  • ybh        

    问题已解决。莫名其妙,不知原因,可能是重启不充分……

    下面是成功的完整配置。

    mail.user=postmaster@email.com
    mail.password=hex
    mail.debug=true
    mail.smtp.host=smtp.mailgun.org
    mail.smtp.port=587
    mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
    mail.smtp.socketFactory.fallback=false
    mail.smtp.socketFactory.port=465