Workerman 部署与生产环境:高效部署与稳定运行最佳实践
                           
天天向上
发布: 2025-01-20 23:38:16

原创
109 人浏览过

在生产环境中部署 Workerman 时,需要注意多个方面:从基本的服务器部署、反向代理、负载均衡,到进程管理、安全配置和性能监控。通过适当的工具(如 Nginx、Supervisor 和 SSL 配置),可以确保 Workerman 应用在高并发环境下稳定运行。同时,通过监控和性能调优,确保应用能够高效应对不断变化的流量需求。


1. 部署 Workerman

(1) 如何将 Workerman 部署到生产环境

在生产环境中部署 Workerman,首先需要将应用代码上传到服务器,并确保所有依赖项已经安装。以下是部署的基本步骤:

  • 上传代码与依赖
    将您的 Workerman 应用代码上传到生产服务器上。建议使用 Git、SFTP 或其他方法进行代码同步。 安装所需的 PHP 扩展和 Composer 依赖:
  # 安装 PHP 相关依赖
  sudo apt-get install php php-cli php-mbstring php-curl php-xml

  # 安装 Composer
  curl -sS https://getcomposer.org/installer | php

  # 安装 Workerman
  php composer.phar require workerman/workerman
  • 设置权限
    确保上传的文件具有适当的权限,以避免权限问题导致服务无法启动。
  chmod -R 755 /path/to/workerman
(2) 配置反向代理与负载均衡

在生产环境中,通常需要使用反向代理来分发流量,负载均衡可以将请求均匀分配到多个 Workerman 进程或服务器上。常用的反向代理工具有 Nginx 和 HAProxy。

  • Nginx 反向代理配置
    假设 Workerman 在本地的 8080 端口上运行,您可以配置 Nginx 将外部请求转发到 Workerman:
  server {
      listen 80;
      server_name yourdomain.com;

      location / {
          proxy_pass http://127.0.0.1:8080;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      }
  }
  • 负载均衡
    如果使用多台服务器或多个 Workerman 进程,可以通过 Nginx 或 HAProxy 设置负载均衡,确保流量均匀分配。 例如,使用 Nginx 实现负载均衡:
  upstream workerman_backend {
      server 127.0.0.1:8080;
      server 127.0.0.1:8081;
  }

  server {
      listen 80;
      server_name yourdomain.com;

      location / {
          proxy_pass http://workerman_backend;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      }
  }
(3) 使用 Supervisor 管理 Workerman 进程

在生产环境中,使用进程管理工具来管理 Workerman 进程至关重要,Supervisor 是一种常见的进程管理工具,能够帮助我们自动启动、停止、重启 Workerman 服务。

  • 安装 Supervisor
  sudo apt-get install supervisor
  • 配置 Supervisor 管理 Workerman 创建 Supervisor 配置文件:
  [program:workerman]
  command=php /path/to/your/workerman/start.php start
  autostart=true
  autorestart=true
  stderr_logfile=/path/to/workerman.err.log
  stdout_logfile=/path/to/workerman.out.log

这会确保 Workerman 在服务器启动时自动启动,并且如果进程崩溃,会自动重启。

启动 Supervisor 服务:

  sudo supervisorctl reread
  sudo supervisorctl update
  sudo supervisorctl start workerman

2. SSL/TLS 加密

(1) 配置 SSL 支持,如何使 Workerman 支持 HTTPS

为了确保数据传输的安全性,生产环境中的 Web 应用通常需要使用 HTTPS 进行加密。Workerman 支持 SSL/TLS 加密,您只需提供 SSL 证书和私钥即可配置。

  • 创建 SSL 证书 如果没有购买 SSL 证书,可以使用 openssl 创建自签名证书(不适用于生产环境,只用于测试)。
  openssl genrsa -out server.key 2048
  openssl req -new -key server.key -out server.csr
  openssl x509 -req -in server.csr -signkey server.key -out server.crt
  • 配置 Workerman 使用 SSL 在 Workerman 的 start.php 文件中,启用 SSL 支持:
  use Workerman\Worker;
  use Workerman\Lib\Timer;

  $worker = new Worker("https://0.0.0.0:8080");
  $worker->transport = 'ssl';  // 使用 SSL 加密
  $worker->ssl_cert_file = '/path/to/server.crt';  // 证书文件
  $worker->ssl_key_file = '/path/to/server.key';   // 私钥文件

  $worker->onMessage = function($connection, $data) {
      $connection->send('Hello, secure world!');
  };

  Worker::runAll();
(2) 使用 SSL/TLS 加密通信

通过启用 SSL/TLS,加密数据流不仅能防止数据被窃取,还可以有效防止中间人攻击。配置 SSL 后,客户端和服务器之间的数据传输会自动使用加密连接。


3. 性能监控

(1) 使用工具监控 Workerman 的运行状态

为了确保 Workerman 在生产环境中运行良好,监控是必不可少的。您可以使用一些性能监控工具,如 tophtopiotop 等来查看服务器的资源消耗情况。对于 Workerman,您也可以使用以下方法:

  • Workerman 内置的状态查看
    Workerman 提供了 status 命令,可以实时查看进程状态、连接数、CPU 和内存使用情况。
  php start.php status
  • 集成第三方监控工具
    可以使用 Prometheus、Grafana 等工具来监控 Workerman 的性能。通过 Prometheus 收集 Workerman 的指标数据,再通过 Grafana 进行可视化展示。
(2) 调整配置以应对更高的并发

根据监控数据的反馈,您可以根据需要调整 Workerman 的配置,以提高并发处理能力。例如,增加进程数或调整内存使用设置:

  • 增加进程数
    增加进程数可以提高并发处理能力,但也需要考虑服务器的硬件资源。
  $worker->count = 16; // 增加进程数
  • 使用共享内存
    为了减少内存使用,您可以使用 Workerman 提供的共享内存功能来缓存数据,减少每个进程的内存消耗。
  $worker->shm->put('key', 'value'); // 使用共享内存存储数据

发表回复 0

Your email address will not be published. Required fields are marked *