Instal dan konfigurasikan Linux, Apache, MySQL, dan PHP pada Instance ECS untuk menghosting aplikasi web.
Gunakan Terraform Explorer untuk membangun lingkungan LAMP secara otomatis pada Instance ECS.
Prasyarat
-
Alamat IP publik ditetapkan secara otomatis ke Instance ECS atau alamat IP elastis (EIP) dikaitkan dengan Instance ECS. Untuk petunjuk cara mengaktifkan bandwidth publik, lihat Aktifkan bandwidth publik.
-
Aturan inbound security group ditambahkan untuk membuka Port 22 dan 80 pada instans ECS.
-
Instans ECS memiliki memori minimal 4 GiB.
Menerapkan stack LAMP
Alibaba Cloud Linux 3 atau CentOS 8
-
Instal Apache.
# Instal server Apache. sudo dnf install -y httpd # Mulai server Apache secara otomatis saat startup instans. sudo systemctl enable httpd # Jalankan server Apache. sudo systemctl start httpd -
Instal MySQL.
CatatanPada Alibaba Cloud Linux 3, instal
compat-openssl10untuk kompatibilitas dengan library OpenSSL versi 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 # Instal MySQL. sudo dnf install -y mysql-server # Jalankan MySQL dan konfigurasikan agar MySQL otomatis berjalan saat startup sistem. sudo systemctl start mysqld sudo systemctl enable mysqld-
Kueri password root awal.
-
Pada Alibaba Cloud Linux 3:
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
Pada CentOS 8, pengguna root tidak memiliki password awal.
-
-
Tetapkan password root MySQL baru. Ganti
<oldpwd>dengan password awal dan<newpwd>dengan password baru. Pada CentOS 8, biarkan<oldpwd>kosong dan tekan Enter saat diminta.PentingPassword harus terdiri dari minimal delapan karakter dan mengandung setidaknya satu huruf kapital, satu huruf kecil, satu angka, dan satu karakter khusus.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instal PHP.
CatatanContoh ini menggunakan PHP 8.4. Untuk menginstal versi berbeda, ubah nama modul yang sesuai. Misalnya, gunakan
php:remi-8.1untuk PHP 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 # Instal PHP, PHP FastCGI Process Manager (PHP-FPM), dan ekstensi MySQL. sudo dnf install -y php php-fpm php-mysqlnd # Jalankan PHP-FPM dan konfigurasikan agar PHP-FPM otomatis berjalan saat startup sistem. sudo systemctl start php-fpm sudo systemctl enable php-fpm -
Verifikasi LAMP stack.
-
Kueri alamat listening
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.conf -
Buat file
/etc/httpd/conf.d/php-fpm.confdan konfigurasikan aturan pengalihanphp-fpm.PentingJika
PHP-FPMmendengarkan pada127.0.0.1:9000, atur SetHandler menjadiproxy: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> EOF -
Restart httpd.
sudo systemctl restart httpd -
Buat file
test.phpdi/var/www/html/. Ganti<username>dan<password>dengan kredensial MySQL Anda.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("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF -
Buka http://<Public-IP-Address-of-ECS-instance>/test.php di browser. Jika respons
successdikembalikan, LAMP stack berfungsi dengan benar.
-
Alibaba Cloud Linux 2 atau CentOS 7
-
Instal Apache.
# Instal server Apache. sudo yum install -y httpd # Mulai server Apache secara otomatis saat startup instans. sudo systemctl enable httpd # Jalankan server Apache. sudo systemctl start httpd -
Instal MySQL.
# Tambahkan repositori resmi MySQL. sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm # Instal MySQL. sudo yum install -y mysql-server # Jalankan MySQL dan konfigurasikan agar MySQL otomatis berjalan saat startup sistem. sudo systemctl start mysqld sudo systemctl enable mysqld-
Kueri password root awal.
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
Tetapkan password root MySQL baru. Ganti
<oldpwd>dengan password awal dan<newpwd>dengan password baru.PentingPassword harus terdiri dari minimal delapan karakter dan mengandung setidaknya satu huruf kapital, satu huruf kecil, satu angka, dan satu karakter khusus.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instal 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 # Instal PHP, PHP-FPM, dan ekstensi MySQL. sudo yum install -y php php-fpm php-mysqlnd # Jalankan PHP-FPM dan konfigurasikan agar PHP-FPM otomatis berjalan saat startup sistem. sudo systemctl start php-fpm sudo systemctl enable php-fpm -
Verifikasi LAMP stack.
-
Kueri alamat listening
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.conf-
Jika jalur file socket dikembalikan, PHP-FPM mendengarkan pada file socket tersebut.
-
Jika
127.0.0.1:9000dikembalikan, PHP-FPM mendengarkan pada port lokal 9000.
-
-
Buat file
/etc/httpd/conf.d/php-fpm.confdan konfigurasikan aturan pengalihanphp-fpm.PentingJika
PHP-FPMmendengarkan pada file socket, ubahproxy:fcgi://127.0.0.1:9000menjadiproxy:unix:<path>;. Ganti <path> dengan jalur file socket.sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> EOF -
Restart httpd.
sudo systemctl restart httpd -
Buat file
test.phpdi/var/www/html/. Ganti<username>dan<password>dengan kredensial MySQL Anda.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("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF -
Buka http://<Public-IP-Address-of-ECS-instance>/test.php di browser. Jika respons
successdikembalikan, LAMP stack berfungsi dengan benar.
-
Ubuntu 20.04 atau versi lebih baru
-
Instal Apache.
# Instal server Apache. sudo apt update -y && sudo apt install -y apache2 # Mulai server Apache secara otomatis saat startup instans. sudo systemctl enable apache2 # Jalankan server Apache. sudo systemctl start apache2 -
Instal server MySQL.
sudo apt update -y && sudo apt install -y mysql-server -
Ubah password dan plugin autentikasi
root. Ganti<newpwd>dengan password aktual.PentingSecara default, root menggunakan plugin
auth_socketdan tidak memiliki password. Tekan Enter saat diminta.sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;" -
Instal PHP.
CatatanGunakan
sudo apt search phpuntuk menampilkan daftar versi PHP yang tersedia. Untuk menginstal versi berbeda, ganti nomor versi yang sesuai. Misalnya, untuk PHP 8.1:sudo apt install -y php8.1 php8.1-fpm php8.1-mysql.# Instal 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 # Instal PHP 8.4 dan komponen terkait, termasuk PHP-FPM dan ekstensi MySQL. sudo apt install -y php8.4 php8.4-fpm php8.4-mysql -
Verifikasi LAMP stack.
-
Kueri alamat listening
PHP-FPM. Ganti<version>dengan versi PHP Anda, misalnya8.4.sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.conf-
Jika jalur file socket dikembalikan, PHP-FPM mendengarkan pada file socket tersebut.
-
Jika
127.0.0.1:9000dikembalikan, PHP-FPM mendengarkan pada port lokal 9000.
-
-
Buat file
/etc/apache2/conf-available/php-fpm.confdan konfigurasikan aturan pengalihan PHP. Ganti <listen> dengan alamat listening PHP-FPM.-
Jika PHP-FPM mendengarkan pada file socket, ganti
<listen>denganunix:<path>;dan<path>dengan jalur file socket.PentingMendengarkan pada file socket memerlukan izin baca dan tulis. Jalankan
sudo chmod 666 <path>untuk memberikan izin tersebut. Ganti <path> dengan jalur file socket. -
Jika PHP-FPM mendengarkan pada
127.0.0.1:9000, ganti<listen>denganfcgi://127.0.0.1:9000.
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOF -
-
Buat 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 agar Apache dapat meneruskan permintaan PHP ke PHP-FPM, lalu aktifkan konfigurasi PHP-FPM.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm -
Restart Apache.
sudo systemctl restart apache2 -
Buat file
test.phpdi/var/www/html/. Ganti<username>dan<password>dengan kredensial MySQL Anda.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("fail: " . $conn->connect_error); } echo "success\n"; ?> EOF -
Buka http://<Public-IP-Address-of-ECS-instance>/test.php di browser. Jika respons
successdikembalikan, LAMP stack berfungsi dengan benar.
-
FAQ
Mengapa saya tidak dapat mengakses halaman test.php?
Penyebab dan solusi yang mungkin:
Port 80 tidak dibuka di security group, firewall sistem diaktifkan, atau Port 80 digunakan oleh layanan lain.
Lihat Apa yang harus saya lakukan jika tidak dapat mengakses layanan yang di-deploy pada instans?
Bagaimana cara mengizinkan akses remote ke MySQL?
Buat akun non-root untuk akses remote. Lihat Deploy MySQL pada instans Linux.