Instale e configure Linux, Apache, MySQL e PHP em uma instância ECS para hospedar aplicações web.
Use o Terraform Explorer para criar automaticamente um ambiente LAMP.
Pré-requisitos
A instância ECS tem um endereço IP público atribuído automaticamente ou um Elastic IP Address (EIP) associado. Para obter instruções sobre como ativar a largura de banda pública, consulte Enable public bandwidth.
As security group rules de entrada permitem tráfego nas portas 22 e 80 para a instância ECS.
A instância ECS tem pelo menos 4 GiB de memória.
Implantar a pilha LAMP
Alibaba Cloud Linux 3 ou CentOS 8
-
Instale o 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 o MySQL.
NotaNo Alibaba Cloud Linux 3, instale o pacote
compat-openssl10para garantir compatibilidade com bibliotecas OpenSSL anteriores.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-
Obtenha a senha inicial do usuário root.
-
No Alibaba Cloud Linux 3:
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) No CentOS 8, o usuário root não tem senha inicial.
-
-
Defina uma nova senha para o usuário root do MySQL. Substitua
<oldpwd>pela senha inicial e<newpwd>pela nova senha. No CentOS 8, deixe<oldpwd>vazio.ImportanteA senha deve ter no mínimo 8 caracteres e incluir letras maiúsculas, minúsculas, dígitos e caracteres especiais.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instale o PHP.
NotaEste exemplo usa o PHP 8.4. Para outras versões, altere o nome do módulo (por exemplo,
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 -
Verifique a pilha LAMP.
-
Consulte o endereço de escuta do
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.conf -
Crie o arquivo
/etc/httpd/conf.d/php-fpm.confcom as regras de encaminhamento dophp-fpm.ImportanteSe o
PHP-FPMestiver escutando em127.0.0.1:9000, defina o 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 o httpd.
sudo systemctl restart httpd -
Crie o arquivo
test.phpem/var/www/html/. Substitua<username>e<password>pelas suas credenciais do 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.phpem um navegador. Sesuccessfor exibido, a pilha LAMP está funcionando.
-
Alibaba Cloud Linux 2 ou CentOS 7
-
Instale o 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 o 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-
Obtenha a senha inicial do usuário root.
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
Defina uma nova senha para o usuário root do MySQL. Substitua
<oldpwd>pela senha inicial e<newpwd>pela nova senha.ImportanteA senha deve ter no mínimo 8 caracteres e incluir letras maiúsculas, minúsculas, dígitos e caracteres especiais.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Instale o 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 -
Verifique a pilha LAMP.
-
Consulte o endereço de escuta do
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.confSe o retorno for um caminho de arquivo de socket, o PHP-FPM escuta nesse arquivo.
Se o retorno for
127.0.0.1:9000, o PHP-FPM escuta na porta local 9000.
-
Crie o arquivo
/etc/httpd/conf.d/php-fpm.confcom as regras de encaminhamento dophp-fpm.ImportanteSe o
PHP-FPMescutar em um arquivo de socket, altereproxy:fcgi://127.0.0.1:9000paraproxy:unix:<path>;. Substitua <path> pelo caminho do arquivo 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 o httpd.
sudo systemctl restart httpd -
Crie o arquivo
test.phpem/var/www/html/. Substitua<username>e<password>pelas suas credenciais do 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.phpem um navegador. Sesuccessfor exibido, a pilha LAMP está funcionando.
-
Ubuntu 20.04 ou posterior
-
Instale o 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 o servidor MySQL.
sudo apt update -y && sudo apt install -y mysql-server -
Defina a senha do usuário
roote o plugin de autenticação. Substitua<newpwd>pela sua senha.ImportantePor padrão, o usuário root usa o plugin
auth_sockete não tem senha. Pressione Enter quando solicitado.sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;" -
Instale o PHP.
NotaExecute
sudo apt search phppara listar as versões disponíveis do PHP. Por exemplo, para o 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 -
Verifique a pilha LAMP.
-
Consulte o endereço de escuta do
PHP-FPM. Substitua<version>pela sua versão do PHP, como8.4.sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.confSe o retorno for um caminho de arquivo de socket, o PHP-FPM escuta nesse arquivo.
Se o retorno for
127.0.0.1:9000, o PHP-FPM escuta na porta local 9000.
-
Crie o arquivo
/etc/apache2/conf-available/php-fpm.confcom as regras de encaminhamento do PHP. Substitua <listen> pelo endereço de escuta do PHP-FPM.-
Se o PHP-FPM escutar em um arquivo de socket, substitua
<listen>porunix:<path>;e<path>pelo caminho do arquivo de socket.ImportanteArquivos de socket exigem permissões de leitura e escrita. Execute
sudo chmod 666 <path>para concedê-las. Se o PHP-FPM escutar em
127.0.0.1:9000, substitua<listen>porfcgi://127.0.0.1:9000.
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOF -
-
Crie um link simbólico para ativar a configuração.
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/ -
Ative os módulos proxy_fcgi e setenvif e, em seguida, ative a configuração do PHP-FPM.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm -
Reinicie o Apache.
sudo systemctl restart apache2 -
Crie o arquivo
test.phpem/var/www/html/. Substitua<username>e<password>pelas suas credenciais do 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.phpem um navegador. Sesuccessfor exibido, a pilha LAMP está funcionando.
-
Perguntas frequentes
Por que não consigo acessar a página test.php?
Possíveis causas:
A porta 80 pode não estar aberta no grupo de segurança, o firewall do sistema pode estar ativado ou outro serviço pode estar usando a porta 80.
What do I do if I cannot access a service deployed on an instance?
Como permitir acesso remoto ao MySQL?
Crie uma conta não root para acesso remoto. Deploy MySQL on a Linux instance.