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

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

准备

安装 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 打赏
感谢    关注    收藏    赞同    反对    举报    分享
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   1 感谢            

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

    下面是成功的完整配置。

    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 
    感谢    赞同    反对    举报    分享       评论    回复