GNU/Linux >> Linux の 問題 >  >> Ubuntu

Nginx(LEMPスタック)を使用してUbuntu20.04にProjectSendをインストールします

このチュートリアルでは、NginxWebサーバーを使用してUbuntu20.04LTSにProjectSendをインストールする方法を説明します。

ProjectSendとは何ですか?

ProjectSendは、無料のオープンソースのセルフホストファイル共有ソリューションです。 ProjectSendの機能:

  • リアルタイム統計
  • クライアントグループを作成する
  • 自己登録とソーシャルログイン
  • カスタムメールテンプレート

前提条件

ProjectSendはPHPプログラミング言語で書かれています。 このチュートリアルに従うには、最初にLEMPスタックをUbuntu20.04にインストールする必要があります 。まだ行っていない場合は、次のチュートリアルを確認してください。

  • Ubuntu 20.04にLEMPスタック(Nginx、MariaDB、PHP7.4-FPM)をインストールする方法

ProjectSendは、ホームサーバーまたはVPS(仮想プライベートサーバー)にインストールできます。ドメイン名も必要なので、後でHTTPSを有効にしてHTTPトラフィックを暗号化できるようになります。私はNameCheapからドメイン名を登録しました。これは、価格が低く、whoisのプライバシー保護が一生無料になるためです。 ProjectSendはドメイン名なしでインストールできますが、スヌーピングを防ぐためにHTTP接続を暗号化しないと、実際には意味がありません。サーバーソフトウェアをいじくり回して最大限に活用したい場合は、ドメイン名を購入することをお勧めします。

それでは、ProjectSendをインストールしましょう。

ステップ1:Ubuntu20.04にProjectSendをダウンロードする

Ubuntu20.04サーバーにログインします。次に、ProjectSendzipアーカイブをサーバーにダウンロードします。この記事の執筆時点では、最新の安定バージョンは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 オプションは、ターゲットディレクトリを指定します。 ProjectSendWebファイルは/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');

ファイルを保存して閉じます。 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ゾーンエディタでこのサブドメインのDNSAレコードを作成することを忘れないでください。実際のドメイン名をお持ちでない場合は、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;
   }
}

ファイルを保存して閉じます。 (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を有効にする

これで、ProjectSendインストールのドメイン名を入力して、WebブラウザでProjectSendWebインストールウィザードにアクセスできます。

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’sEncryptから無料の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'sEncryptの利用規約に同意する
  • –リダイレクト :301リダイレクトを追加してHTTPSを適用します。
  • –hsts :HTTP StrictTransportSecurityを有効にします。これにより、SSL/TLSストリッピング攻撃を防ぎます。
  • –staple-ocsp :OCSPステープルを有効にします。
  • –メール :登録と復旧の連絡に使用されるメール。
  • -d フラグの後には、コンマで区切られたドメイン名のリストが続きます。最大100個のドメイン名を追加できます。

EFF(Electronic Frontier Foundation)からのメールを受信するかどうかを尋ねられます。 YまたはNを選択すると、TLS証明書が自動的に取得および構成されます。これは、以下のメッセージで示されます。

ステップ7:Webブラウザでのインストールを完了します

これで、HTTPS接続を使用してProjectSendWebインストールウィザードにアクセスできます。

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

インストールを完了するには、サイト名を付けて管理者アカウントを作成する必要があります。

Installをクリックします ボタンをクリックすると、ProjectSendWebインターフェイスにログインできるようになります。

ProjectSendメール通知の設定方法

ProjectSendインスタンスが複数のユーザーによって使用される場合は、ProjectSendサーバーがパスワードリセットメールなどのトランザクションメールを送信できることが重要です。 オプションに移動します ->電子メール通知 。メールサーバーの設定が表示されます。 4つの送信モードがあります:

  • PHPメール(基本)
  • SMTP
  • Gmail
  • Sendmail

sendmailを選択できます ProjectSendホストでSMTPサーバーが実行されている場合はモード。他のフィールドは空白のままにします。

別のホストで実行されているSMTPサーバーを使用する場合は、SMTPを選択します。 モードにして、以下のようにSMTPサーバーアドレスとログインクレデンシャルを入力します。暗号化にはSTARTTLSを選択してください。

メールサーバーの設定方法については、次のチュートリアルをご覧ください。 新しいクリーンなOSでiRedMailメールサーバーを実行することを強くお勧めします。他のWebアプリケーションがあるOSにiRedMailをインストールすると、失敗し、既存のアプリケーションが破損する可能性があります。

  • iRedMailを使用してUbuntu20.04でフル機能のメールサーバーを簡単にセットアップする方法

ステップ8:PHPのメモリ制限を増やす

デフォルトのPHPメモリ制限は128MBです。 ProjectSendは、パフォーマンスを向上させるために512MBを推奨しています。 PHPのメモリ制限を変更するには、 php.iniを編集します ファイル。

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

次の行を見つけます。 (409行目)

memory_limit = 128M

値を変更します。

memory_limit = 512M

ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。

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;

ファイルを保存して閉じます。次に、変更を有効にするために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

ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。

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

/etc/hostsのIPアドレス ファイルには複数のホスト名を含めることができるため、同じボックスに他のアプリケーションをインストールしている場合は、次のように同じ行に他のホスト名またはサブドメインを追加することもできます。

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

Ubuntu
  1. Ubuntu 18.04にPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  2. Ubuntu 20.04 LTSにPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  3. Ubuntu20.04にNginxを使用してShlinkURLShortenerをインストールする方法

  1. Ubuntu16.04にNginx(LEMP)でTYPO38.1をインストールする方法

  2. Ubuntu20.04にLEMPスタックを使用してWordPressをインストールする

  3. Ubuntu20.04LTSにLEMPスタックを使用してphpMyAdminをインストールする

  1. Ubuntu 20.04 LTSにNginx、MySQL、PHP(LEMPスタック)をインストールします

  2. Ubuntu20.04にLEMPスタックをインストールする方法

  3. Ubuntu20.04にLEMPスタックを使用してWordPressをインストールする