使用 Nginx(LEMP 堆栈)在 Ubuntu 20.04 上安装 ProjectSend

[ad_1]

本教程将向您展示如何使用 Nginx Web 服务器在 Ubuntu 20.04 LTS 上安装 ProjectSend。

什么是 ProjectSend?

ProjectSend 是一个免费的开源自托管文件共享解决方案。 项目发送功能:

  • 实时统计
  • 创建客户群
  • 自行注册和社交登录
  • 自定义电子邮件模板

先决条件

ProjectSend 是用 PHP 编程语言编写的。 要遵循本教程,您首先需要在 Ubuntu 20.04 上安装 LEMP 堆栈. 如果您还没有这样做,请查看以下教程。

  • 如何在 Ubuntu 20.04 上安装 LEMP 堆栈(Nginx、MariaDB、PHP7.4-FPM)

您可以在您的家庭服务器或 VPS(虚拟专用服务器)上安装 ProjectSend。 您还需要一个域名,以便稍后您可以启用 HTTPS 来加密 HTTP 流量。 我从 NameCheap 注册了我的域名,因为价格低廉,而且他们提供终身免费的 whois 隐私保护。 ProjectSend 可以不带域名安装,但是如果不加密 HTTP 连接以防止窥探,那真的没有意义。 如果您真的想修改服务器软件并充分利用它们,我建议您购买域名。

现在让我们安装 ProjectSend。

第 1 步:在 Ubuntu 20.04 上下载 ProjectSend

登录到您的 Ubuntu 20.04 服务器。 然后将 ProjectSend zip 存档下载到您的服务器上。 在撰写本文时,最新的稳定版本是 r1295。 您可能需要更改版本号。 转到 https://www.projectsend.org/#download 查看最新版本。

您可以运行以下命令将其下载到您的服务器上。

wget -O projectsend.zip https://www.projectsend.org/download/387/

下载后,使用以下命令解压缩存档 unzip.

sudo apt install unzip

sudo mkdir -p /usr/share/nginx/projectsend/

sudo unzip projectsend.zip -d /usr/share/nginx/projectsend/

-d 选项指定目标目录。 ProjectSend Web 文件将被提取到 /usr/share/nginx/projectsend/. 然后我们需要将该目录的所有者更改为 www-data 以便 Web 服务器 (Nginx) 可以写入此目录。

sudo chown www-data:www-data /usr/share/nginx/projectsend/ -R

步骤 2:在 MariaDB 数据库服务器中为 ProjectSend 创建数据库和用户

使用以下命令登录到 MariaDB 数据库服务器。 由于 MariaDB 现在正在使用 unix_socket 验证用户登录的插件,无需输入 MariaDB root 密码。 我们只需要添加前缀 mysql 命令与 sudo.

sudo mysql

然后为 ProjectSend 创建一个数据库。 本教程将数据库命名为projectsend。 您可以使用任何您喜欢的名称。

create database projectsend;

创建数据库用户。 同样,您可以为此用户使用您的首选名称。 代替 your-password 使用您的首选密码。

create user projectsenduser@localhost identified by 'your-password';

授予此用户所有权限 projectsend 数据库。

grant all privileges on projectsend.* to projectsenduser@localhost;

刷新权限并退出。

flush privileges;

exit;

第 3 步:配置 ProjectSend

前往 includes 目录。

cd /usr/share/nginx/projectsend/includes/

复制示例配置文件并将其重命名为 sys.config.php.

sudo cp sys.config.sample.php sys.config.php

现在使用命令行文本编辑器(如 Nano)编辑新的配置文件。

sudo nano sys.config.php

找到以下几行并将红色文本替换为您在步骤 2 中创建的数据库名称、用户名和密码。

/** Database name */
define('DB_NAME', 'database');

/** Database host (in most cases it's localhost) */
define('DB_HOST', 'localhost');

/** Database username (must be assigned to the database) */
define('DB_USER', 'username');

/** Database password */
define('DB_PASSWORD', 'password');

Save 和 close 文件。 要将文件保存在 Nano 文本编辑器中,请按 Ctrl+O,然后按 Enter 确认。 接下来,按 Ctrl+X 退出。

第 4 步:为 ProjectSend 创建 Nginx 配置文件

创建一个 projectsend.conf 归档 /etc/nginx/conf.d/ 目录,带有像 Nano 这样的命令行文本编辑器。

sudo nano /etc/nginx/conf.d/projectsend.conf

将以下文本复制并粘贴到文件中。 代替 projectsend.example.com 与您自己的首选子域。 不要忘记在您的 DNS 区域编辑器中为此子域创建 DNS A 记录。 如果您没有真正的域名,我建议您去 NameCheap 购买一个。 价格低廉,他们终身免费提供whois隐私保护。

server {
    listen 80;
    listen [::]:80;
    server_name projectsend.example.com;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;

    # Path to the root of your installation
    root /usr/share/nginx/projectsend/;
    index index.php index.html;

    access_log /var/log/nginx/projectsend.access;
    error_log /var/log/nginx/projectsend.error;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
      try_files $uri $uri/ /index.php;
    }

    location ~ .php$ {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+.php)(/.*)$;
       try_files $fastcgi_script_name =404;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

   location ~* .(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

Save 和 close 文件。 (要在 Nano 文本编辑器中保存文件,请按 Ctrl+O,然后按 Enter 确认。 要退出,请按 Ctrl+X.)

然后测试 Nginx 配置。

sudo nginx -t

如果测试成功,请重新加载 Nginx 以使更改生效。

sudo systemctl reload nginx

第 5 步:安装和启用 PHP 模块

运行以下命令以安装 ProjectSend 所需或推荐的 PHP 模块。

sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl  php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

步骤 6:启用 HTTPS

现在,您可以在 Web 浏览器中通过输入 ProjectSend 安装的域名来访问 ProjectSend Web 安装向导。

projectsend.example.com/install/index.php

如果网页无法加载,您可能需要在防火墙中打开端口 80。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

还有端口 443。

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

在输入任何敏感信息之前,我们应该在 ProjectSend 上启用安全的 HTTPS 连接。 我们可以从 Let’s Encrypt 获得免费的 TLS 证书。 从 Ubuntu 20.04 存储库安装 Let’s Encrypt 客户端 (certbot)。

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx 是 Nginx 插件。 接下来,运行以下命令以使用 Nginx 插件获取免费的 TLS 证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d projectsend.example.com

在哪里:

  • –nginx:使用 Nginx 身份验证器和安装程序
  • ——同意: 同意 Let’s Encrypt 服务条款
  • – 重定向:通过添加 301 重定向来强制执行 HTTPS。
  • –hsts:启用 HTTP 严格传输安全。 这可以防御 SSL/TLS 剥离攻击。
  • –staple-ocsp:启用 OCSP 装订。
  • -电子邮件:用于注册和恢复联系人的电子邮件。
  • -d flag 后面是域名列表,以逗号分隔。 您最多可以添加 100 个域名。

系统会询问您是否希望接收来自 EFF(电子前沿基金会)的电子邮件。 选择 Y 或 N 后,将自动为您获取和配置您的 TLS 证书,如下消息所示。

步骤 7:在 Web 浏览器中完成安装

现在您可以使用 HTTPS 连接访问 ProjectSend Web 安装向导。

https://projectsend.example.com/install/index.php

要完成安装,您需要给它一个站点名称并创建一个 admin 帐户。

projectend-ubuntu-20.04-install-guide-nginx

点击 Install 按钮,您将能够登录 ProjectSend Web 界面。

设置项目发送-ubuntu-nginx

如何设置 ProjectSend 电子邮件通知

如果您的 ProjectSend 实例将被多人使用,则您的 ProjectSend 服务器可以发送交易电子邮件(例如密码重置电子邮件)非常重要。 去 选项 -> 电子邮件通知. 您将找到电子邮件服务器设置。 有四种发送模式:

  • PHP邮件(基础)
  • SMTP
  • Gmail
  • 发邮件

您可以选择 sendmail 如果您的 ProjectSend 主机有一个 SMTP 服务器正在运行,请选择模式。 将其他字段留空。

项目发送发送邮件

如果您想使用在另一台主机上运行的 SMTP 服务器,请选择 SMTP 模式并输入 SMTP 服务器地址和登录凭据,如下所示。 选择 STARTTLS 进行加密。

项目发送电子邮件发送选项

有关如何设置电子邮件服务器,请查看以下教程。 笔记 我强烈建议在全新的干净操作系统上运行 iRedMail 邮件服务器。 在具有其他 Web 应用程序的操作系统上安装 iRedMail 可能会失败,并且可能会破坏现有的应用程序。

  • 如何使用 iRedMail 在 Ubuntu 20.04 上轻松设置功能齐全的邮件服务器

第 8 步:增加 PHP 内存限制

默认的 PHP 内存限制为 128MB。 ProjectSend 建议使用 512MB 以获得更好的性能。 要更改 PHP 内存限制,请编辑 配置文件 文件。

sudo nano /etc/php/7.4/fpm/php.ini

找到以下行。 (第 409 行)

memory_limit = 128M

更改值。

memory_limit = 512M

Save 和 close 文件。 或者,您可以运行以下命令来更改值,而无需手动打开文件。

sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini

然后重新加载 PHP-FPM 服务以使更改生效。

sudo systemctl reload php7.4-fpm

步骤 9:增加上传文件大小限制

Nginx 设置的默认最大上传文件大小限制为 1MB。 要允许将大文件上传到 ProjectSend 服务器,请编辑 ProjectSend 的 Nginx 配置文件。

sudo nano /etc/nginx/conf.d/projectsend.conf

我们已经在这个文件中设置了最大文件大小,如

client_max_body_size 512M;

如果您愿意,可以更改它,例如 1G。

client_max_body_size 1024M;

Save 和 close 文件。 然后重新加载 Nginx 以使更改生效。

sudo systemctl reload nginx

PHP 还设置了上传文件大小的限制。 上传的默认最大文件大小为 2MB。 要增加上传大小限制,请编辑 PHP 配置文件。

sudo nano /etc/php/7.4/fpm/php.ini

找到以下行(第 846 行)。

upload_max_filesize = 2M

更改值如下:

upload_max_filesize = 1024M

Save 和 close 文件。 或者,您可以运行以下命令来更改值,而无需手动打开文件。

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini

然后重新启动 PHP-FPM。

sudo systemctl restart php7.4-fpm

添加本地 DNS 条目

建议编辑 /etc/hosts 在您的 ProjectSend 服务器上添加文件并添加以下条目,这样 ProjectSend 本身就不必查询公共 DNS,这可以提高整体稳定性。 如果您的 ProjectSend 服务器无法解析 projectsend.example.com 主机名,那么你可能会遇到 504网关超时 错误。

127.0.0.1   localhost projectsend.example.com

中的一个 IP 地址 /etc/hosts 文件可以有多个主机名,所以如果你在同一个机器上安装了其他应用程序,你也可以在同一行上添加其他主机名或子域,如下所示:

127.0.0.1   localhost focal ubuntu projectsend.example.com nextcloud.example.com

故障排除提示

如果遇到错误,您可以检查以下日志文​​件之一以找出问题所在。

  • Nginx 错误日志: /var/log/nginx/error.log
  • ProjectSend 虚拟主机的 Nginx 错误日志: /var/log/nginx/projectsend.error

包起来

我希望本教程可以帮助您在带有 Nginx 的 Ubuntu 20.04 服务器上安装 ProjectSend。 与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重?

[ad_2]

Related Posts