Tento tutoriál vám ukáže, jak nainstalovat ProjectSend na Ubuntu 20.04 LTS s webovým serverem Nginx.
Co je ProjectSend?
ProjectSend je bezplatné řešení pro sdílení souborů s vlastním hostitelem s otevřeným zdrojovým kódem. Funkce ProjectSend:
- Statistiky v reálném čase
- Vytvořte skupiny klientů
- samoregistrace a sociální přihlášení
- Vlastní e-mailové šablony
Předpoklady
ProjectSend je napsán v programovacím jazyce PHP. Abyste mohli postupovat podle tohoto návodu, musíte nejprve nainstalovat zásobník LEMP na Ubuntu 20.04 . Pokud jste tak ještě neučinili, podívejte se prosím na následující návod.
- Jak nainstalovat LEMP Stack (Nginx, MariaDB, PHP7.4-FPM) na Ubuntu 20.04
ProjectSend můžete nainstalovat na svůj domovský server nebo VPS (virtuální soukromý server). Potřebujete také název domény, takže později budete moci povolit HTTPS pro šifrování HTTP provozu. Zaregistroval jsem své doménové jméno od NameCheap, protože cena je nízká a poskytují ochranu soukromí whois doživotně zdarma. ProjectSend lze nainstalovat bez názvu domény, ale opravdu to nedává smysl, pokud připojení HTTP nezašifrujete, abyste zabránili snoopingu. Doporučuji zakoupit doménové jméno, pokud si opravdu chcete pohrát se serverovým softwarem a využít jej na maximum.
Nyní nainstalujme ProjectSend.
Krok 1:Stáhněte si ProjectSend na Ubuntu 20.04
Přihlaste se na svůj server Ubuntu 20.04. Poté si stáhněte zip archiv ProjectSend na váš server. Poslední stabilní verze je v době psaní tohoto článku r1295. Možná budete muset změnit číslo verze. Přejděte na https://www.projectsend.org/#download a podívejte se na nejnovější verzi.
Můžete spustit následující příkaz a stáhnout jej na váš server.
wget -O projectsend.zip https://www.projectsend.org/download/387/
Po stažení rozbalte archiv pomocí unzip
.
sudo apt install unzip sudo mkdir -p /usr/share/nginx/projectsend/ sudo unzip projectsend.zip -d /usr/share/nginx/projectsend/
-d
volba určuje cílový adresář. Webové soubory ProjectSend budou extrahovány do /usr/share/nginx/projectsend/
. Potom musíme změnit vlastníka tohoto adresáře na www-data
aby webový server (Nginx) mohl zapisovat do tohoto adresáře.
sudo chown www-data:www-data /usr/share/nginx/projectsend/ -R
Krok 2:Vytvoření databáze a uživatele pro ProjectSend na databázovém serveru MariaDB
Přihlaste se k databázovému serveru MariaDB pomocí následujícího příkazu. Protože MariaDB nyní používá unix_socket
plugin pro ověření přihlášení uživatele, není nutné zadávat root heslo MariaDB. Potřebujeme pouze předponu mysql
příkaz pomocí sudo
.
sudo mysql
Poté vytvořte databázi pro ProjectSend. Tento kurz pojmenuje databázové projekty. Můžete použít jakékoli jméno.
create database projectsend;
Vytvořte uživatele databáze. Opět můžete pro tohoto uživatele použít preferované jméno. Nahraďte your-password
s vaším preferovaným heslem.
create user projectsenduser@localhost identified by 'your-password';
Udělte tomuto uživateli všechna oprávnění k projectsend
databáze.
grant all privileges on projectsend.* to projectsenduser@localhost;
Vyprázdněte oprávnění a ukončete.
flush privileges; exit;
Krok 3:Konfigurace ProjectSend
Přejděte na includes
adresář.
cd /usr/share/nginx/projectsend/includes/
Zkopírujte ukázkový konfigurační soubor a přejmenujte jej na sys.config.php
.
sudo cp sys.config.sample.php sys.config.php
Nyní upravte nový konfigurační soubor pomocí textového editoru příkazového řádku, jako je Nano.
sudo nano sys.config.php
Najděte následující řádky a nahraďte červené texty názvem databáze, uživatelským jménem a heslem, které jste vytvořili v kroku 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');
Uložte a zavřete soubor. Chcete-li soubor uložit v textovém editoru Nano, stiskněte Ctrl+O
a poté stiskněte Enter
potvrdit. Poté stiskněte Ctrl+X
pro ukončení.
Krok 4:Vytvořte soubor Nginx Config pro ProjectSend
Vytvořte projectsend.conf
soubor v /etc/nginx/conf.d/
adresář s textovým editorem příkazového řádku, jako je Nano.
sudo nano /etc/nginx/conf.d/projectsend.conf
Zkopírujte a vložte následující text do souboru. Nahraďte projectsend.example.com
s vaší preferovanou subdoménou. Nezapomeňte vytvořit záznam DNS A pro tuto subdoménu v editoru zóny DNS. Pokud nemáte skutečný název domény, doporučuji přejít na NameCheap a koupit si ho. Cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.
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; } }
Uložte a zavřete soubor. (Chcete-li uložit soubor v textovém editoru Nano, stiskněte Ctrl+O
a poté stiskněte Enter
potvrdit. Pro ukončení stiskněte Ctrl+X
.)
Poté otestujte konfiguraci Nginx.
sudo nginx -t
Pokud je test úspěšný, znovu načtěte Nginx, aby se změny projevily.
sudo systemctl reload nginx
Krok 5:Instalace a povolení modulů PHP
Spuštěním následujících příkazů nainstalujte moduly PHP požadované nebo doporučené ProjectSend.
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
Krok 6:Povolte HTTPS
Nyní máte přístup k průvodci webovou instalací ProjectSend ve vašem webovém prohlížeči zadáním názvu domény pro vaši instalaci ProjectSend.
projectsend.example.com/install/index.php
Pokud se webová stránka nemůže načíst, pravděpodobně budete muset otevřít port 80 ve bráně firewall.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
A také port 443.
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Před zadáním jakýchkoli citlivých informací bychom měli povolit zabezpečené připojení HTTPS na ProjectSend. Můžeme získat bezplatný certifikát TLS od společnosti Let’s Encrypt. Nainstalujte klienta Let’s Encrypt (certbot) z úložiště Ubuntu 20.04.
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
je plugin Nginx. Dále spusťte následující příkaz a získejte bezplatný certifikát TLS pomocí pluginu Nginx.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d projectsend.example.com
Kde:
- –nginx :Použijte ověřovací a instalační program Nginx
- –souhlasím :Souhlasíte s podmínkami služby Let’s Encrypt
- –přesměrování :Vynutit HTTPS přidáním přesměrování 301.
- –hsts :Povolit HTTP Strict Transport Security. To chrání před útokem na odstranění SSL/TLS.
- –staple-ocsp :Povolit sešívání OCSP.
- –e-mail :E-mail používaný pro registraci a kontakt pro obnovení.
- -d za příznakem následuje seznam názvů domén oddělených čárkou. Můžete přidat až 100 názvů domén.
Budete dotázáni, zda chcete dostávat e-maily od EFF (Electronic Frontier Foundation). Po výběru Y nebo N bude váš certifikát TLS automaticky získán a nakonfigurován za vás, což je indikováno níže uvedenou zprávou.
Krok 7:Dokončete instalaci ve webovém prohlížeči
Nyní máte přístup k průvodci webovou instalací ProjectSend pomocí připojení HTTPS.
https://projectsend.example.com/install/index.php
Chcete-li dokončit instalaci, musíte mu dát název webu a vytvořit účet správce.
Klikněte na Install
tlačítko, budete se moci přihlásit do webového rozhraní ProjectSend.
Jak nastavit ProjectSend Email Notification
Pokud bude vaši instanci ProjectSend používat více než jedna osoba, je důležité, aby váš server ProjectSend mohl odesílat transakční e-maily, jako jsou e-maily pro resetování hesla. Přejděte na Možnosti -> E-mailová upozornění . Najdete nastavení e-mailového serveru. Existují čtyři režimy odesílání:
- Pošta PHP (základní)
- SMTP
- Gmail
- Odeslat e-mail
Můžete zvolit sendmail
režimu, pokud má váš hostitel ProjectSend spuštěný server SMTP. Ostatní pole ponechte prázdná.
Pokud byste chtěli použít SMTP server běžící na jiném hostiteli, zvolte SMTP
režimu a zadejte adresu serveru SMTP a přihlašovací údaje, jak je uvedeno níže. Zvolte STARTTLS pro šifrování.
Informace o tom, jak nastavit e-mailový server, naleznete v následujícím návodu. Poznámka že vřele doporučuji provozovat poštovní server iRedMail na čerstvém čistém OS. Instalace iRedMail na OS, který má jiné webové aplikace, může selhat a pravděpodobně přerušit stávající aplikace.
- Jak snadno nastavit plně vybavený poštovní server na Ubuntu 20.04 pomocí iRedMail
Krok 8:Zvyšte limit paměti PHP
Výchozí limit paměti PHP je 128 MB. ProjectSend doporučuje 512 MB pro lepší výkon. Chcete-li změnit limit paměti PHP, upravte soubor php.ini soubor.
sudo nano /etc/php/7.4/fpm/php.ini
Najděte následující řádek. (řádek 409)
memory_limit = 128M
Změňte hodnotu.
memory_limit = 512M
Uložte a zavřete soubor. Případně můžete spustit následující příkaz a změnit hodnotu bez ručního otevírání souboru.
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini
Poté znovu načtěte PHP-FPM aby se změny projevily.
sudo systemctl reload php7.4-fpm
Krok 9:Zvyšte limit velikosti nahrávaného souboru
Výchozí maximální limit velikosti nahrávaného souboru stanovený Nginxem je 1 MB. Chcete-li povolit nahrávání velkých souborů na server ProjectSend, upravte konfigurační soubor Nginx pro ProjectSend.
sudo nano /etc/nginx/conf.d/projectsend.conf
V tomto souboru jsme již nastavili maximální velikost souboru, jak ukazuje
client_max_body_size 512M;
Pokud chcete, můžete to změnit, například 1G.
client_max_body_size 1024M;
Uložte a zavřete soubor. Poté znovu načtěte Nginx, aby se změny projevily.
sudo systemctl reload nginx
PHP také nastavuje limit velikosti nahrávaného souboru. Výchozí maximální velikost souboru pro nahrávání je 2 MB. Chcete-li zvýšit limit velikosti nahrávání, upravte konfigurační soubor PHP.
sudo nano /etc/php/7.4/fpm/php.ini
Najděte následující řádek (řádek 846).
upload_max_filesize = 2M
Změňte hodnotu takto:
upload_max_filesize = 1024M
Uložte a zavřete soubor. Případně můžete spustit následující příkaz a změnit hodnotu bez ručního otevírání souboru.
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini
Poté restartujte PHP-FPM.
sudo systemctl restart php7.4-fpm
Přidání místního záznamu DNS
Doporučuje se upravit /etc/hosts
soubor na vašem serveru ProjectSend a přidejte následující položku, takže ProjectSend sám nebude muset dotazovat veřejný DNS, což může zlepšit celkovou stabilitu. Pokud váš server ProjectSend nedokáže vyřešit projectsend.example.com
hostname, pak můžete narazit na časový limit brány 504 chyba.
127.0.0.1 localhost projectsend.example.com
IP adresa v /etc/hosts
soubor může mít více názvů hostitelů, takže pokud máte na stejném boxu nainstalované další aplikace, můžete také přidat další názvy hostitelů nebo subdomény na stejný řádek takto:
127.0.0.1 localhost focal ubuntu projectsend.example.com nextcloud.example.com
Tipy pro odstraňování problémů
Pokud narazíte na chyby, můžete zkontrolovat jeden z následujících souborů protokolu a zjistit, co je špatně.
- Protokol chyb Nginx:
/var/log/nginx/error.log
- Protokol chyb Nginx pro virtuálního hostitele ProjectSend:
/var/log/nginx/projectsend.error