Cara Memasang Rangkaian Sosial Elgg pada Ubuntu 20.04


Tutorial ini wujud untuk versi OS ini

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 18.04 (Bionic Beaver)

Pada halaman ini

  1. Prasyarat
  2. Bermula
  3. Pasang Nginx, PHP dan MariaDB
  4. Cipta Pangkalan Data untuk Elgg
  5. Muat turun Elgg
  6. Konfigurasikan Nginx untuk Elgg
  7. Akses UI Web Elgg
  8. Lindungi Elgg dengan Let's Encrypt SSL
  9. Kesimpulan

Elgg ialah platform rangkaian sosial percuma dan sumber terbuka yang digunakan untuk membina persekitaran sosial dalam talian. Ia ringkas, mudah digunakan, boleh disesuaikan dan menyediakan UI web yang berkuasa untuk mengurus kandungan melalui internet. Ia membolehkan sekolah, kolej dan universiti mencipta persekitaran sosial mereka sendiri di kampus.

Siaran ini akan menunjukkan kepada anda cara memasang Elgg dengan Nginx dan Let's Encrypt SSL pada Ubuntu 20.04.

Prasyarat

  • Pelayan yang menjalankan Ubuntu 20.04.
  • Nama domain yang sah ditunjukkan dengan IP pelayan anda.
  • Kata laluan akar dikonfigurasikan pada pelayan.

Bermula

Mula-mula, kemas kini pakej sistem kepada versi yang dikemas kini dengan menjalankan arahan berikut:

apt-get update -y

Setelah semua pakej dikemas kini, anda boleh meneruskan ke langkah seterusnya.

Pasang Nginx, PHP dan MariaDB

Sebelum memulakan, pastikan Nginx, MariaDB, PHP dan sambungan PHP lain dipasang dalam sistem anda. Jika tidak dipasang, anda boleh memasangnya dengan arahan berikut:

apt-get install nginx mariadb-server php php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath unzip curl -y

Selepas memasang semua pakej, edit fail php.ini dan tweak beberapa tetapan:

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

Tukar nilai berikut mengikut keperluan anda:

memory_limit = 256M
post_max_size = 64M
upload_max_filesize = 32M
date.timezone = UTC 

Simpan dan tutup fail kemudian mulakan semula perkhidmatan PHP-FPM untuk menggunakan perubahan:

systemctl restart php7.4-fpm

Cipta Pangkalan Data untuk Elgg

Seterusnya, anda perlu mencipta pangkalan data dan pengguna untuk Elgg. Pertama, log masuk ke MySQL dengan arahan berikut:

mysql

Sebaik sahaja anda disambungkan, buat pangkalan data dan pengguna dengan arahan berikut:

CREATE DATABASE elgg_db;
CREATE USER elgg_user@localhost IDENTIFIED BY 'securepassword';

Seterusnya, berikan semua keistimewaan kepada pangkalan data Elgg dengan arahan berikut:

GRANT ALL PRIVILEGES ON elgg_db.* TO elgg_user@localhost;

Seterusnya, siram keistimewaan dan keluar dari MySQL dengan arahan berikut:

FLUSH PRIVILEGES;
EXIT;

Pada ketika ini, pangkalan data dan pengguna MariaDB dicipta untuk Elgg. Anda kini boleh meneruskan ke langkah seterusnya.

Muat turun Elgg

Seterusnya, anda perlu memuat turun versi terkini Elgg dari tapak web Github. Anda boleh memuat turunnya dengan arahan berikut:

curl -s https://api.github.com/repos/Elgg/Elgg/releases/latest |grep browser_download_url | cut -d '"' -f 4 | wget -i -

Setelah muat turun selesai, nyahzip fail yang dimuat turun dengan arahan berikut:

unzip elgg-*.zip

Seterusnya, alihkan direktori yang diekstrak ke direktori akar web Nginx dengan arahan berikut:

mv elgg-*/ /var/www/html/elgg

Seterusnya, buat direktori data untuk Elgg dan tetapkan pemilikan yang betul kepada direktori data dan direktori elgg:

mkdir /var/www/html/data
chown -R www-data:www-data /var/www/html/elgg/
chown -R www-data:www-data /var/www/html/data
chmod -R 755 /var/www/html/elgg

Pada ketika ini, Elgg dimuat turun ke direktori akar web Nginx. Anda kini boleh meneruskan ke langkah seterusnya.

Konfigurasikan Nginx untuk Elgg

Seterusnya, anda perlu mencipta fail konfigurasi hos maya Nginx untuk menjadi hos Elgg di internet. Anda boleh menciptanya dengan arahan berikut:

nano /etc/nginx/conf.d/elgg.conf

Tambah baris berikut:

server {
  listen 80;

  server_name elgg.domain.com;
  root /var/www/html/elgg;

  index index.php;
  
  access_log /var/log/nginx/elgg_access.log;
  error_log /var/log/nginx/elgg_error.log;

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

  location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_keep_conn on;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

Simpan dan tutup fail kemudian sahkan Nginx untuk sebarang ralat sintaks:

nginx -t

Anda sepatutnya melihat output berikut:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Seterusnya, mulakan semula perkhidmatan Nginx menggunakan arahan berikut:

systemctl restart nginx

Anda boleh menyemak status perkhidmatan Nginx dengan arahan berikut:

systemctl status nginx

Anda sepatutnya melihat output berikut:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-07-30 15:43:55 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 18432 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 18443 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 18445 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??18445 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??18446 nginx: worker process
             ??18447 nginx: worker process

Jul 30 15:43:55 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 30 15:43:55 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Akses UI Web Elgg

Sekarang, buka penyemak imbas web anda dan akses antara muka web Elgg menggunakan URL http://elgg.domain.com. Anda akan dialihkan ke halaman alu-aluan Elgg:

Klik pada butang Seterusnya. Anda seharusnya melihat halaman semak keperluan PHP:

Pastikan semua keperluan dipasang kemudian klik pada butang Seterusnya. Anda seharusnya melihat halaman konfigurasi pangkalan data:

Berikan maklumat pangkalan data anda, direktori data, URL tapak dan klik pada butang Seterusnya. Anda seharusnya melihat halaman konfigurasi tapak:

Berikan maklumat tapak anda dan klik pada butang Seterusnya. Anda seharusnya melihat halaman penciptaan pengguna pentadbir Elgg:

Berikan nama pengguna, e-mel, kata laluan pentadbir anda dan klik pada butang Seterusnya. Setelah pemasangan berjaya diselesaikan, anda akan melihat halaman berikut:

Klik pada laman Pergi ke. Anda sepatutnya melihat halaman log masuk Elgg:

Berikan nama pengguna pentadbir anda, kata laluan dan klik pada butang Log masuk. Anda seharusnya melihat papan pemuka Elgg pada halaman berikut:

Lindungi Elgg dengan Let's Encrypt SSL

Adalah idea yang baik untuk melindungi tapak web anda dengan Let's Encrypt SSL. Mula-mula, pasang klien Certbot Let's Encrypt dalam pelayan anda dengan arahan berikut:

apt-get install python3-certbot-nginx -y

Setelah dipasang, selamatkan tapak web anda dengan Let's Encrypt SSL dengan menjalankan arahan berikut:

certbot --nginx -d elgg.domain.com

Anda akan diminta untuk memberikan alamat e-mel yang sah dan menerima syarat perkhidmatan seperti yang ditunjukkan di bawah:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for elgg.domain.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/elgg.conf

Seterusnya, pilih sama ada untuk mengubah hala trafik HTTP ke HTTPS seperti yang ditunjukkan di bawah:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Taip 2 dan tekan Enter untuk menyelesaikan pemasangan. Anda sepatutnya melihat output berikut:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/elgg.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://elgg.domain.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=elgg.domain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/elgg.domain.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/elgg.domain.com/privkey.pem
   Your cert will expire on 2021-05-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Kesimpulan

tahniah! anda telah berjaya memasang Elgg dengan Nginx dan Let's Encrypt SSL pada Ubuntu 20.04. Anda kini boleh dengan mudah melaksanakan platform rangkaian sosial anda sendiri di kampus anda dengan mudah.