---
title: 标准安装在Linux上
slug: linux
docTags: 
createdAt: 2024-04-05T12:11:10.494Z
---

## 最低系统要求

Passwork 对服务器资源的要求不高。所需资源（RAM、CPU、HDD）的容量和服务器的数量取决于活跃用户的数量、存储数据的容量以及对系统容错能力的要求。

## 通用信息

Linux上的标准安装使用Docker。Docker镜像的结构是这样的，所有重要数据都存储在与宿主机共享的目录中，因此您可以停止、删除和创建新的容器。

配置文件也存储在挂载的目录中，因此您可以对组件进行大多数配置更改，而无需直接修改Docker镜像或容器。要做到这一点，请更改必要组件的配置文件并重启容器。

## 组成

该程序由6个容器组成。一些容器是强制启动的，而其他部分可以通过更改环境变量文件.env中的环境变量COMPOSE\_PROFILES来启用或禁用：

**Nginx** — 基于官方Nginx镜像的镜像。默认情况下会启动。

**PHP** — 基于Ubuntu的带有PHP和PHP-FPM的镜像。默认情况下会启动。

**Cron** — 基于PHP镜像的单独容器，用于运行计划任务。默认情况下会启动。

**PSMDB** — 基于官方Percona Server for MongoDB镜像的镜像。如果使用外部MongoDB/PSMDB，则可以禁用启动。

**Postfix** — 基于Ubuntu的带有Postfix的镜像。如果通过PHP Mailer发送通知，则可以禁用。

**Certbot** — 来自Let's Encrypt的官方Certbot镜像。如果您使用的是Let's Encrypt的证书，则需要它。如果您使用其他SSL证书，则可以禁用。

## 系统更新

**基于DEB的**

```shell
sudo apt-get update
```

**基于RPM的**

```shell
sudo yum update
```

## Docker安装

下载并安装Docker。最低要求版本为18.06.0。官方安装文章 — [https://docs.docker.com/engine/installation/](https://docs.docker.com/engine/installation/)

如果之前未安装Docker Compose插件，请安装并启用。官方安装文章 — [https://docs.docker.com/compose/install/linux/](https://docs.docker.com/compose/install/linux/)

我们建议使用非通过snap安装的Docker

## 安装

要安装Passwork，您需要下载并运行脚本，该脚本将安装所有必需的组件。

创建一个目录并导航到该目录：

```shell
mkdir your_directory
cd your_directory
```

复制安装脚本：

```shell
wget https://repos.passwork.pro/repository/docker/passwork_compose_install.sh
```

## 真实性检查

检查文件passwork\_compose\_install.sh的哈希值，以验证文件的真实性：

```shell
echo "4c53964eac8e4e82edd6751f57b099622ba56a2ed51f0f6f1528fed9a802fb3d passwork_compose_install.sh" | sha256sum --check
```

系统应显示消息passwork\_compose\_install.sh: OK。

## 用户权限验证和脚本执行

如果您不是以root身份安装，请确保用户是docker组的成员。

您可以使用以下方法检查：

```shell
id $USER | grep docker
```

您可以这样将用户添加到docker组：

```shell
sudo usermod -a -G docker $USER
```

赋予脚本执行权限并运行它：

```shell
chmod +x passwork_compose_install.sh
./passwork_compose_install.sh
```

该脚本使用apt或dnf，以及curl。如果您的网络中使用代理服务器，您需要添加环境变量：export http\_proxy=[http://proxy.example.com:8080](http://proxy.example.com:8080/) export https\_proxy=[http://proxy.example.com:8080](http://proxy.example.com:8080/)

**脚本执行的操作**

- 检查已安装的Docker
- 检查Docker版本（高于18.06.0）
- 检查Docker是否正在运行
- 检查用户是否属于docker组或拥有sudo权限
- 检查Docker compose插件是否已安装并启用
- 检查系统是否属于deb或rpm发行版
- 为了脚本的正确运行安装额外的实用程序curl、unzip和jq
- 请求输入Passwork客户端证书
- 检查证书是否符合格式
- 检查证书的有效性
- 下载并解压包含docker-compose构建文件的存档
- 检查环境变量文件并添加证书编号
- 执行Passwork代码更新脚本
- 执行docker compose up -d

**执行安装脚本的过程**

脚本将检查当前用户的权限以及必要组件的版本。如遇错误，脚本将以install\_log\_date.log的格式创建日志，并将错误放置其中。

![](https://api.archbee.com/api/optimize/jvwmQL6VASLd-norgNd8V/lKVcBRsazPdBctz6AOoqf_image.png)

**脚本执行完成后**

脚本将自动执行docker ps。请检查正在运行的容器列表。如果容器没有启动，请检查安装输出和日志。正确输出的示例：

## 设置向导

在构建并运行容器之后，Passwork将可通过以下链接访问：[https://your\_servername](#)

默认情况下，Passwork使用在安装过程中自动生成的自签名证书，因此当您首次打开页面时，会看到浏览器不信任该网站证书的消息。

**选择语言**

在第一步，系统将提供选择界面语言的选项。

**系统参数检查**

参数清单将显示您的服务器上是否安装了所有组件。

**数据库连接**

默认情况下，Docker中的Passwork连接到名为db的服务，因此在初始安装的第三阶段需要更改连接字符串。

连接字符串为mongodb://db:27017

**加密密钥**

Passwork将为服务器加密生成一个新的密钥。如果您将Passwork连接到现有数据库，请指定现有的加密密钥。

不要输入在Passwork外部生成的密钥。Passwork使用特殊的安全算法以适当的格式生成新密钥。使用第三方工具生成的密钥可能会导致操作不正确。

**许可证密钥**

您可以在您的Passwork客户端门户中下载许可证密钥，或者向经理请求。

## 设置您自己的SSL证书

**使用您自己的证书**

- 对于由受信任发行机构颁发的证书
- 对于由您组织的域名认证机构颁发的证书

重命名并放置您的SSL证书或认证链到./conf/ssl

`privkey.pem` — 私钥。

`fullchain.pem` — 证书\认证链

**使用Let's Encrypt**

如果您没有证书颁发机构（由受信任中心颁发的证书），但您有服务器的公共DNS名称，您可以配置Let's Encrypt。

编辑文件 - .env 更改并添加以下参数：

:::BlockQuote
USE\_LETSENCRYPT=true
LETSENCRYPT\_REG\_EMAIL=mail\@example.com
DOMAIN=example.com
COMPOSE\_PROFILES="local\_notify,mongo,certbot"
:::

保存所做的更改并启动容器。

```shell
docker compose up -d certbot
```

检查容器日志以获取证书。

```shell
docker compose logs certbot
```

颁发证书的示例

重新创建容器，使用新证书更新数据。

```shell
docker compose up -d --force-recreate nginx certbot
```

使用Let's Encrypt的证书，Passwork将通过HTTPS协议可用。

## 脚本和命令

**脚本**

update.sh — 执行应用程序代码的更新到您的许可证中可用的最新版本。

db-backup.sh — 执行备份到备份文件夹。

db-restore.sh — 执行备份恢复。如果没有提供备份名称，将显示可用备份的列表。

collect-log.sh — 执行组件日志的收集。这是出于调试目的以及将日志发送给技术支持服务所必需的。

collect-conf.sh — 收集组件的配置文件。这是出于调试目的以及将配置文件发送给技术支持服务所必需的。

**命令**

docker compose stop — 停止服务

docker compose restart — 重新启动服务

docker compose start — 启动已停止的服务

docker compose down — 移除服务。数据，包括数据库和配置文件，将被保留。

## 参数和设置

**描述**

大多数设置可以通过.env中的环境变量或修改单独组件的配置文件来完成。

| 参数                      | 描述                                                                                        | 默认值                                          |
| ----------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------- |
| CERT                    | Passwork证书编号。用于升级脚本，以从客户门户中检索应用程序文件                                                       | XXX-XXX-XXX-XXX-XXXXXXXXXXXX                 |
| USE\_LETSENCRYPT        | 是否使用certbot来发行SSL证书<br /><br />                                                           | false                                        |
| LETSENCRYPT\_STAGING    | certbot的测试模式。对于调试很有用，因为Let's Encrypt对请求的数量有限制。默认为true，以避免因DNS记录配置错误或其他原因导致的错误。建议首先使用测试环境。 | true                                         |
| LETSENCRYPT\_REG\_EMAIL | Let's Encrypt的电子邮件<br /><br />                                                            | <br />                                       |
| DOMAIN                  | Let's Encrypt的域名<br /><br />                                                              | <br />                                       |
| ALIAS\_CONTAINERS\_NAME | 容器名前缀                                                                                     | "passwork\_"                                 |
| COMPOSE\_PROFILES       | 允许您启用/禁用服务启动的Compose配置文件                                                                  | "local\_notify,mongo"                        |
| PHP\_CONF\_DIR          | PHP配置目录<br /><br />                                                                       | ./conf/php                                   |
| PHP\_LOG\_DIR           | PHP日志目录<br /><br />                                                                       | ./log/php                                    |
| APP\_DIR                | Passwork应用程序目录                                                                            | ./www/latest (symlink to the latest version) |
| APP\_LOG\_DIR           | 应用程序日志目录                                                                                  | ./log/app                                    |
| KEYS\_DIR               | 存放许可证密钥及主应用程序配置文件的目录                                                                      | ./conf/keys                                  |
| NGINX\_CONF\_DIR        | Nginx配置目录                                                                                 | ./conf/nginx                                 |
| NGINX\_LOG\_DIR         | Nginx日志目录                                                                                 | ./log/nginx                                  |
| SSL\_DIR                | 包含SSL证书的目录                                                                                | ./conf/ssl                                   |
| MONGO\_DATA\_DIR        | 包含mongo数据的目录<br /><br />                                                                  | ./data/mongo                                 |
| CUSTOM\_CA\_DIR         | 用于额外根证书的目录（例如，用于LDAPS）                                                                    | ./conf/custom\_ca                            |
| POSTFIX\_LOG\_DIR       | Postfix日志目录<br /><br />                                                                   | ./log/postfix                                |
| POSTFIX\_CONF\_DIR      | Postfix配置目录<br /><br />                                                                   | ./conf/postfix                               |

**应用设置**

在对.env或特定组件的配置文件进行更改后，需要重启相应的容器。

```shell
docker restart container_name
```

```shell
docker restart container_name
```




























