LAMP adalah akronim dari empat komponen utamanya: sistem operasi Linux, server HTTP Apache, sistem manajemen database relasional MySQL, dan bahasa pemrograman PHP. Stack LAMP umumnya digunakan untuk membangun situs web. Dokumen ini menjelaskan cara memasang stack LAMP secara manual pada instance Elastic Compute Service (ECS).
Anda dapat mengunjungi Terraform Explorer untuk melihat dan menjalankan kode Terraform, yang memungkinkan Anda membangun lingkungan LAMP secara otomatis untuk instance ECS.
Prasyarat
Alamat IP publik telah ditetapkan ke instance ECS, atau alamat IP elastis (EIP) telah dikaitkan dengan instance tersebut. Untuk instruksi mengaktifkan bandwidth publik, lihat Aktifkan bandwidth publik.
Aturan masuk telah ditambahkan ke grup keamanan instance ECS untuk membuka port 22 dan 80. Untuk informasi lebih lanjut tentang menambahkan aturan grup keamanan, lihat Tambahkan aturan grup keamanan.
Instance ECS memiliki setidaknya 4 GiB memori.
Pasang Stack LAMP
Alibaba Cloud Linux 3 atau CentOS 8
Pasang Apache.
# Pasang server Apache. sudo dnf install -y httpd # Secara otomatis mulai server Apache saat instance dimulai. sudo systemctl enable httpd # Mulai server Apache. sudo systemctl start httpdPasang MySQL.
CatatanJika instance Anda menggunakan Alibaba Cloud Linux 3, Anda harus memasang
compat-openssl10, yang kompatibel dengan versi pustaka OpenSSL sebelumnya.sudo yum install -y compat-openssl10# Tambahkan repositori resmi MySQL. sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el8-1.noarch.rpm # Pasang MySQL. sudo dnf install -y mysql-server # Mulai MySQL dan konfigurasikan MySQL untuk secara otomatis mulai saat startup sistem. sudo systemctl start mysqld sudo systemctl enable mysqldKueri kata sandi awal default pengguna root.
Jika instance Anda menggunakan Alibaba Cloud Linux 3, jalankan perintah berikut:
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD)Jika instance Anda menggunakan CentOS 8, pengguna root tidak memiliki kata sandi awal.
Tentukan kata sandi baru untuk pengguna root MySQL. Dalam perintah berikut, ganti
<oldpwd>dengan kata sandi awal dan<newpwd>dengan kata sandi baru. Jika instance Anda menggunakan CentOS 8, ganti<oldpwd>dengan string kosong dan tekan tombol Enter untuk melewati ke baris berikutnya saat diminta memasukkan kata sandi.PentingKata sandi harus minimal delapan karakter, termasuk setidaknya satu huruf besar, satu huruf kecil, satu digit, dan satu karakter khusus.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
Pasang PHP.
CatatanContoh ini menggunakan PHP 8.4. Jika Anda memerlukan versi PHP lain, ubah nama modul sesuai dengan versi PHP yang ingin dipasang. Misalnya, jika Anda ingin memasang PHP 8.1, ubah nama modul menjadi
php:remi-8.1.# Tentukan repositori remi dan aktifkan modul php:remi-8.4. sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-8.rpm --nodeps sudo sed -i "s/\$releasever/8/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo sudo dnf install -y yum-utils && sudo dnf module enable -y php:remi-8.4 # Pasang PHP, PHP FastCGI Process Manager (PHP-FPM), dan ekstensi MySQL. sudo dnf install -y php php-fpm php-mysqlnd # Mulai PHP-FPM dan konfigurasikan PHP-FPM untuk secara otomatis mulai saat startup sistem. sudo systemctl start php-fpm sudo systemctl enable php-fpmVerifikasi stack LAMP.
Kueri alamat mendengarkan default dari
PHP-FPMdalam file konfigurasi.sudo grep 'listen =' /etc/php-fpm.d/www.confBuat file konfigurasi
/etc/httpd/conf.d/php-fpm.confdan konfigurasikan aturanphp-fpmdi dalamnya.PentingJika alamat mendengarkan
PHP-FPMadalah127.0.0.1:9000, tetapkan parameter SetHandler keproxy:fcgi://127.0.0.1:9000.sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/www.sock;" </FilesMatch> EOFMulai ulang httpd agar konfigurasi diterapkan.
sudo systemctl restart httpdBuat file
test.phpdi direktori/var/www/html/dan tambahkan konten berikut ke file tersebut. Ganti<username>dengan nama pengguna MySQL dan<password>dengan kata sandi yang sesuai.sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("gagal: " . $conn->connect_error); } echo "sukses\n"; ?> EOFMasukkan
http://<Public IP address of the ECS instance>/test.phpdi bilah alamat browser web di mesin lokal Anda. Jikasuksesdikembalikan, Anda terhubung ke MySQL menggunakan proxy PHP.
Alibaba Cloud Linux 2 atau CentOS 7
Pasang Apache.
# Pasang server Apache. sudo yum install -y httpd # Secara otomatis mulai server Apache saat instance dimulai. sudo systemctl enable httpd # Mulai server Apache. sudo systemctl start httpdPasang MySQL.
# Tambahkan repositori resmi MySQL. sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm # Pasang MySQL. sudo yum install -y mysql-server # Mulai MySQL dan konfigurasikan MySQL untuk secara otomatis mulai saat startup sistem. sudo systemctl start mysqld sudo systemctl enable mysqldKueri kata sandi awal default pengguna root.
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD)Tentukan kata sandi baru untuk pengguna root MySQL. Dalam perintah berikut, ganti
<oldpwd>dengan kata sandi awal dan<newpwd>dengan kata sandi baru.PentingKata sandi harus minimal delapan karakter, termasuk setidaknya satu huruf besar, satu huruf kecil, satu digit, dan satu karakter khusus.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
Pasang PHP.
# Tentukan repositori remi dan aktifkan modul remi-php83. sudo rpm -Uvh http://mirrors.cloud.aliyuncs.com/remi/enterprise/remi-release-7.rpm --nodeps sudo sed -i "s/\$releasever/7/g" /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi.repo sudo yum install -y yum-utils && sudo yum-config-manager --enable remi-php83 # Pasang PHP, PHP-FPM, dan ekstensi MySQL. sudo yum install -y php php-fpm php-mysqlnd # Mulai PHP-FPM dan konfigurasikan PHP-FPM untuk secara otomatis mulai saat startup sistem. sudo systemctl start php-fpm sudo systemctl enable php-fpmVerifikasi stack LAMP.
Kueri alamat mendengarkan default dari
PHP-FPMdalam file konfigurasi.sudo grep 'listen =' /etc/php-fpm.d/www.confJika alamat file socket dikembalikan, PHP-FPM mendengarkan file socket.
Jika
127.0.0.1:9000dikembalikan, PHP-FPM mendengarkan port lokal 9000.
Buat file konfigurasi
/etc/httpd/conf.d/php-fpm.confdan konfigurasikan aturanphp-fpmdi dalamnya.PentingJika alamat mendengarkan
PHP-FPMadalah alamat file socket, ubahproxy:fcgi://127.0.0.1:9000menjadiproxy:unix:<path>;. Ganti <path> dengan alamat file socket Anda.sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> EOFMulai ulang httpd agar konfigurasi diterapkan.
sudo systemctl restart httpdBuat file
test.phpdi direktori/var/www/html/dan tambahkan konten berikut ke file tersebut. Ganti<username>dengan nama pengguna MySQL dan<password>dengan kata sandi yang sesuai.sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("gagal: " . $conn->connect_error); } echo "sukses\n"; ?> EOFMasukkan
http://<Public IP address of the ECS instance>/test.phpdi bilah alamat browser web di mesin lokal Anda. Jikasuksesdikembalikan, Anda terhubung ke MySQL menggunakan proxy PHP.
Ubuntu 20.04 atau lebih baru
Pasang Apache.
# Pasang server Apache. sudo apt update -y && sudo apt install -y apache2 # Secara otomatis mulai server Apache saat instance dimulai. sudo systemctl enable apache2 # Mulai server Apache. sudo systemctl start apache2Perbarui daftar paket perangkat lunak dan pasang server MySQL.
sudo apt update -y && sudo apt install -y mysql-serverUbah kata sandi dan plug-in autentikasi identitas yang digunakan oleh pengguna
rootdari server MySQL. Ganti<newpwd>dalam perintah berikut dengan kata sandi aktual.PentingPlug-in autentikasi identitas default yang digunakan oleh pengguna root adalah
auth_socket. Setelah perintah dijalankan, Anda akan diminta untuk memasukkan kata sandi. Tekan tombol Enter untuk melewati ke baris berikutnya.sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;"Pasang PHP.
CatatanJalankan perintah
sudo apt search phpuntuk menanyakan semua versi PHP yang dapat dipasang. Jika Anda ingin memasang versi PHP yang berbeda, ganti nomor versi dalam perintah berikut dengan nomor versi aktual. Misalnya, jika Anda ingin memasang PHP 8.1, jalankan perintahsudo apt install -y php8.1 php8.1-fpm php8.1-mysql.# Pasang paket software-properties-common dan tambahkan repositori Personal Package Archive (PPA) ppa:ondrej/php. sudo apt update && sudo apt install -y software-properties-common && sudo add-apt-repository -y ppa:ondrej/php # Pasang PHP 8.4 dan komponen terkait, termasuk PHP-FPM dan ekstensi MySQL. sudo apt install -y php8.4 php8.4-fpm php8.4-mysqlVerifikasi stack LAMP.
Kueri alamat mendengarkan default dari
PHP-FPMdalam file konfigurasi. Ganti<version>dengan versi PHP Anda yang sebenarnya. Misalnya, jika Anda menggunakan PHP 8.4, ganti<version>dengan 8.4.sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.confJika alamat file socket dikembalikan, PHP-FPM mendengarkan file socket.
Jika
127.0.0.1:9000dikembalikan, PHP-FPM mendengarkan port lokal 9000.
Buat file konfigurasi
/etc/apache2/conf-available/php-fpm.confdan konfigurasikan aturan pengalihan PHP di dalamnya. Ganti <listen> dengan alamat mendengarkan sebenarnya dari PHP-FPM.Jika alamat file socket digunakan sebagai alamat mendengarkan PHP-FPM, ganti
<listen>denganunix:<path>;dan<path>dengan alamat file socket.PentingUntuk mendengarkan file socket, akun Anda harus memiliki izin baca dan tulis pada file socket. Anda dapat menjalankan perintah
sudo chmod 666 <path>untuk memberikan izin di atas. Ganti <path> dengan alamat sebenarnya dari file socket.Jika
127.0.0.1:9000digunakan sebagai alamat mendengarkan PHP-FPM, ganti<listen>denganfcgi://127.0.0.1:9000.
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOFBuat tautan simbolik untuk file konfigurasi.
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/Aktifkan modul proxy_fcgi dan setenvif untuk memungkinkan Apache meneruskan permintaan PHP ke PHP-FPM. Kemudian, aktifkan file konfigurasi PHP-FPM.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpmMulai ulang httpd agar konfigurasi diterapkan.
sudo systemctl restart apache2Buat file
test.phpdi direktori/var/www/html/dan tambahkan konten berikut ke file tersebut. Ganti<username>dengan nama pengguna MySQL dan<password>dengan kata sandi yang sesuai.sudo tee /var/www/html/test.php <<-'EOF' <?php $servername = "localhost"; $username = "<username>"; $password = "<password>"; $conn = new mysqli($servername, $username, $password); if ($conn->connect_error) { die("gagal: " . $conn->connect_error); } echo "sukses\n"; ?> EOFMasukkan
http://<Public IP address of the ECS instance>/test.phpdi bilah alamat browser web di mesin lokal Anda. Jikasuksesdikembalikan, Anda terhubung ke MySQL menggunakan proxy PHP.
FAQ
Mengapa saya tidak dapat mengakses halaman test.php menggunakan alamat IP publik instance ECS tempat halaman tersebut di-host?
Penyebab dan solusi yang mungkin:
Port 80 belum dibuka dalam grup keamanan instance ECS, firewall sistem diaktifkan pada instance ECS, atau port 80 digunakan oleh layanan lain.
Untuk informasi tentang cara menyelesaikan masalah berdasarkan penyebab di atas, lihat Apa yang harus saya lakukan jika saya tidak dapat mengakses layanan yang diterapkan pada instance?
Bagaimana cara mengizinkan akses jarak jauh ke MySQL?
Buat akun non-root dan izinkan akses jarak jauh ke MySQL menggunakan akun tersebut. Untuk informasi lebih lanjut, lihat Terapkan MySQL pada instance Linux.