[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 帐户。
点击 Install
按钮,您将能够登录 ProjectSend Web 界面。
如何设置 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]