Instal dan konfigurasikan Linux, Apache, MySQL, dan PHP pada sebuah Instance ECS untuk menghosting aplikasi web.
Anda dapat menggunakan Terraform Explorer untuk membangun lingkungan LAMP secara otomatis.
Prasyarat
-
Sebuah Alamat IP publik secara otomatis ditetapkan ke Instance ECS. Atau, sebuah elastic IP address (EIP) dikaitkan dengan Instance ECS. Untuk petunjuk cara mengaktifkan bandwidth publik, lihat Enable public bandwidth.
-
Aturan inbound security group rules mengizinkan lalu lintas pada Port 22 dan 80 untuk instance ECS.
-
Instance ECS memiliki memori minimal 4 GiB.
Deploy LAMP stack
Alibaba Cloud Linux 3 atau CentOS 8
-
Instal Apache.
# Install the Apache server. sudo dnf install -y httpd # Automatically start the Apache server on instance startup. sudo systemctl enable httpd # Start the Apache server. 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# Add an official MySQL repository. sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el8-1.noarch.rpm # Install MySQL. sudo dnf install -y mysql-server # Start MySQL and configure MySQL to automatically start on system startup. 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 Anda. Pada CentOS 8, biarkan<oldpwd>kosong.PentingPassword harus terdiri dari minimal 8 karakter dan mencakup huruf kapital, huruf kecil, angka, serta karakter khusus.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instal PHP.
CatatanContoh ini menggunakan PHP 8.4. Untuk versi lain, ubah nama modulnya (misalnya,
php:remi-8.1untuk PHP 8.1).# Specify the remi repository and enable the php:remi-8.4 module. 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 # Install PHP, PHP FastCGI Process Manager (PHP-FPM), and the MySQL extension. sudo dnf install -y php php-fpm php-mysqlnd # Start PHP-FPM and configure PHP-FPM to automatically start on system startup. 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
/etc/httpd/conf.d/php-fpm.confdengan aturan pengalihanphp-fpm.PentingJika
PHP-FPMmendengarkan pada127.0.0.1:9000, setel 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
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.phpdi browser. Jika munculsuccess, berarti LAMP stack berfungsi dengan baik.
-
Alibaba Cloud Linux 2 atau CentOS 7
-
Instal Apache.
# Install the Apache server. sudo yum install -y httpd # Automatically start the Apache server on instance startup. sudo systemctl enable httpd # Start the Apache server. sudo systemctl start httpd -
Instal MySQL.
# Add an official MySQL repository. sudo rpm -Uvh https://repo.mysql.com/mysql84-community-release-el7-1.noarch.rpm # Install MySQL. sudo yum install -y mysql-server # Start MySQL and configure MySQL to automatically start on system startup. 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 Anda.PentingPassword harus terdiri dari minimal 8 karakter dan mencakup huruf kapital, huruf kecil, angka, serta karakter khusus.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instal PHP.
# Specify the remi repository and enable the remi-php83 module. 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 # Install PHP, PHP-FPM, and the MySQL extension. sudo yum install -y php php-fpm php-mysqlnd # Start PHP-FPM and configure PHP-FPM to automatically start on system startup. 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 dikembalikan path file socket, PHP-FPM mendengarkan pada file socket tersebut.
-
Jika dikembalikan
127.0.0.1:9000, PHP-FPM mendengarkan pada port lokal 9000.
-
-
Buat
/etc/httpd/conf.d/php-fpm.confdengan aturan pengalihanphp-fpm.PentingJika
PHP-FPMmendengarkan pada file socket, ubahproxy:fcgi://127.0.0.1:9000menjadiproxy:unix:<path>;. Ganti <path> dengan path 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
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.phpdi browser. Jika munculsuccess, berarti LAMP stack berfungsi dengan baik.
-
Ubuntu 20.04 atau versi lebih baru
-
Instal Apache.
# Install the Apache server. sudo apt update -y && sudo apt install -y apache2 # Automatically start the Apache server on instance startup. sudo systemctl enable apache2 # Start the Apache server. sudo systemctl start apache2 -
Instal server MySQL.
sudo apt update -y && sudo apt install -y mysql-server -
Tetapkan password dan plugin autentikasi untuk
root. Ganti<newpwd>dengan password Anda.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.
CatatanJalankan
sudo apt search phpuntuk menampilkan daftar versi PHP yang tersedia. Misalnya, untuk PHP 8.1:sudo apt install -y php8.1 php8.1-fpm php8.1-mysql.# Install the software-properties-common package and add the ppa:ondrej/php Personal Package Archive (PPA) repository. sudo apt update && sudo apt install -y software-properties-common && sudo add-apt-repository -y ppa:ondrej/php # Install PHP 8.4 and the related components, including PHP-FPM and the MySQL extension. 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 dikembalikan path file socket, PHP-FPM mendengarkan pada file socket tersebut.
-
Jika dikembalikan
127.0.0.1:9000, PHP-FPM mendengarkan pada port lokal 9000.
-
-
Buat
/etc/apache2/conf-available/php-fpm.confdengan aturan pengalihan PHP. Ganti <listen> dengan alamat listening PHP-FPM.-
Jika PHP-FPM mendengarkan pada file socket, ganti
<listen>denganunix:<path>;dan<path>dengan path file socket.PentingFile socket memerlukan izin baca/tulis. Jalankan
sudo chmod 666 <path>untuk memberikan izin tersebut. -
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 mengaktifkan konfigurasi.
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/ -
Aktifkan modul proxy_fcgi dan setenvif, lalu aktifkan konfigurasi PHP-FPM.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm -
Restart Apache.
sudo systemctl restart apache2 -
Buat
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.phpdi browser. Jika munculsuccess, berarti LAMP stack berfungsi dengan baik.
-
FAQ
Mengapa saya tidak bisa mengakses halaman test.php?
Kemungkinan penyebab:
Port 80 mungkin belum dibuka di security group, firewall sistem mungkin diaktifkan, atau Port 80 sedang digunakan oleh layanan lain.
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. Deploy MySQL pada instans Linux.