程序环境
Websoft9 程序语言环境(Web Runtime)提供一个可靠的程序语言和应用服务器环境,以方便用户自行部署应用程序。它支持多种主流的开发语言,如 Java、Python、Node.js、PHP、Go、Ruby和 .NET 等。同时,它基于 Git 的工作流、DevOps 流程,支持域名绑定和 HTTPS 设置,加速应用部署流程,提供极佳的体验。
原理
Web Runtime 在 Websoft9 的技术体系中,也是作为一个应用对待,它与 WordPress 这种应用没有本质差异。
它仅仅需要用户在启动环境后,在通过 docker compose 编排在容器中完成两件事:
- 将需运行的程序放到容器中
- 通过命令启动程序
而 Websoft9 为用户在容器中完成这些工作提供 了便捷的工作方式。请参考下面的快速入门进入实战吧。
快速入门
如果已经安装 Websoft9,且绑定了全局域名,那么通过 Web Runtime 运行程序及其简单:
启动环境
-
登录 Websoft9 控制台,打开:"应用商店" 的 运行环境 类目
-
任选一个程序语言,例如:Python,点击安装
-
等待安装完成,一个基于容器的程序运行环境已经启用
-
环境启动后 Websoft9 为它创建了三个资源:
- 一个 Python 容器
- 一个网关中的虚拟主机配置,将容器的 8080 端口转发到域名
- 一个 Git 仓库
部署程序
启动环境之后,我们如何将应用程序部署到这个环境呢?请选择如下的部署方式之一:
自动部署
自动部署即将相关的命令写成一个脚本,让容器在启动时可以自动执行部署命令,实现持续部署:
-
登录 Websoft9 控制台,进入应用的管理界面的 编排 标签页
-
修改编排文件的 src/cmd.sh 脚本(它包含范例),插入个性化命令或去掉范例的注释,重建应用后生效
建议插入到 cmd.sh 的命令主要包括:
查看 cmd.sh 范例:PHP, Python, Ruby, Go, Node.js, .NET, OpenJDK, Tomcat, Tomee, Maven
- 程序代码下载、解压
- 代码编译
- 运行启动脚本( 确保运行在容器的 8080 端口,同时允许 localhost 之外的主机访问)
手工部署
手工部署即用户登录到容器中,手工运行相关命令的部署方式:
-
Websoft9 控制台或 docker exec 进入容器的命令模式
-
在容器中运行程序下载、包安装等命令
-
以后台方式启动运行命令
# 以 Python 为例
nohup python manage.py runserver 0.0.0.0:8080 > output.log 2>&1 &python manage.py runserver 0.0.0.0:8080 是真正的启动命令,而开头结尾的 nohup 和 > output.log 2>&1 & 都是辅助的命令
-
程序即可在后台运行,同时通过 output.log 查看日志
-
如果容器重启,需重新执行第 3 步命令
通用参数
以下配置与语言无关:
- 部署方式:docker compose
- 容器端口:8080
- Dockerfile:暂不支持
- 容器中手工运行命令(√)
- 自定义命令:存储在编排文件 ./src/cmd.sh,挂载到容器的 /usr/local/bin/cmd.sh 目录
- 字符集:UTF-8
- 多版本:每个语言都支持多版本,合计有几十个可选的版本
个性配置
Web Runtime 不同的语言环境还有更多个性的配置:程序根目录、包管理器、安装扩展、编译、命令行、容器操作系统等。
Go
Node.js
PHP
Python
Ruby
.NET
Docker
Java
OpenJDK
Maven
Jetty
Tomcat
Tomee
通用指南
以下操作与语言无关:
绑定域名
创建环境时,已经在 Websoft9 网关为程序环境增加了一个域名绑定(转发程序环境容器的 8080 端口)。所以,用户可以很方便的在网关菜单中设置域名、 修改端口、启用 HTTPS 等操作。
发布可下载的源码
用户可能面临这样的场景:从他人处获得了一份源码压缩包,没有源码直接的下载地址导致无法将源码部署到容器中。
Websoft9 建议通过如下的方式解决:
-
通过 Websoft9 控制台的 仓库 菜单,新建一个公开仓库
-
将源码的压缩包上传到这个新建的仓库中
-
在仓库的呈现页面获取源码的公开下载地址
开发部署一体化
作为开发者,可能需要将 Web Runtime 的一套流程转变为 DevOps 工作方式,即开发部署都通过 Websoft9 平台实现。
Websoft9 完全可以支持这个场景,下面介绍详细步骤:
-
进入 Websoft9 控制台的 仓库 功能区
-
新建一个仓库用户,为正在运行的 Web Runtime 仓库赋予此用户相应的权限
-
并将源码同步到 Web Runtime 仓库中的指定的目录下,例如:source
-
修改编排文件对应的部分:
- docker-compose.yml 中增加 source 目录 volume mount 到容器
- cmd.sh 中适用源码目录
版本变更
Web Runtime 中修改版本极其方便:
-
通过编排文件的 variables.json 查询所有的版本
-
修改 编排文件中 .env 中的 W9_VERSION 的值,重建应用生效。
问题与故障
容器镜像来源?
所有的容器镜像采用的是 Docker 官方维护或程序原厂提供的镜像,100% 原生性,没有做出任何修改。
如何进行个性化部署?
可以修改编排文件的:.env, docker-compose.yml, src/cmd.sh 实现
每个程序环境支持多个程序吗?
理论上是可以的,但不建议部署多个应用程序。
如何修改上传的文件权限?
需参考每个语言的个性配置方案。
没有数据库怎么办?
可以通过 Websoft9 控制台安装数据库
如何 将程序的启动命设置到容器中?
有两种方式:
- 将启动命令设置到编排文件 src/cmd.sh 中
- 进入容器的命令模式,以后台方式运行启动命令(将运行程序的命令改成
nohup Your CMD here > output.log 2>&1 &
)
如何查看通过 nohup 运行的命令?
运行 jobs
即可
如何删除容器中正在运行的进程?
先运行 ps
命令查看,再运行 kill -9 PID
删除进程