Instale y configure Linux, Apache, MySQL y PHP en una instancia ECS para alojar aplicaciones web.
Puede utilizar Terraform Explorer para construir automáticamente un entorno LAMP.
Requisitos previos
La instancia ECS tiene asignada automáticamente una dirección IP pública. Como alternativa, puede asociar una dirección IP elástica (EIP) a la instancia ECS. Para obtener instrucciones sobre cómo habilitar el ancho de banda público, consulte Enable public bandwidth.
Las reglas de entrada del security group rules permiten el tráfico en los puertos 22 y 80 para la instancia ECS.
La instancia ECS cuenta con como mínimo 4 GiB de memoria.
Desplegar una pila LAMP
Alibaba Cloud Linux 3 o CentOS 8
-
Instale 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 -
Instale MySQL.
NotaEn Alibaba Cloud Linux 3, instale
compat-openssl10para garantizar la compatibilidad con versiones anteriores de las bibliotecas OpenSSL.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-
Consulte la contraseña inicial de root.
-
En Alibaba Cloud Linux 3:
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) En CentOS 8, el usuario root no tiene contraseña inicial.
-
-
Establezca una nueva contraseña para root en MySQL. Reemplace
<oldpwd>con la contraseña inicial y<newpwd>con su nueva contraseña. En CentOS 8, deje<oldpwd>vacío.ImportanteLa contraseña debe tener como mínimo 8 caracteres e incluir mayúsculas, minúsculas, dígitos y caracteres especiales.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instale PHP.
NotaEste ejemplo utiliza PHP 8.4. Para otras versiones, cambie el nombre del módulo (por ejemplo,
php:remi-8.1para 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 -
Compruebe la pila LAMP.
-
Consulte la dirección de escucha de
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.conf -
Cree el archivo
/etc/httpd/conf.d/php-fpm.confcon las reglas de reenvío dephp-fpm.ImportanteSi
PHP-FPMescucha en127.0.0.1:9000, establezca SetHandler comoproxy: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 -
Reinicie httpd.
sudo systemctl restart httpd -
Cree el archivo
test.phpen/var/www/html/. Reemplace<username>y<password>con sus credenciales de MySQL.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 Abra
http://<Public-IP-Address-of-ECS-instance>/test.phpen un navegador. Si aparecesuccess, la pila LAMP funciona correctamente.
-
Alibaba Cloud Linux 2 o CentOS 7
-
Instale 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 -
Instale 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-
Consulte la contraseña inicial de root.
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
Establezca una nueva contraseña para root en MySQL. Reemplace
<oldpwd>con la contraseña inicial y<newpwd>con su nueva contraseña.ImportanteLa contraseña debe tener como mínimo 8 caracteres e incluir mayúsculas, minúsculas, dígitos y caracteres especiales.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instale 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 -
Compruebe la pila LAMP.
-
Consulte la dirección de escucha de
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.confSi se devuelve una ruta de archivo de socket, PHP-FPM escucha en dicho archivo.
Si se devuelve
127.0.0.1:9000, PHP-FPM escucha en el puerto local 9000.
-
Cree el archivo
/etc/httpd/conf.d/php-fpm.confcon las reglas de reenvío dephp-fpm.ImportanteSi
PHP-FPMescucha en un archivo de socket, cambieproxy:fcgi://127.0.0.1:9000porproxy:unix:<path>;. Reemplace <path> con la ruta del archivo de socket.sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> EOF -
Reinicie httpd.
sudo systemctl restart httpd -
Cree el archivo
test.phpen/var/www/html/. Reemplace<username>y<password>con sus credenciales de MySQL.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 Abra
http://<Public-IP-Address-of-ECS-instance>/test.phpen un navegador. Si aparecesuccess, la pila LAMP funciona correctamente.
-
Ubuntu 20.04 o posterior
-
Instale 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 -
Instale el servidor MySQL.
sudo apt update -y && sudo apt install -y mysql-server -
Configure la contraseña de
rooty el plugin de autenticación. Reemplace<newpwd>con su contraseña.ImportanteDe forma predeterminada, root utiliza el plugin
auth_sockety no tiene contraseña. Presione Enter cuando se le solicite.sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;" -
Instale PHP.
NotaEjecute
sudo apt search phppara listar las versiones disponibles de PHP. Por ejemplo, para 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 -
Compruebe la pila LAMP.
-
Consulte la dirección de escucha de
PHP-FPM. Reemplace<version>con su versión de PHP, como8.4.sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.confSi se devuelve una ruta de archivo de socket, PHP-FPM escucha en dicho archivo.
Si se devuelve
127.0.0.1:9000, PHP-FPM escucha en el puerto local 9000.
-
Cree el archivo
/etc/apache2/conf-available/php-fpm.confcon las reglas de reenvío de PHP. Reemplace <listen> con la dirección de escucha de PHP-FPM.-
Si PHP-FPM escucha en un archivo de socket, reemplace
<listen>conunix:<path>;y<path>con la ruta del archivo de socket.ImportanteLos archivos de socket requieren permisos de lectura y escritura. Ejecute
sudo chmod 666 <path>para otorgarlos. Si PHP-FPM escucha en
127.0.0.1:9000, reemplace<listen>confcgi://127.0.0.1:9000.
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOF -
-
Cree un enlace simbólico para habilitar la configuración.
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/ -
Habilite los módulos proxy_fcgi y setenvif, y luego active la configuración de PHP-FPM.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm -
Reinicie Apache.
sudo systemctl restart apache2 -
Cree el archivo
test.phpen/var/www/html/. Reemplace<username>y<password>con sus credenciales de MySQL.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 Abra
http://<Public-IP-Address-of-ECS-instance>/test.phpen un navegador. Si aparecesuccess, la pila LAMP funciona correctamente.
-
Preguntas frecuentes
¿Por qué no puedo acceder a la página test.php?
Posibles causas:
Es posible que el puerto 80 no esté abierto en el security group, que el firewall del sistema esté habilitado o que otro servicio esté ocupando el puerto 80.
What do I do if I cannot access a service deployed on an instance?
¿Cómo permito el acceso remoto a MySQL?
Cree una cuenta que no sea root para el acceso remoto. Deploy MySQL on a Linux instance.