GNU/Linux >> Belajar Linux >  >> Ubuntu

Instal ProjectSend di Ubuntu 20.04 dengan Nginx (LEMP Stack)

Tutorial ini akan menunjukkan cara menginstal ProjectSend di Ubuntu 20.04 LTS dengan server web Nginx.

Apa itu ProjectSend?

ProjectSend adalah solusi berbagi file yang di-hosting-sendiri dengan sumber terbuka dan gratis. Fitur ProjectSend:

  • Statistik waktu nyata
  • Buat grup klien
  • pendaftaran mandiri dan login sosial
  • Templat email khusus

Prasyarat

ProjectSend ditulis dalam bahasa pemrograman PHP. Untuk mengikuti tutorial ini, Anda harus terlebih dahulu menginstal LEMP stack di Ubuntu 20.04 . Jika Anda belum melakukannya, silakan lihat tutorial berikut.

  • Cara Memasang LEMP Stack (Nginx, MariaDB, PHP7.4-FPM) di Ubuntu 20.04

Anda dapat menginstal ProjectSend di server rumah Anda atau VPS (server pribadi virtual). Anda juga memerlukan nama domain, sehingga nantinya Anda dapat mengaktifkan HTTPS untuk mengenkripsi lalu lintas HTTP. Saya mendaftarkan nama domain saya dari NameCheap karena harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup. ProjectSend dapat diinstal tanpa nama domain, tetapi sangat tidak masuk akal jika Anda tidak mengenkripsi koneksi HTTP untuk mencegah pengintaian. Saya sarankan membeli nama domain, jika Anda benar-benar ingin mengotak-atik perangkat lunak server dan menggunakannya secara maksimal.

Sekarang mari kita instal ProjectSend.

Langkah 1:Unduh ProjectSend di Ubuntu 20.04

Masuk ke server Ubuntu 20.04 Anda. Kemudian unduh arsip zip ProjectSend ke server Anda. Versi stabil terbaru adalah r1295 pada saat penulisan ini. Anda mungkin perlu mengubah nomor versi. Buka https://www.projectsend.org/#download untuk melihat versi terbaru.

Anda dapat menjalankan perintah berikut untuk mengunduhnya di server Anda.

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

Setelah diunduh, ekstrak arsip dengan unzip .

sudo apt install unzip

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

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

-d opsi menentukan direktori target. File web ProjectSend akan diekstraksi ke /usr/share/nginx/projectsend/ . Kemudian kita perlu mengubah pemilik direktori ini menjadi www-data sehingga server web (Nginx) dapat menulis ke direktori ini.

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

Langkah 2:Buat Database dan Pengguna untuk ProjectSend di Server Database MariaDB

Masuk ke server database MariaDB dengan perintah berikut. Karena MariaDB sekarang menggunakan unix_socket plugin untuk otentikasi login pengguna, tidak perlu memasukkan kata sandi root MariaDB. Kita hanya perlu mengawali mysql perintah dengan sudo .

sudo mysql

Kemudian buat database untuk ProjectSend. Tutorial ini menamai projectend database. Anda dapat menggunakan nama apa pun yang Anda suka.

create database projectsend;

Buat pengguna basis data. Sekali lagi, Anda dapat menggunakan nama pilihan Anda untuk pengguna ini. Ganti your-password dengan kata sandi pilihan Anda.

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

Berikan pengguna ini semua hak istimewa di projectsend basis data.

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

Hapus hak istimewa dan keluar.

flush privileges;

exit;

Langkah 3:Konfigurasikan ProjectSend

Buka includes direktori.

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

Salin contoh file konfigurasi dan ganti namanya menjadi sys.config.php .

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

Sekarang edit file konfigurasi baru dengan editor teks baris perintah seperti Nano.

sudo nano sys.config.php

Temukan baris berikut dan ganti teks merah dengan nama database, nama pengguna, dan kata sandi yang Anda buat di langkah 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');

Simpan dan tutup file. Untuk menyimpan file di editor teks Nano, tekan Ctrl+O , lalu tekan Enter untuk mengkonfirmasi. Selanjutnya, tekan Ctrl+X untuk keluar.

Langkah 4:Buat File Konfigurasi Nginx untuk ProjectSend

Buat projectsend.conf file di /etc/nginx/conf.d/ direktori, dengan editor teks baris perintah seperti Nano.

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

Salin dan tempel teks berikut ke dalam file. Ganti projectsend.example.com dengan sub-domain pilihan Anda sendiri. Jangan lupa untuk membuat catatan DNS A untuk sub-domain ini di editor zona DNS Anda. Jika Anda tidak memiliki nama domain asli, saya sarankan pergi ke NameCheap untuk membelinya. Harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.

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;
   }
}

Simpan dan tutup file. (Untuk menyimpan file di editor teks Nano, tekan Ctrl+O , lalu tekan Enter untuk mengkonfirmasi. Untuk keluar, tekan Ctrl+X .)

Kemudian uji konfigurasi Nginx.

sudo nginx -t

Jika pengujian berhasil, muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

Langkah 5:Instal dan Aktifkan Modul PHP

Jalankan perintah berikut untuk menginstal modul PHP yang diperlukan atau direkomendasikan oleh 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

Langkah 6:Aktifkan HTTPS

Sekarang Anda dapat mengakses wizard penginstalan web ProjectSend di browser web Anda dengan memasukkan nama domain untuk penginstalan ProjectSend Anda.

projectsend.example.com/install/index.php

Jika halaman web tidak dapat dimuat, Anda mungkin perlu membuka port 80 di firewall.

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

Dan juga port 443.

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

Sebelum memasukkan informasi sensitif apa pun, kita harus mengaktifkan koneksi HTTPS aman di ProjectSend. Kami dapat memperoleh sertifikat TLS gratis dari Let's Encrypt. Instal klien Let's Encrypt (certbot) dari repositori Ubuntu 20.04.

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx adalah plugin Nginx. Selanjutnya, jalankan perintah berikut untuk mendapatkan sertifikat TLS gratis menggunakan plugin Nginx.

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

Dimana:

  • –nginx :Gunakan autentikator dan penginstal Nginx
  • –setuju-untuk :Setuju dengan persyaratan layanan Let's Encrypt
  • –mengalihkan :Terapkan HTTPS dengan menambahkan 301 redirect.
  • –hsts :Aktifkan Keamanan Transportasi Ketat HTTP. Ini bertahan dari serangan stripping SSL/TLS.
  • –staple-ocsp :Aktifkan Stapel OCSP.
  • –email :Email yang digunakan untuk pendaftaran dan kontak pemulihan.
  • -d flag diikuti oleh daftar nama domain, dipisahkan dengan koma. Anda dapat menambahkan hingga 100 nama domain.

Anda akan ditanya apakah Anda ingin menerima email dari EFF (Electronic Frontier Foundation). Setelah memilih Y atau T, sertifikat TLS Anda akan otomatis diperoleh dan dikonfigurasi untuk Anda, yang ditunjukkan oleh pesan di bawah ini.

Langkah 7:Selesaikan Instalasi di Browser Web Anda

Sekarang Anda dapat mengakses wizard pemasangan web ProjectSend menggunakan koneksi HTTPS.

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

Untuk menyelesaikan penginstalan, Anda harus memberinya nama situs dan membuat akun admin.

Klik tombol Install , Anda akan dapat masuk ke antarmuka Web ProjectSend.

Cara Menyiapkan Pemberitahuan Email ProjectSend

Jika instans ProjectSend Anda akan digunakan oleh lebih dari satu orang, server ProjectSend harus dapat mengirim email transaksional, seperti email pengaturan ulang kata sandi. Buka Opsi -> Pemberitahuan Email . Anda akan menemukan pengaturan server email. Ada empat mode pengiriman:

  • Email PHP (dasar)
  • SMTP
  • Gmail
  • Kirim email

Anda dapat memilih sendmail mode jika host ProjectSend Anda menjalankan server SMTP. Kosongkan bidang lainnya.

Jika Anda ingin menggunakan server SMTP yang berjalan di host lain, pilih SMTP mode dan masukkan alamat server SMTP dan kredensial login seperti di bawah ini. Pilih STARTTLS untuk enkripsi.

Untuk cara setting email server silahkan simak tutorial berikut ini. Catatan bahwa saya sangat merekomendasikan menjalankan server email iRedMail pada OS bersih yang baru. Menginstal iRedMail pada OS yang memiliki aplikasi web lain dapat gagal, dan kemungkinan merusak aplikasi yang ada.

  • Cara menyiapkan server email berfitur lengkap dengan mudah di Ubuntu 20.04 dengan iRedMail

Langkah 8:Tingkatkan Batas Memori PHP

Batas memori PHP default adalah 128MB. ProjectSend merekomendasikan 512MB untuk kinerja yang lebih baik. Untuk mengubah batas memori PHP, edit php.ini berkas.

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

Temukan baris berikut. (baris 409)

memory_limit = 128M

Ubah nilainya.

memory_limit = 512M

Simpan dan tutup file. Atau, Anda dapat menjalankan perintah berikut untuk mengubah nilai tanpa membuka file secara manual.

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

Kemudian muat ulang PHP-FPM layanan agar perubahan diterapkan.

sudo systemctl reload php7.4-fpm

Langkah 9:Tingkatkan Batas Ukuran File Unggah

Batas ukuran file unggahan maksimum default yang ditetapkan oleh Nginx adalah 1MB. Untuk mengizinkan pengunggahan file besar ke server ProjectSend Anda, edit file konfigurasi Nginx untuk ProjectSend.

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

Kami telah menetapkan ukuran file maksimum dalam file ini, seperti yang ditunjukkan oleh

client_max_body_size 512M;

Anda dapat mengubahnya jika mau, seperti 1G.

client_max_body_size 1024M;

Simpan dan tutup file. Kemudian muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

PHP juga menetapkan batas ukuran file unggahan. Ukuran file maksimum default untuk mengunggah adalah 2MB. Untuk meningkatkan batas ukuran upload, edit file konfigurasi PHP.

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

Temukan baris berikut (baris 846).

upload_max_filesize = 2M

Ubah nilainya seperti di bawah ini:

upload_max_filesize = 1024M

Simpan dan tutup file. Atau, Anda dapat menjalankan perintah berikut untuk mengubah nilai tanpa membuka file secara manual.

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

Kemudian restart PHP-FPM.

sudo systemctl restart php7.4-fpm

Menambahkan Entri DNS Lokal

Disarankan untuk mengedit /etc/hosts file di server ProjectSend Anda dan tambahkan entri berikut, sehingga ProjectSend sendiri tidak perlu menanyakan DNS publik, yang dapat meningkatkan stabilitas secara keseluruhan. Jika server ProjectSend Anda tidak dapat menyelesaikan projectsend.example.com hostname, maka Anda mungkin mengalami 504 gateway time out kesalahan.

127.0.0.1   localhost projectsend.example.com

Alamat IP di /etc/hosts file dapat memiliki beberapa nama host, jadi jika Anda memiliki aplikasi lain yang diinstal pada kotak yang sama, Anda juga dapat menambahkan nama host atau sub-domain lain pada baris yang sama seperti ini:

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

Kiat Pemecahan Masalah

Jika Anda menemukan kesalahan, Anda dapat memeriksa salah satu file log berikut untuk mencari tahu apa yang salah.

  • Log kesalahan Nginx:/var/log/nginx/error.log
  • Log kesalahan Nginx untuk host virtual ProjectSend:/var/log/nginx/projectsend.error

Ubuntu
  1. Cara Instal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 18.04

  2. Cara Menginstal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 20.04 LTS

  3. Cara Menginstal Shortener URL Shlink dengan Nginx di Ubuntu 20.04

  1. Cara menginstal TYPO3 8.1 dengan Nginx (LEMP) di Ubuntu 16.04

  2. Instal WordPress dengan LEMP Stack di Ubuntu 20.04

  3. Instal phpMyAdmin Dengan LEMP Stack Di Ubuntu 20.04 LTS

  1. Instal Nginx, MySQL, PHP (LEMP Stack) Di Ubuntu 20.04 LTS

  2. Cara Menginstal LEMP Stack di Ubuntu 20.04

  3. Instal WordPress dengan LEMP Stack di Ubuntu 20.04