Instal Apache di Ubuntu 18.04 Bionic Beaver Linux

Instal Apache di Ubuntu 18.04 Bionic Beaver Linux

Objektif

Pelajari cara menginstal apache di ubuntu 18.04, cara mengkonfigurasi host virtual, mengatur firewall dan menggunakan sertifikat SSL untuk koneksi yang aman

Persyaratan

  • Izin root

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root
    langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Perkenalan

Server web Apache tidak memerlukan presentasi besar: perangkat lunak open source, dirilis oleh Apache Foundation, adalah salah satu server web yang paling banyak digunakan di dunia. Dalam tutorial ini, kita akan melihat cara menginstalnya, menyesuaikan konfigurasi firewall untuk memungkinkan lalu lintas http dan https, dan mengatur host virtual di ubuntu 18.04.

Instalasi

Menginstal Server Web Apache di Ubuntu 18.04 Bionic Beaver adalah proses yang sangat mudah:

$ sudo apt-get update && apt-get install apache2

Skrip instalasi ubuntu akan mengurus memulai dan mengaktifkan Apache2 Layanan di Boot.

Pengaturan Firewall

Untuk mengakses konten default yang dilayani oleh Apache, pada mesin yang sama, server terus berjalan, kita hanya perlu menyalakan browser web dan menavigasi localhost di bar alamat. Jika semua diatur dengan benar, halaman harus menyambut kami dengan “itu berfungsi!" pesan:

Halaman Selamat Datang Apache

Jika firewall diaktifkan pada sistem kami (seperti seharusnya), untuk membuat konten dapat diakses dari luar mesin kami, kami perlu mengizinkan lalu lintas yang masuk di port 80. Perintah yang akan dijalankan tergantung pada manajer firewall yang sedang digunakan. Misalnya, saat menggunakan UFW (Default Ubuntu), kita harus menjalankan:

$ sudo ufw mengizinkan http

Demikian pula, jika menggunakan Firewalld, kita bisa menjalankan:

$ sudo firewall-cmd --permanent --add-service = http && firewall-cmd --reload

Perhatikan bahwa perintah di atas akan berpengaruh pada zona firewalld default. Jika kami ingin beroperasi pada yang lain, kami harus menentukannya dengan --daerah pilihan.



Mengkonfigurasi Host Virtual

Server web Apache memiliki kemampuan untuk menjalankan lebih dari satu situs web di mesin yang sama. Setiap situs (host virtual dalam terminologi apache) yang harus dilayani harus memiliki konfigurasi sendiri. Host virtual dapat berupa IP atau bernama.

Dalam tutorial ini kami akan fokus pada tipe kedua, karena lebih mudah diatur dan tidak memerlukan beberapa alamat IP (host virtual berbasis nama memungkinkan banyak situs web untuk berbagi alamat yang sama).

Host virtual default

Di Ubuntu, host virtual default didefinisikan ke dalam /etc/apache2/situs yang tersedia direktori, di dalam 000-default.conf mengajukan. Mari kita lihat:

 [… .] Serveradmin webmaster@localhost documentroot/var/www/html [… .] ErrorLog $ apache_log_dir/error.Log CustomLog $ APACHE_LOG_DIR/Access.log gabungan [… .]  
Menyalin

Itu Petunjuk pada baris 1 digunakan untuk mengelompokkan pengaturan yang digunakan oleh Apache untuk host virtual tertentu. Hal pertama yang kami lihat didefinisikan di dalamnya, adalah *: 80 petunjuk. Ini menunjukkan alamat IP dan port yang digunakan oleh host virtual.

Beberapa host virtual dapat didefinisikan dalam file yang sama atau dengan mengikuti skema “One Virtual Host Definition Per File”. Dalam kedua kasus, definisi pertama dianggap sebagai default, jika tidak ada host virtual lain yang dicocokkan dengan permintaan klien.

Itu Serveradmin Petunjuk pada baris 3is opsional, dan digunakan untuk menentukan alamat kontak yang akan ditampilkan oleh server web jika terjadi pesan kesalahan. Biasanya kami ingin memberikan alamat email yang valid sebagai argumen arahan ini, karena server web akan digunakan Mailto: di atasnya, untuk membuat menghubungi administrator lebih mudah.

Root document pada baris 4is wajib dan sangat penting untuk konfigurasi host virtual. Argumen untuk instruksi ini harus merupakan jalur sistem file yang valid. Direktori yang disediakan akan dianggap sebagai direktori root dari host virtual, dan tidak boleh berisi trailing '/'. Dalam hal ini, direktori root dokumen itu /var/www/html. Jika kita melihat isinya, kita melihat bahwa itu berisi indeks.html Halaman digunakan sebagai halaman sambutan server yang kami lihat sebelumnya.

Dua instruksi terakhir pada baris 8 - 9 disediakan di virtualhost ini adalah Catatan eror Dan CustomLog. Dengan menggunakan yang pertama, kami mengatur file tempat server akan mencatat kesalahan yang terjadi. Yang kedua, sebaliknya digunakan untuk mencatat permintaan yang dikirim ke server dalam format yang ditentukan (Anda dapat menggunakan ini sebagai referensi untuk pengetahuan mendalam tentang format log).



Buat host virtual baru

Kami melihat bagaimana virtualhost default didefinisikan; Sekarang misalkan kita ingin melayani situs web lain menggunakan server web kami: kita harus mendefinisikan host virtual baru untuk dapat mencapai tujuan kami.

Seperti yang dikatakan di atas, file host virtual harus didefinisikan di dalam /etc/apache2/situs yang tersedia Direktori (setidaknya dalam distribusi berbasis Debian): Oleh karena itu kami akan membuat file kami di sana. Sebelum melakukan itu, kami ingin membuat direktori untuk digunakan sebagai kami root dokumen, dan membuat halaman dasar yang akan ditampilkan saat kami mencapai situs:

$ sudo mkdir/var/www/contoh && echo "selamat datang!">/var/www/contoh/indeks.html 

Kami sekarang dapat melanjutkan mengonfigurasi host virtual kami:

 DocumentRoot/var/www/contoh servername www.contoh.lokal 

Ini adalah konfigurasi minimal yang diperlukan untuk menjalankan host virtual. Di sini kita dapat melihat arahan baru, Nama server: Inilah yang mendefinisikan host virtual kami. Mari simpan file ini sebagai contoh.conf. Untuk mengaktifkan virtualhost kami, kami menggunakan a2ensite Perintah: Yang dilakukan oleh semua perintah ini adalah membuat symlink file ke /etc/apache2/diaktifkan situs direktori:

$ sudo a2ensite contoh.conf

Setelah itu, kita harus memuat ulang konfigurasi server:

$ sudo systemctl Reload Apache2.melayani

Kami mendefinisikan virtualhost kami, namun karena ini adalah tes dan kami tidak memiliki a Entri DNS terkait dengannya, untuk memverifikasi bahwa konfigurasi berfungsi, kita harus menambahkan entri di /etc/host file mesin yang kami coba hubungi situs.

$ sudo echo "192.168.122.241 www.contoh.lokal ">> /etc /host

Tanpa baris ini, (dan tanpa entri DNS) tidak mungkin untuk mengaitkan alamat server dengan nama virtualhost kami, dan menggunakan IP server secara langsung, sebaliknya akan "memicu" host virtual default default.

Dari mesin klien, jika kita sekarang menavigasi ke “www.contoh.lokal ”kita harus melihat halaman minimal yang kita atur di atas:

Contoh indeks virtualhost

Menyiapkan SSL

SSL, kependekan dari Lapisan Soket Aman Ini adalah teknologi yang memungkinkan kami mengenkripsi data yang terlibat dalam hubungan antara klien dan server. Saat sertifikat SSL digunakan, https (Hyper Text Transfer Protocol Secure) Menggantikan HTTP di URL.

Sertifikat SSL dikeluarkan oleh otoritas sertifikat, yang, sebagai pihak ketiga yang dapat dipercaya, memastikan bahwa seseorang benar -benar yang mengaku berada di internet. Sertifikat SSL bisa sangat mahal, namun ada dua alternatif utama untuk mendapatkan sertifikat: buat sertifikat yang ditandatangani sendiri atau mendapatkan satu dari Mari Enkripsi.

Menghasilkan sertifikat SSL yang ditandatangani sendiri

Meskipun menghasilkan sertifikat yang ditandatangani sendiri, itu bukan tugas yang sulit dan dapat berguna ketika Anda hanya ingin mencapai enkripsi, itu tidak dapat digunakan dalam konteks di mana sertifikat itu sendiri harus ditandatangani oleh pihak ketiga yang tepercaya. Kami dapat menghasilkan sertifikat yang ditandatangani sendiri dengan menggunakan openssl kegunaan:

$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa: 2048 \ -nodes \ -keyout contoh.Kunci \ -out -CERT -CERT.PEM 

Mari kita lihat apa yang dilakukan perintah ini. Opsi pertama yang kami temui, -x509, memodifikasi perilaku perintah sehingga menghasilkan sertifikat yang ditandatangani sendiri alih-alih permintaan sertifikat.

Dengan -hari -hari, Kami mengatur validitas, dalam beberapa hari, untuk sertifikat. Opsi yang disediakan berikutnya adalah -Newkey: dengan itu kami membuat kunci baru, dalam hal ini RSA kunci, dengan ukuran 2048 bit. Untuk kasus uji kami, kami tidak ingin mengenkripsi file kunci pribadi, jadi kami gunakan -node. Jika opsi ini dihilangkan, file di mana kunci disimpan akan dilindungi oleh kata sandi, yang akan kami diminta untuk menyisipkan setiap kali server web dihidupkan kembali.

Dengan -keyout Dan -keluar Kami menentukan file untuk menulis kunci yang dihasilkan dan sertifikat, masing -masing. Saat meluncurkan perintah, kami akan diminta untuk menjawab beberapa pertanyaan, dan kemudian kunci dan sertifikat akan dihasilkan.

Anda akan diminta untuk memasukkan informasi yang akan dimasukkan ke dalam permintaan sertifikat Anda. Apa yang akan Anda masukkan adalah apa yang disebut nama terhormat atau DN. Ada beberapa bidang tetapi Anda dapat meninggalkan beberapa bidang untuk beberapa bidang akan ada nilai default, jika Anda masuk '.', Lapangan akan dibiarkan kosong. ----- Nama Negara (2 Kode Surat) [AU]: NAMA NEGARA ATAU PROVINSI IT (Nama Lengkap) [Some-State]: Nama Lokalitas (mis. Kota) []: Nama Organisasi Milan (mis. Perusahaan) [Internet Widgits Pty Ltd]] : Damage Inc. Nama Unit Organisasi (mis. Bagian) []: Nama Umum (E.G. server fqdn atau nama Anda) []: www.contoh.Alamat email lokal []: 

Langkah selanjutnya adalah menyalin kunci dan sertifikat kami /etc/ssl/pribadi Dan /etc/ssl/ssl-certs Direktori masing -masing:

$ sudo MV Contoh-CERT.PEM/etc/ssl/sertifikat

Sertifikatnya bersifat publik, jadi tidak membutuhkan izin khusus. Sekarang, kuncinya:

Contoh $ sudo MV.kunci/etc/ssl/pribadi

Penting bagi kami untuk menyesuaikan izin file utama. Jika kita memeriksa /etc/ssl/pribadi folder, kita dapat melihat bahwa itu milik akar pengguna dan SSL-CERT grup, dan sudah 710 Sebagai izin, yang berarti bahwa sementara pemilik memiliki hak istimewa penuh di atasnya, pemilik grup hanya dapat mengaksesnya dan mendaftar isinya, dan tidak ada izin yang diizinkan untuk orang lain:

$ ls -ld/etc/ssl/private drwx-x --- 2 root ssl-cert 4096 Mar 16 11:57/etc/ssl/private 

Mari kita ubah izin file utama kami sesuai, memberikan izin membaca dan menulis kepada pemilik, dan hak istimewa baca untuk grup:

$ sudo chown root: ssl-cert/etc/ssl/private/example.kunci $ sudo chmod 640/etc/ssl/private/example.kunci 

Untuk menggunakan sertifikat kami, kami sekarang harus mengaktifkan modul SSL Apache. Kami melakukannya dengan menggunakan A2Enmod memerintah:

$ sudo a2enmod ssl

Kami hampir sampai. Sekarang saatnya memodifikasi host virtual kami dan mengaturnya dengan cara ini:

 DocumentRoot/var/www/contoh servername www.contoh.Lokal # Mengaktifkan mesin SSL SSLEngine di SSLCertificateFile/etc/ssl/cert/contoh-cert.PEM SSLCERTIFIKATEKEYFILE/etc/ssl/private/example.kunci 
Menyalin

Pelabuhan 443 On Line 1is Port yang digunakan untuk https (sebagai pengganti port 80 yang digunakan untuk http). Kami juga menambahkan Sslengine aktif Instruksi pada baris 6, yang cukup jelas.

Akhirnya di baris 8 - 9 kami telah menentukan jalur untuk sertifikat dan file kunci kami, menggunakan SslcertificateFile Dan SslcertificateKeyFile instruksi.

Sekarang, ikuti instuksi untuk membuka port firewall yang digunakan di awal tutorial, tetapi kali ini untuk mengizinkan https melayani:

$ sudo ufw memungkinkan https

Akhirnya, Muat Ulang Konfigurasi Apache:

$ sudo systemctl Reload Apache2

Semua selesai. Sekarang, jika dari klien, kami menavigasi https: // www.contoh.lokal Alamat, kita harus melihat server web mengingatkan kita bahwa sertifikat yang digunakan tidak aman (karena itu dipercaya sendiri). Ini, namun tanda pengaturan kami berfungsi dan lalu lintas antara klien dan server akan dienkripsi (Anda perlu menambahkan pengecualian agar sertifikat menggunakannya).

Peringatan Browser SSL

Menyiapkan Mari Enkripsi

Alternatif untuk sertifikat komersial dan mandiri yang diwakili oleh "ayo enkripsi". Mari Enkripsi adalah otoritas sertifikat gratis, otomatis, dan terbuka; Tujuannya adalah memungkinkan untuk secara otomatis mendapatkan sertifikat yang dipercaya oleh browser tanpa intervensi manusia.

Ini dapat dicapai dengan menggunakan PUNCAK protokol dan a Agen Manajemen Sertifikat yang berjalan di server.

Untuk mendapatkan sertifikat, kami harus menunjukkan bahwa kami memiliki kendali atas domain yang ingin kami gunakan sertifikat. Jika kami tidak memiliki akses shell di server, kami harus menghubungi penyedia layanan kami untuk mengaktifkan Enkripsi Mari atas nama kami, tetapi mungkin ada bagian khusus di Panel Konfigurasi Layanan.

Jika, sebaliknya, kami memiliki akses shell ke server yang dimaksud, pertama -tama kami harus menginstal certbot Klien ACME. Menginstal Certbot di Ubuntu 18.04 Hanya masalah berlari:

$ sudo apt-get update && apt-get install certbot python-certbot-apache

Paket certbot dilengkapi dengan a Timer SystemD unit yang akan menjalankan certbot dua kali sehari untuk menjaga sertifikat tetap up. Memperoleh sertifikat cukup sederhana:

$ sudo certbot --apache -m -d 

Jelas agar ini berfungsi, domain harus ditunjuk dengan benar ke IP server kami yang dapat diakses secara publik. CertBot akan meminta Anda untuk beberapa pertanyaan untuk mengubah konfigurasi, dan jika semuanya berjalan dengan baik, sertifikat dan kunci akan disimpan ke dalam /etc/letsencrypt/live/ direktori. Cukup tweak file host virtual Anda untuk menunjuk pada itu dan Anda sudah selesai!

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Instal Arch Linux di VMware Workstation
  • Ubuntu 20.04: WordPress dengan instalasi nginx
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Aktifkan/Nonaktifkan Firewall di Manjaro Linux
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Ubuntu 20.04 WordPress dengan Instalasi Apache
  • Mengatur server FTP di Linux
  • Cara mengatur vsftpd di debian