Installez et configurez Linux, Apache, MySQL et PHP sur une instance ECS pour héberger des applications web.
Utilisez Terraform Explorer pour créer automatiquement un environnement LAMP.
Prérequis
Une adresse IP publique est attribuée automatiquement à l'instance ECS. Vous pouvez également associer une adresse IP élastique (EIP) à l'instance ECS. Pour savoir comment activer la bande passante publique, consultez la rubrique Activer la bande passante publique.
Les règles de groupe de sécurité entrantes autorisent le trafic sur les ports 22 et 80 pour l'instance ECS.
L'instance ECS dispose d'au moins 4 Go de mémoire.
Déployer une pile LAMP
Alibaba Cloud Linux 3 ou CentOS 8
-
Installez 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 -
Installez MySQL.
RemarqueSur Alibaba Cloud Linux 3, installez
compat-openssl10pour assurer la compatibilité avec les anciennes bibliothèques 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-
Récupérez le mot de passe root initial.
-
Sur Alibaba Cloud Linux 3 :
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) Sur CentOS 8, l'utilisateur root ne possède pas de mot de passe initial.
-
-
Définissez un nouveau mot de passe root pour MySQL. Remplacez
<oldpwd>par le mot de passe initial et<newpwd>par votre nouveau mot de passe. Sur CentOS 8, laissez<oldpwd>vide.ImportantLe mot de passe doit comporter au moins 8 caractères et inclure des majuscules, des minuscules, des chiffres et des caractères spéciaux.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Installez PHP.
RemarqueCet exemple utilise PHP 8.4. Pour d'autres versions, modifiez le nom du module (par exemple,
php:remi-8.1pour 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 -
Vérifiez la pile LAMP.
-
Récupérez l'adresse d'écoute de
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.conf -
Créez le fichier
/etc/httpd/conf.d/php-fpm.confavec les règles de redirectionphp-fpm.ImportantSi
PHP-FPMécoute sur127.0.0.1:9000, définissez SetHandler surproxy: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 -
Redémarrez httpd.
sudo systemctl restart httpd -
Créez le fichier
test.phpdans le répertoire/var/www/html/. Remplacez<username>et<password>par vos identifiants 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 Ouvrez l'URL
http://<Public-IP-Address-of-ECS-instance>/test.phpdans un navigateur. Si le messagesuccesss'affiche, la pile LAMP fonctionne correctement.
-
Alibaba Cloud Linux 2 ou CentOS 7
-
Installez 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 -
Installez 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-
Récupérez le mot de passe root initial.
echo $(PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log); PASSWORD=${PASSWORD##* }; echo $PASSWORD) -
Définissez un nouveau mot de passe root pour MySQL. Remplacez
<oldpwd>par le mot de passe initial et<newpwd>par votre nouveau mot de passe.ImportantLe mot de passe doit comporter au moins 8 caractères et inclure des majuscules, des minuscules, des chiffres et des caractères spéciaux.
sudo mysqladmin -uroot -p'<oldpwd>' password '<newpwd>'
-
-
Installez 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 -
Vérifiez la pile LAMP.
-
Récupérez l'adresse d'écoute de
PHP-FPM.sudo grep 'listen =' /etc/php-fpm.d/www.confSi un chemin de fichier socket est renvoyé, PHP-FPM écoute sur le fichier socket.
Si
127.0.0.1:9000est renvoyé, PHP-FPM écoute sur le port local 9000.
-
Créez le fichier
/etc/httpd/conf.d/php-fpm.confavec les règles de redirectionphp-fpm.ImportantSi
PHP-FPMécoute sur un fichier socket, remplacezproxy:fcgi://127.0.0.1:9000parproxy:unix:<path>;. Remplacez <path> par le chemin du fichier socket.sudo tee /etc/httpd/conf.d/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> EOF -
Redémarrez httpd.
sudo systemctl restart httpd -
Créez le fichier
test.phpdans le répertoire/var/www/html/. Remplacez<username>et<password>par vos identifiants 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 Ouvrez l'URL
http://<Public-IP-Address-of-ECS-instance>/test.phpdans un navigateur. Si le messagesuccesss'affiche, la pile LAMP fonctionne correctement.
-
Ubuntu 20.04 ou version ultérieure
-
Installez 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 -
Installez le serveur MySQL.
sudo apt update -y && sudo apt install -y mysql-server -
Définissez le mot de passe
rootet le plugin d'authentification. Remplacez<newpwd>par votre mot de passe.ImportantPar défaut, root utilise le plugin
auth_socketet ne possède pas de mot de passe. Appuyez sur Entrée lorsque vous y êtes invité.sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<newpwd>';" -e "FLUSH PRIVILEGES;" -
Installez PHP.
RemarqueExécutez
sudo apt search phppour lister les versions PHP disponibles. Par exemple, pour 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 -
Vérifiez la pile LAMP.
-
Récupérez l'adresse d'écoute de
PHP-FPM. Remplacez<version>par votre version PHP, par exemple8.4.sudo grep '^listen =' /etc/php/<version>/fpm/pool.d/www.confSi un chemin de fichier socket est renvoyé, PHP-FPM écoute sur le fichier socket.
Si
127.0.0.1:9000est renvoyé, PHP-FPM écoute sur le port local 9000.
-
Créez le fichier
/etc/apache2/conf-available/php-fpm.confavec les règles de redirection PHP. Remplacez <listen> par l'adresse d'écoute de PHP-FPM.-
Si PHP-FPM écoute sur un fichier socket, remplacez
<listen>parunix:<path>;et<path>par le chemin du fichier socket.ImportantLes fichiers socket nécessitent des permissions en lecture/écriture. Exécutez
sudo chmod 666 <path>pour les accorder. Si PHP-FPM écoute sur
127.0.0.1:9000, remplacez<listen>parfcgi://127.0.0.1:9000.
sudo tee /etc/apache2/conf-available/php-fpm.conf <<-'EOF' <FilesMatch \.php$> SetHandler "proxy:<listen>" </FilesMatch> EOF -
-
Créez un lien symbolique pour activer la configuration.
sudo ln -s /etc/apache2/conf-available/php-fpm.conf /etc/apache2/conf-enabled/ -
Activez les modules proxy_fcgi et setenvif, puis activez la configuration PHP-FPM.
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.4-fpm -
Redémarrez Apache.
sudo systemctl restart apache2 -
Créez le fichier
test.phpdans le répertoire/var/www/html/. Remplacez<username>et<password>par vos identifiants 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 Ouvrez l'URL
http://<Public-IP-Address-of-ECS-instance>/test.phpdans un navigateur. Si le messagesuccesss'affiche, la pile LAMP fonctionne correctement.
-
FAQ
Pourquoi ne puis-je pas accéder à la page test.php ?
Causes possibles :
Le port 80 n'est peut-être pas ouvert dans le groupe de sécurité, le pare-feu système est peut-être activé ou le port 80 est peut-être utilisé par un autre service.
Que faire si je ne peux pas accéder à un service déployé sur une instance ?
Comment autoriser l'accès distant à MySQL ?
Créez un compte non-root pour l'accès distant. Consultez la rubrique Déployer MySQL sur une instance Linux.