One place for hosting & domains

      What is LAMP?


      LAMP refers to a collection of open-source software that is commonly used together to serve web applications. The term LAMP is an acronym that represents the configuration of a Linux operating system with an Apache web server, with site data stored in a MySQL database and dynamic content processed by PHP.

      The LAMP stack represents one way to configure a web server, and is used in a number of large applications across the web.

      To learn more about LAMP, visit our comprehensive list of tutorials on the LAMP stack.



      Source link

      Cara Menginstal WordPress di Ubuntu 20.04 dengan Tumpukan LAMP


      Pengantar

      WordPress adalah teknologi sumber terbuka yang saat ini sangat populer untuk membuat situs web dan blog di internet. Digunakan oleh 63% dari seluruh situs web yang menggunakan sistem manajemen konten (CMS), situs WordPress mencakup 36% dari semua situs web yang kini online.

      Ada banyak pendekatan berbeda untuk memperoleh akses ke WordPress dan beberapa proses penyiapan itu lebih kompleks dari yang lain. Tutorial ini dimaksudkan bagi mereka yang ingin menginstal dan mengelola instans WordPress di server awan yang tidak diawasi melalui baris perintah. Meskipun membutuhkan langkah lebih banyak daripada instalasi WordPress siap-pakai, pendekatan ini memberikan kontrol lebih besar terhadap lingkungan WordPress kepada administrator.

      Jika Anda sedang berusaha mengakses instalasi WordPress siap-pakai, DigitalOcean Marketplace menyajikan aplikasi sekali-klik untuk memandu Anda melakukan instalasi WordPress saat menjalankan server.

      Tergantung kebutuhan dan tujuan, Anda mungkin merasa lebih cocok dengan opsi lain. Sebagai perangkat lunak sumber terbuka, WordPress bebas diunduh dan diinstal, tetapi agar tersedia di web, Anda mungkin perlu membeli infrastruktur awan dan nama domain. Ikuti terus panduan ini jika Anda tertarik mengerjakan instalasi di sisi server dan menyiapkan situs WordPress.

      Tutorial ini akan menggunakan tumpukan LAMP (Linux, Apache, MySQL, dan PHP), yang merupakan satu opsi bagi arsitektur server yang mendukung WordPress dengan menyediakan sistem operasi Linux, server web Apache, basis data MySQL, dan bahasa pemrograman PHP. Kita akan menginstal dan menyiapkan WordPress melalui LAMP di server Linux Ubuntu 20.04.

      Prasyarat

      Untuk menyelesaikan tutorial ini, Anda akan membutuhkan akses ke server Ubuntu 20.04 dan perlu menyelesaikan langkah-langkah berikut sebelum memulai panduan ini:

      • Siapkan server Anda dengan mengikuti panduan penyiapan awal server Ubuntu 20.04 dari kami, dan pastikan Anda memiliki pengguna sudo non-root.
      • Instal tumpukan LAMP dengan mengikuti panduan LAMP kami untuk menginstal dan mengonfigurasi perangkat lunak ini.
      • Amankan situs Anda: WordPress mengambil masukan pengguna dan menyimpan data pengguna, sehingga perlu memiliki lapisan keamanan. TLS/SSL adalah teknologi yang memungkinkan Anda mengenkripsi lalu lintas dari situs Anda sehingga koneksi Anda dan pengguna Anda aman. Berikut ini dua opsi yang tersedia untuk memenuhi persyaratan ini:
        • Jika memiliki nama domain… Anda dapat mengamankan situs dengan Let’s Encrypt, yang menyediakan sertifikat gratis dan tepercaya. Ikuti panduan Let’s Encrypt untuk Apache dari kami untuk menyiapkannya.
        • Jika tidak memiliki domain… dan Anda hanya menggunakan konfigurasi ini untuk pengujian atau penggunaan pribadi, Anda dapat menggunakan sertifikat yang ditandatangani sendiri sebagai gantinya. Sertifikat ini menyediakan tipe enkripsi yang sama, tetapi tanpa validasi domain. Untuk menyiapkan, ikuti panduan SSL yang ditandatangani sendiri untuk Apache dari kami.

      Bila telah menyelesaikan langkah-langkah penyiapan, masuk ke server Anda sebagai pengguna sudo dan lanjutkan di bawah ini.

      Langkah 1 — Membuat Basis Data dan Pengguna MySQL untuk WordPress

      Langkah pertama yang akan kita ambil merupakan persiapan. WordPress menggunakan MySQL untuk mengelola dan menyimpan informasi situs dan pengguna. Kita sudah menginstal MySQL, tetapi kita perlu membuat basis data dan pengguna yang akan digunakan oleh WordPress.

      Untuk memulai, log masuk ke akun root (administratif) MySQL dengan mengeluarkan perintah ini (ingat, ini bukan pengguna root di server Anda):

      Anda akan diminta memasukkan kata sandi yang Anda buat untuk akun root MySQL saat menginstal perangkat lunak itu.

      Catatan: Jika Anda tidak dapat mengakses basis data MySQL melalui root, Anda sebagai pengguna sudo dapat memperbarui kata sandi pengguna root dengan masuk ke basis data seperti ini:

      Setelah menerima prompt MySQL, Anda dapat memperbarui kata sandi pengguna root. Di sini, ganti new_password dengan kata sandi yang kuat pilihan Anda.

      • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

      Anda sekarang dapat mengetikkan EXIT; dan dapat log masuk kembali ke dalam basis data melalui kata sandi dengan perintah berikut:

      Di dalam basis data, kita dapat membuat basis data eksklusif yang akan dikontrol WordPress. Anda dapat menamainya sesuai keinginan, tetapi kami akan menggunakan nama wordpress dalam panduan ini. Buat basis data untuk WordPress dengan mengetikkan:

      • CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

      Catatan: Setiap pernyataan MySQL harus diakhiri dengan titik koma (;). Periksa untuk memastikan keberadaannya jika Anda mengalami masalah.

      Selanjutnya, kita akan membuat akun pengguna MySQL terpisah yang akan digunakan secara eksklusif untuk mengoperasikan basis data kita yang baru. Membuat basis data dan akun spesifik dapat mendukung kita dari sudut pandang manajemen dan keamanan. Kita akan menggunakan nama wordpressuser di dalam panduan ini, tetapi silakan menggunakan nama apa pun yang relevan bagi Anda.

      Kita akan membuat akun ini, menentukan kata sandi, dan memberikan akses ke basis data yang kita telah buat. Kita dapat melakukannya dengan mengetikkan perintah berikut. Ingatlah memilih kata sandi yang kuat di sini bagi pengguna basis data Anda dengan password yang kita miliki:

      • CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

      Selanjutnya, beri tahu basis data bahwa wordpressuser kita harus memiliki akses lengkap ke basis data yang kita siapkan:

      • GRANT ALL ON wordpress.* TO 'wordpressuser'@'%';

      Kini, Anda memiliki basis data dan akun pengguna, masing-masing dibuat khusus untuk WordPress. Kita perlu memberikan privilese agar instans MySQL saat ini mengetahui perubahan terbaru yang kita lakukan:

      Keluarlah dari MySQL dengan mengetikkan:

      Pada langkah selanjutnya, kita akan menambahkan beberapa fondasi untuk plugin WordPress dengan mengunduh ekstensi PHP bagi server kita.

      Langkah 2 — Menginstal Ekstensi Tambahan PHP

      Saat menyiapkan tumpukan LAMP, kita hanya membutuhkan sedikit ekstensi untuk membuat PHP berkomunikasi dengan MySQL. WordPress dan kebanyakan plugin-nya memanfaatkan ekstensi tambahan PHP.

      Kita dapat mengunduh dan menginstal beberapa ekstensi PHP paling populer yang digunakan bersama WordPress dengan mengetikkan:

      • sudo apt update
      • sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

      Ini akan menjadi dasar untuk menginstal plugin tambahan ke dalam situs WordPress kita.

      Catatan: Setiap plugin WordPress memiliki persyaratannya sendiri. Sebagian mungkin mengharuskan instalasi paket PHP tambahan. Periksa dokumentasi plugin Anda untuk mengetahui persyaratan PHP-nya. Jika ada, itu dapat diinstal dengan apt seperti diperagakan di atas.

      Kita perlu memulai ulang Apache untuk memuat ekstensi baru ini, tetapi kita akan melakukan konfigurasi lebih banyak pada Apache di bagian selanjutnya, sehingga Anda bisa menunggu sampai konfigurasi Apache selesai atau memulai ulang sekarang untuk menyelesaikan proses ekstensi PHP.

      • sudo systemctl restart apache2

      Langkah 3 — Menyesuaikan Konfigurasi Apache untuk Memungkinkan Pengesampingan dan Penulisan Ulang .htaccess

      Selanjutnya, kita akan membuat beberapa penyesuaian kecil pada konfigurasi Apache. Berdasarkan tutorial prasyarat, Anda harus memiliki berkas konfigurasi untuk situs Anda di direktori /etc/apache2/sites-available/.

      Dalam panduan ini, kita akan menggunakan /etc/apache2/sites-available/wordpress.conf sebagai contoh di sini, tetapi Anda harus mengganti jalur ke berkas konfigurasi bila diperlukan. Selain itu, kita akan menggunakan /var/www/wordpress sebagai direktori root instalasi WordPress. Anda harus menggunakan root web yang ditetapkan dalam konfigurasi Anda. Jika mengikuti tutorial LAMP dari kami, ini bisa berupa nama domain Anda sebagai pengganti wordpress dalam kedua instans ini.

      Catatan: Anda dapat menggunakan konfigurasi asali 000-default.conf (dengan /var/www/html sebagai root web Anda). Hal ini bisa digunakan jika Anda hanya akan melaksanakan hos satu situs web di server ini. Jika tidak, sebaiknya membagi konfigurasi yang diperlukan menjadi beberapa potongan logis, satu berkas per situs.

      Dengan mengidentifikasi jalur, kita dapat beralih menangani .htaccess agar Apache dapat menangani perubahan konfigurasi berdasarkan masing-masing direktori.

      Mengaktifkan Pengesampingan .htaccess

      Saat ini, penggunaan berkas .htaccess dinonaktifkan. WordPress dan banyak plugin WordPress menggunakan berkas-berkas ini secara luas untuk penyesuaian di dalam direktori pada perilaku server web.

      Buka berkas konfigurasi Apache untuk situs web Anda dengan editor teks seperti nano.

      • sudo nano /etc/apache2/sites-available/wordpress.conf

      Untuk mengizinkan berkas .htaccess, kita perlu menetapkan arahan AllowOverride di dalam blok Directory yang mengarah ke root dokumen kita. Tambahkan blok teks berikut di dalam blok VirtualHost berkas konfigurasi Anda, pastikan menggunakan direktori root web yang benar:

      /etc/apache2/sites-available/wordpress.conf

      <Directory /var/www/wordpress/>
          AllowOverride All
      </Directory>
      

      Setelah Anda selesai, simpan dan tutup berkas. Di nano, Anda dapat melakukannya dengan menekan CTRL dan X bersamaan, lalu Y, lalu ENTER.

      Mengaktifkan Modul Penulisan Ulang

      Selanjutnya, kita dapat mengaktifkan mod_rewrite untuk memanfaatkan fitur permalink WordPress:

      Hal ini memungkinkan Anda memiliki permalink yang lebih mudah dipahami orang pada pos Anda, seperti dua contoh berikut ini:

      http://example.com/2012/post-name/
      http://example.com/2012/12/30/post-name
      

      Perintah a2enmod memanggil skrip yang akan mengaktifkan modul yang ditetapkan dalam konfigurasi Apache.

      Mengaktifkan Perubahan

      Sebelum menerapkan perubahan yang kita buat, periksa untuk memastikan kita tidak membuat kesalahan sintaks apa pun dengan menjalankan tes berikut.

      • sudo apache2ctl configtest

      Anda mungkin menerima keluaran seperti berikut:

      Output

      AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

      Jika Anda ingin menyembunyikan baris teratas, tambahkan saja arahan ServerName ke berkas konfigurasi utama (global) Apache di /etc/apache2/apache2.conf. ServerName bisa berupa domain atau alamat IP server Anda. Namun, ini hanya pesan dan tidak akan memengaruhi fungsi situs Anda. Asalkan keluarannya berisi Syntax OK, Anda siap melanjutkan.

      Mulai ulang Apache untuk menerapkan perubahan. Pastikan memulai ulang sekarang sekalipun Anda telah memulai ulang sebelumnya dalam tutorial ini.

      • sudo systemctl restart apache2

      Selanjutnya, kita akan mengunduh dan menyiapkan WordPress itu sendiri.

      Langkah 4 — Mengunduh WordPress

      Kini setelah perangkat lunak server dikonfigurasi, kita dapat mengunduh dan menyiapkan WordPress. Karena alasan keamanan tertentu, selalu disarankan untuk mendapatkan versi terbaru WordPress dari situsnya.

      Ubah menjadi direktori yang dapat ditulis (kami merekomendasikan direktori sementara seperti /tmp) dan unduh rilis yang dikompresi.

      • cd /tmp
      • curl -O https://wordpress.org/latest.tar.gz

      Ekstrak berkas yang dikompresi untuk membuat struktur direktori WordPress:

      Kita akan memindahkan berkas-berkas ini ke root dokumen sebentar lagi. Sebelum melakukannya, kita dapat menambah berkas .htaccess semu agar nanti dapat digunakan WordPress.

      Buat berkas dengan mengetikkan:

      • touch /tmp/wordpress/.htaccess

      Kita juga akan menyalin berkas konfigurasi sampel ke nama berkas yang dibaca WordPress:

      • cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

      Kita juga dapat membuat direktori upgrade, agar WordPress tidak mengalami masalah izin saat mencoba melakukannya sendiri setelah pembaruan pada perangkat lunaknya:

      • mkdir /tmp/wordpress/wp-content/upgrade

      Sekarang, kita dapat menyalin seluruh isi direktori ke dalam root dokumen. Kita menggunakan titik di akhir direktori sumber untuk menunjukkan bahwa semua yang ada di dalam direktori harus disalin, termasuk berkas tersembunyi (seperti berkas .htaccess yang kita buat):

      • sudo cp -a /tmp/wordpress/. /var/www/wordpress

      Pastikan Anda mengganti direktori /var/www/wordpress dengan direktori yang telah Anda siapkan di server.

      Langkah 5 — Mengonfigurasi Direktori WordPress

      Sebelum melakukan penyiapan WordPress berbasis web, kita perlu menyesuaikan beberapa item dalam direktori WordPress.

      Menyesuaikan Kepemilikan dan Izin

      Langkah penting yang perlu kita lakukan adalah menyiapkan izin dan kepemilikan berkas yang semestinya.

      Kita akan mulai dengan memberikan kepemilikan semua berkas ke pengguna dan grup www-data. Inilah pengguna yang berjalan di server web Apache, dan Apache perlu bisa membaca dan menulis berkas WordPress untuk menyajikan situs web dan melakukan pembaruan otomatis.

      Perbarui kepemilikan dengan perintah chown yang memungkinkan Anda memodifikasi kepemilikan berkas. Pastikan mengarahkan ke direktori yang relevan di server Anda.

      • sudo chown -R www-data:www-data /var/www/wordpress

      Selanjutnya, kita akan menjalankan dua perintah find untuk mengatur izin yang benar pada direktori dan berkas WordPress:

      • sudo find /var/www/wordpress/ -type d -exec chmod 750 {} ;
      • sudo find /var/www/wordpress/ -type f -exec chmod 640 {} ;

      Izin ini akan membuat Anda bekerja secara efektif dengan WordPress, tetapi ingatlah bahwa beberapa plugin dan prosedur mungkin membutuhkan penyesuaian tambahan.

      Menyiapkan Berkas Konfigurasi WordPress

      Sekarang, kita perlu membuat beberapa perubahan pada berkas konfigurasi utama WordPress.

      Ketika membuka berkas itu, tugas pertama kita adalah menyesuaikan beberapa kunci rahasia untuk memberikan suatu tingkat keamanan bagi instalasi kita. WordPress menyediakan generator yang aman untuk nilai-nilai ini sehingga Anda tidak perlu memikirkan nilai yang bagus. Ini hanya digunakan secara internal, sehingga menggunakan nilai-nilai yang kompleks dan aman di sini tidak akan mengurangi kegunaan.

      Untuk mengambil nilai-nilai yang aman dari generator kunci rahasia WordPress, ketikkan:

      • curl -s https://api.wordpress.org/secret-key/1.1/salt/

      Anda akan mendapatkan kembali nilai-nilai unik yang menyerupai keluaran seperti blok di bawah ini.

      Peringatan! Anda perlu meminta nilai-nilai unik ini setiap kali. JANGAN menyalin nilai-nilai di bawah ini!

      Output

      define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

      Ini adalah baris konfigurasi yang dapat kita tempelkan langsung dalam berkas konfigurasi untuk mengatur kunci aman. Salin keluaran yang Anda terima sekarang.

      Selanjutnya, buka berkas konfigurasi WordPress:

      • sudo nano /var/www/wordpress/wp-config.php

      Temukan bagian yang berisi nilai-nilai contoh untuk pengaturan itu.

      /var/www/wordpress/wp-config.php

      . . .
      
      define('AUTH_KEY',         'put your unique phrase here');
      define('SECURE_AUTH_KEY',  'put your unique phrase here');
      define('LOGGED_IN_KEY',    'put your unique phrase here');
      define('NONCE_KEY',        'put your unique phrase here');
      define('AUTH_SALT',        'put your unique phrase here');
      define('SECURE_AUTH_SALT', 'put your unique phrase here');
      define('LOGGED_IN_SALT',   'put your unique phrase here');
      define('NONCE_SALT',       'put your unique phrase here');
      
      . . .
      

      Hapus baris-baris itu dan tempelkan dalam nilai-nilai yang Anda salin dari baris perintah:

      /var/www/wordpress/wp-config.php

      . . .
      
      define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
      define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
      define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
      define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
      define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
      define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
      define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
      define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');
      
      . . .
      

      Selanjutnya, kita akan memodifikasi beberapa pengaturan koneksi basis data di awal berkas. Anda perlu menyesuaikan nama basis data, pengguna basis data, dan kata sandi yang terkait yang Anda konfigurasikan dalam MySQL.

      Perubahan lain yang perlu kita buat adalah mengatur metode yang harus digunakan WordPress untuk menulis sistem berkas. Karena kita telah memberi izin server web untuk menulis bila membutuhkan, kita dapat secara eksplisit mengatur metode sistem berkas ke “direct”. Tidak mengaturnya dengan pengaturan saat ini akan mengakibatkan WordPress meminta kredensial FTP saat kita melakukan beberapa tindakan.

      Pengaturan ini dapat ditambahkan di bawah pengaturan koneksi basis data, atau di tempat lain dalam berkas:

      /var/www/wordpress/wp-config.php

      . . .
      
      // ** MySQL settings - You can get this info from your web host ** //
      /** The name of the database for WordPress */
      define( 'DB_NAME', 'wordpress' );
      
      /** MySQL database username */
      define( 'DB_USER', 'wordpressuser' );
      
      /** MySQL database password */
      define( 'DB_PASSWORD', 'password' );
      
      /** MySQL hostname */
      define( 'DB_HOST', 'localhost' );
      
      /** Database Charset to use in creating database tables. */
      define( 'DB_CHARSET', 'utf8' );
      
      /** The Database Collate type. Don't change this if in doubt. */
      define( 'DB_COLLATE', '' );
      
      
      . . .
      
      define('FS_METHOD', 'direct');
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Langkah 6 — Menyelesaikan Instalasi Melalui Antarmuka Web

      Karena konfigurasi server selesai, kita dapat menyelesaikan instalasi melalui antarmuka web.

      Dalam browser web Anda, navigasikan ke nama domain server atau alamat IP publik server Anda:

      https://server_domain_or_IP
      

      Pilih bahasa yang ingin Anda gunakan:

      Pemilihan bahasa WordPress

      Selanjutnya, Anda akan masuk ke halaman penyiapan utama.

      Pilih nama untuk situs WordPress Anda dan pilih nama pengguna. Disarankan memilih nama yang unik dan hindari nama pengguna yang umum seperti “admin” untuk keperluan keamanan. Kata sandi yang kuat dibuat secara otomatis. Simpan kata sandi ini atau pilih alternatif kata sandi yang kuat.

      Masukkan alamat surel Anda dan pilih apakah ingin mencegah mesin pencari mengindeks situs Anda:

      Instalasi penyiapan WordPress

      Bila telah mengklik, Anda akan dibawa ke laman yang meminta Anda untuk log masuk:

      Prompt log masuk WordPress

      Setelah log masuk, Anda akan dibawa ke dasbor administrasi WordPress:

      Prompt log masuk WordPress

      Saat ini, Anda dapat mulai mendesain situs web WordPress! Jika ini adalah kali pertama Anda menggunakan WordPress, jelajahi sedikit antarmukanya untuk mengenal CMS Anda yang baru.

      Kesimpulan

      Selamat, WordPress sekarang telah diinstal dan siap digunakan!

      Saat ini, Anda mungkin perlu melakukan hal berikut:

      • Pilih pengaturan permalink untuk pos WordPress, yang dapat ditemukan di Settings > Permalink.
      • Pilih tema baru di Appearance > Themes.
      • Instal plugin baru untuk menambah fungsionalitas situs Anda di Plugins > Add New.
      • Jika akan bekerja sama dengan orang lain, Anda mungkin perlu juga menambahkan pengguna tambahan saat ini di Users > Add New.

      Anda dapat menemukan sumber daya tambahan untuk cara alternatif menginstal WordPress, mempelajari cara menginstal WordPress pada distribusi server lain, mengotomatiskan instalasi WordPress, dan menskalakan situs WordPress dengan memeriksa tag Komunitas WordPress dari kami.



      Source link

      How To Install OpenEMR on Ubuntu 20.04 with a LAMP Stack (Apache, MySQL, PHP)


      Introduction

      OpenEMR is an open source electronic health records and medical practice management tool. It is used by physicians and healthcare facilities to manage electronic medical records, prescriptions, patient demographic tracking, scheduling, reports, and electronic billing. At the time of this publication, OpenEMR supports more than 30 languages.

      In this tutorial, you will install OpenEMR on an Ubuntu 20.04 server running a LAMP environment (Linux, Apache, MySQL, PHP).

      Prerequisites

      • An Ubuntu 20.04 server with a non-root sudo-enabled user account and a basic firewall. This can be configured using our initial server setup guide for Ubuntu 20.04.
      • A fully installed LAMP stack, including Apache, MySQL, and PHP, with firewall settings adjusted to allow HTTP traffic. Instructions for installing a LAMP stack can be found in Steps 1 through 3 in our guide How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 20.04. Note that Steps 4 through 6 of the LAMP guide are optional as they are for testing purposes and unnecessary for this tutorial.

      Step 1 — Installing Additional PHP Extensions

      When setting up our LAMP stack, a minimal set of extensions were required to get PHP to communicate with MySQL. OpenEMR requires two additional PHP extensions that you will need to install for it to work correctly. Use apt to update your server’s package list and install the php-xml and php-mbstring extensions:

      • sudo apt update
      • sudo apt install php-xml php-mbstring

      After both extensions have been installed, you’ll need to reload the Apache web server for changes to take effect:

      • sudo systemctl reload apache2

      When your webserver has reloaded, you should be ready to proceed to the next step.

      Step 2 — Create a MySQL Database for OpenEMR

      You will now create a database in MySQL for OpenEMR. First, log in to MySQL as the database root user:

      Once you are logged into MySQL as the database root user, create a database named openemr with the following command:

      Next, create a new user and assign them a password by replacing PASSWORD below with a strong password of your choosing:

      • CREATE USER 'openemr_user'@'localhost' IDENTIFIED BY 'PASSWORD';

      Next, grant the new user permission to the openemr database:

      • GRANT ALL PRIVILEGES ON openemr.* TO 'openemr_user'@'localhost';

      To enable these changes, enter the following command:

      Once you have flushed the privileges, you can now exit MySQL:

      You are now ready to proceed to the next step.

      Step 3 — Configuring PHP for OpenEMR

      In this step, you’ll make some changes to the php.ini file as recommended by OpenEMR documentation. If you followed all prerequisites within a fresh Ubuntu 20.04 server, the php.ini that applies to your Apache web server should be located at /etc/php/7.4/apache2/php.ini. In case you have a different PHP version, this path may be slightly different. Adjust as necessary and open the file with a text editor of your choice. Here, we’ll use nano:

      • sudo nano /etc/php/7.4/apache2/php.ini

      Once you are in the php.ini file, you will change the values of several options as recommended by OpenEMR. If you are using nano, you can search for these options using CTRL + W. If there is a semicolon ; in front of the option you are adjusting, make sure to delete it as a semicolon is used to comment out an option.

      Values for the following options should be changed:

      max_ input_vars

      This option limits the number of variables your server can use in a single function. OpenEMR requires this option to have the value 3000:

      /etc/php/7.4/apache2/php.ini

      max_input_vars = 3000
      

      max_execution_time

      This option limits the amount of time (in seconds) a script is allowed to run before being terminated. OpenEMR requires this option to have the value 60:

      /etc/php/7.4/apache2/php.ini

      max_execution_time = 60
      

      max_input_time

      This option limits the time in seconds a script is allowed to parse input data. OpenEMR requires this option to have the value -1, which means that the max_execution_time is used instead:

      /etc/php/7.4/apache2/php.ini

      max_input_time = -1
      

      post_max_size

      This option limits the size of a post, including uploaded files. OpenEMR requires this option to have a value of 30M:

      /etc/php/7.4/apache2/php.ini

      post_max_size = 30M
      

      memory_limit

      This option limits the amount of memory a script is allowed to allocate. OpenEMR requires this option to have a value of 256M:

      /etc/php/7.4/apache2/php.ini

      memory_limit = 256M
      

      mysqli.allow_local infile

      This option enables access to local files with LOAD DATA statements. OpenEMR requires this option to be turned on:

      /etc/php/7.4/apache2/php.ini

      mysqli.allow_local_infile = On
      

      When you are done adjusting the options, save and exit the file. If you are using nano, you can do that by pressing CTRL+X, then Y and ENTER to confirm.

      Next, you’ll need to reload the Apache web server for changes to take effect:

      • sudo systemctl reload apache2

      When your webserver has reloaded, you should be ready to proceed to the next step.

      Step 4 — Downloading OpenEMR

      In this step, you will download OpenEMR and prepare its files for installation. To start, download OpenEMR using the command wget, which retrieves files from the internet:

      • wget https://downloads.sourceforge.net/project/openemr/OpenEMR%20Current/5.0.2.1/openemr-5.0.2.tar.gz

      Next, extract the files using the tar command. The xvzf argument is used to tell the shell to extract the files (x), name the files extracted (v), uncompress the files with gzip (z), and use the file named in the command (f).

      When the files are done being extracted, you should have a directory named openemr-5.0.2. Change the directory name to openemr using the mv command:

      Next, move the directory to your HTML directory:

      • sudo mv openemr /var/www/html/

      You now need to change the ownership of the directory. Use the chown command and R flag to set the owner of all files and the group associated with openemr to www-data:

      • sudo chown -R www-data:www-data /var/www/html/openemr

      For the installation process, OpenEMR also requires you to change the permissions of the sqlconf.php file so that all users can read and write the file but cannot execute it. After the installation is finished, we’ll change these permissions once again to secure your setup. These permissions can be granted with the chmod command using 666 as argument:

      • sudo chmod 666 /var/www/html/openemr/sites/default/sqlconf.php

      After you change the permissions for the sqlconf.php file, you are ready to proceed to the next step.

      Step 4 — Installing OpenEMR

      In this step, you will install OpenEMR through a web browser and configure the Apache web server. Open a web browser and navigate to http://server_ip/openemr, replacing server_ip with the IP address of your server.

      If everything is working correctly, the browser should display the OpenEMR Setup page:

      OpenEMR setup page

      Click Proceed to Step 1. You should now be directed to a new OpenEMR Setup page for Step 1 of the installation process:

      OpenEMR setup page — Step 1

      On the new page, select I have already created a database as you already created an OpenEMR database in Step 3 of this tutorial. Then click Proceed to Step 2.

      Your browser should now display Step 2 of the OpenEMR Setup:

      OpenEMR setup page — Step 2
      In the Login and Password fields in the MySQL Server Details section, enter the username and password you picked in Step 3.

      In the OpenEMR Initial User Details section, create an Initial User Login Name and password.

      If you’d like to enable 2 Factor Authentication for the initial user, click the option Enable 2FA.

      Then click Create DB and User. It may take a few minutes for the next page to load. This page will verify the successful creation of the user and database:

      OpenEMR setup page — Step 3

      Click Proceed to Step 4 to continue. The next page will confirm the creation and configuration of the Access Control List:

      OpenEMR setup page — Step 4

      Click Proceed to Step 5 to continue. The next page will show you the required PHP configurations for OpenEMR. Your current configuration should match their requirements as you already adjusted them in Step 4.

      OpenEMR setup page — Step 5

      Click Proceed to Step 6 to continue. The next page will show you how to configure your Apache Web Server for OpenEMR:

      OpenEMR setup page — Step 6

      To configure the Apache Web Server for OpenEMR, create a new configuration file named openemr.conf. You can do that from your terminal using the nano editor:

      • sudo nano /etc/apache2/sites-available/openemr.conf

      Inside the file, paste the following directives:

      /etc/apache2/sites-available/openemr.conf

       <Directory "/var/www/html/openemr">
            AllowOverride FileInfo
            Require all granted
        </Directory>
        <Directory "/var/www/html/openemr/sites">
            AllowOverride None
        </Directory>
        <Directory "/var/www/html/openemr/sites/*/documents">
            Require all denied
        </Directory>
      

      Save and close the file. Then, restart Apache so that the changes are loaded:

      • sudo systemctl restart apache2

      Next, return to the browser and click Proceed to Select a Theme. On the next page, select a theme and click Proceed to Final Step:

      OpenEMR setup page — Step 7

      You should now be directed to the final setup page with confirmation details regarding your installation:

      OpenEMR setup page — Final Step

      This page will also give the user name and password details for your initial user. Make sure to have these details available before you leave the page. When you are ready, click the link at the bottom to start using OpenEMR.

      A window will pop up asking whether you want to register your installation. After making your choice, log in to OpenEMR with your initial user credentials. Once you are logged in, your browser should display the OpenEMR dashboard:

      OpenEMR dashboard

      Before going any further, make sure to change the file permissions as indicated in the next step.

      Step 5 — Changing FileSystem Permissions

      To improve the security of the system, OpenEMR advises users to change permissions of several files after installation. In this step, you will change the permissions of these files to further restrict read and write access.

      First, you will change the permissions of the sqlconf.php file whose permissions you modified in Step 3 to give the owner read and write access and group members only read access.

      These permissions can be granted with the chmod command using 644 as the argument:

      • sudo chmod 644 openemr/library/sqlconf.php

      Next, you will change the permissions of several other files to allow only the file owner to read and write the file.

      Grant these permissions by using the chmod command with the 600 argument on the following files:

      • sudo chmod 600 openemr/acl_setup.php
      • sudo chmod 600 openemr/acl_upgrade.php
      • sudo chmod 600 openemr/setup.php
      • sudo chmod 600 openemr/sql_upgrade.php
      • sudo chmod 600 openemr/gacl/setup.php
      • sudo chmod 600 openemr/ippf_upgrade.php

      Your files should now have more secure permission settings.

      In addition to changing file permissions, OpenEMR’s documentation strongly advises additional steps for securing each of OpenEMR’s components. These steps include deleting scripts in OpenEMR after installation, enforcing strong passwords, enabling HTTPS-only traffic, adjusting the firewall, and hardening Apache. Make sure to visit OpenEMR’s security documentation to learn more about how you can best protect your OpenEMR installation.

      Conclusion

      You have now installed OpenEMR on an Ubuntu 20.04 server using Apache, MySQL, and PHP. For instructions on pointing a domain name to your server, you can follow our guide How To Point to DigitalOcean Nameservers From Common Domain Registrars. For OpenEMR documentation, you can visit the OpenEMR Wiki Page.



      Source link