Comment déployer Laravel sur CentOS 7

Aperçu

Voici les étapes pour déployer un projet Laravel sur un serveur virtuel avec CentOS sur une instance EC2 d'AWS.

Conditions préalables

-Déployer un projet Laravel qui s'exécute dans l'environnement de développement et est géré par Git vers CentOS 7. -Cette fois, je présenterai uniquement le contenu à travailler en me connectant à CentOS avec ssh. -DB se connecte à Amazon RDS.

Le contenu du travail

  1. Installation du middleware (Apache, mysql-community-client, PHP7.3)
  2. Modifier les paramètres du système d'exploitation (arrêt SELinux, fuseau horaire, paramètres régionaux)
  3. Connexion RDS, création de base de données, paramétrage
  4. Installation de Composer
  5. Clonage du code source
  6. Mise au travail (Apache, Laravel)

1. Installation du middleware (Apache, mysql-community-client, PHP7.3)

Connexion SSH de votre PC au serveur.

% ssh -i ~/.ssh/xxxxx.pem [email protected]

1.1 Passer à la racine, vérifier les packages à mettre à jour, mettre à jour tous les packages, redémarrer

Changer pour root

Si vous ne disposez pas des privilèges root, vous ne pourrez peut-être pas mettre à jour le package en raison de privilèges insuffisants, alors passez à root.

$ sudo -i

Vérifier les packages à mettre à jour

CentOS installé à partir du support peut contenir d'anciens packages, donc mettez à jour tous les packages à l'avance. Vous pouvez vérifier le package à mettre à jour cette fois avec la commande suivante.

[root]
$ yum check-update

Mettre à jour tous les packages

[root]
$ yum update

Redémarrer

Certains processus doivent être redémarrés, alors redémarrez-les.

[root]
$reboot

1.2 Ajouter un dépôt (epel, remi)

Ajouter un référentiel epel

[root]
$yum install epel-release.noarch

Ajouter un référentiel remi

[root]
$rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

1.3 Installation d'Apache, démarrage, paramètres de démarrage automatique

Installation d'Apache

[root]
$yum install httpd

Démarrez Apache

[root]
$ systemctl start httpd.service

Paramètres de démarrage automatique d'Apache

[root]
$systemctl enable httpd.service

Vérification de l'état d'Apache

C'est OK si "activé" est affiché et "Actif: actif (en cours)" est affiché dans () de Chargé.

[root]
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running)depuis Kim 2020-11-06 04:57:30 UTC; 42s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 8618 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─8618 /usr/sbin/httpd -DFOREGROUND
           ├─8619 /usr/sbin/httpd -DFOREGROUND
           ├─8620 /usr/sbin/httpd -DFOREGROUND
           ├─8621 /usr/sbin/httpd -DFOREGROUND
           ├─8622 /usr/sbin/httpd -DFOREGROUND
           └─8623 /usr/sbin/httpd -DFOREGROUND

1.4 Ajouter le référentiel MYSQL, installer mysql-community-client, vérifier la connexion

Ajouter un référentiel MYSQL

[root]
$yum install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Installez mysql-community-client

Cette fois, c'est OK si vous pouvez vous connecter à Mysql dans Amazon RDS, donc si vous pouvez exécuter la commande Mysql. Par conséquent, installez uniquement "mysql-community-client". Si vous souhaitez créer une base de données sur le serveur, veuillez installer "mysql-community-server".

Assurez-vous que la version souhaitée est activée (5.7)

Vérifiez que mysql-community-client est disponible en utilisant la commande yum info

[root]
$yum info mysql-community-client
Plug-in chargé:extras_suggestions, langpacks, priorities, update-motd
37 packages excluded due to repository priority protections
Paquets installés
Nom: mysql-community-client
architecture: x86_64
version: 5.7.32
Libération: 1.el7
capacité: 101 M
Dépôt: installed
Dépôt source: mysql57-community
emballer: MySQL database client applications and tools
URL                 : http://www.mysql.com/
....

Assurez-vous que le référentiel mysql est activé avec la commande yum repolist.

[root]
$yum repolist enabled | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community                 175
mysql-tools-community/x86_64      MySQL Tools Community                      120
mysql57-community/x86_64          MySQL 5.7 Community Server                 464

Installez mysql-community-client

[root]
$yum install  mysql-community-client.x86_64

Confirmation de connexion

Connectez-vous à RDS. Ce n'est pas grave si vous pouvez confirmer que vous pouvez vous connecter à mysql.

[root]
$ mysql -u [Utilisateur DB] -p -h [point final] -P 3306
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 322
Server version: 5.7.31-log Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

1.5 Installation de PHP 7.3

installation de php avec remi-php73

[root]
$yum install php php-cli php-common php-devel php-gd php-mbstring php-mysqlnd php-pecl-mysql php-pdo php-xml php-pecl-memcache --enablerepo=remi-php73

$yum install --enablerepo=remi-php73 php-zip

Confirmez que la version PHP est la série 7.3

[root]
$php -v
PHP 7.3.24 (cli) (built: Oct 27 2020 11:01:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies

Vous disposez maintenant d'un environnement dans lequel Apache, Mysql et PHP peuvent fonctionner.

1.6 Git, zip, décompresser, installation de postfix

Ici, ajoutez le référentiel requis le cas échéant.

[root]
$yum install git
$yum install zip unzip
$yum install postfix

2. Modifier les paramètres du système d'exploitation (arrêt SELinux, fuseau horaire, paramètres régionaux)

2.1 Arrêtez SELinux

SELinux est l'une des fonctions de contrôle du noyau et est une abréviation de Security-Enhanced-Linux. Un contrôle d'accès fin est possible en utilisant SELinux. Cependant, il est difficile à gérer car il est difficile et il se comporte excessivement, alors désactivez-le.

Vérification de l'état de SELinux (activé si Enforcing)

[root]
$ getenforce
Enforcing

Désactiver (désactiver la valeur SELINUX)

[root]
$vi /etc/selinux/config
SELINUX=disabled

Redémarrer

[root]
$ reboot

Assurez-vous qu'il est désactivé

$ getenforce
Disabled

2.2 Changer de fuseau horaire

Dans l'état par défaut, le réglage de l'heure est "UTC, +0000". Changez ceci en heure du Japon.

$timedatectl status
      Local time:Sam 2020-11-07 05:31:41 UTC
  Universal time:Sam 2020-11-07 05:31:41 UTC
        RTC time:Sam 2020-11-07 05:31:41
       Time zone: n/a (UTC, +0000)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

Définir Asie / Tokyo dans le fuseau horaire

[root]
$timedatectl set-timezone Asia/Tokyo

Vérifiez si la zone de tom a changé

C'est OK si c'est "Fuseau horaire: Asie / Tokyo (JST, +0900)".

[root]
$  timedatectl status
      Local time:Ven 2020-11-06 14:22:07 JST
  Universal time:Ven 2020-11-06 05:22:07 UTC
        RTC time:Ven 2020-11-06 05:22:07
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

2.3 Changer de langue

Vérifier les paramètres régionaux actuels

[root]
$localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

Changer de langue

[root]
$localectl set-locale LANG=ja_JP.UTF-8

Régler sur le clavier japonais 106

[root]
$localectl set-keymap jp106

Confirmer le changement de langue

[root]
$localectl status
localectl status
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

3. Connexion RDS, création de base de données, création d'utilisateur d'application

Maintenant que vous pouvez vous connecter à MYSQL en 1.4, il est temps de créer une base de données et un utilisateur de base de données.

Connectez-vous à RDS

[root]
$mysql -u [Utilisateur DB] -p -h [point final] -P 3306

Création de DB

mysql> create database [Nom de la base de données];
Query OK, 1 row affected (0.00 sec)

Créer un utilisateur de base de données

mysql>GRANT USAGE ON [Nom de la base de données].* to [Nouvel utilisateur DB]@"%" IDENTIFIED BY '[mot de passe]';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Accorder l'accès utilisateur à la base de données

mysql>GRANT ALL PRIVILEGES ON [Nom de la base de données].* TO [Nouvel utilisateur DB]@"%";
Query OK, 0 rows affected (0.00 sec)

Confirmation de l'autorisation de l'utilisateur

Ce n'est pas grave si cela ressemble à ce qui suit.

mysql>show  grants for [Nouvel utilisateur DB]@%
+---------------------------------------------------------+
| Grants for [Nouvel utilisateur DB]@%                                    |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO '[Nouvel utilisateur DB]'@'%'                     |
| GRANT ALL PRIVILEGES ON `[Nom de la base de données]`.* TO '[Nouvel utilisateur DB]'@'%' |
+---------------------------------------------------------+
2 rows in set (0.00 sec)

[Nouvel utilisateur DB] Vérifiez si l'utilisateur peut se connecter

Revenez à EC2 et vérifiez si vous pouvez vous connecter en tant qu'utilisateur que vous avez créé cette fois.

[root]
$mysql -u [Nouvel utilisateur DB] -p -h [point final] -P 3306

4. installation du compositeur

Exécutez une copie avec la commande php pour télécharger composer-setup.php

$php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

"Composer-setup.php" est copié.

$ll
Total 272
-rw-rw-r--1 centos centos 276190 6 novembre 16:55 composer-setup.php

Exécutez le fichier composer-setup.php téléchargé pour créer un fichier exécutable Composer (phar)

$php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 2.0.4) successfully installed to: /home/centos/composer.phar
Use it: php composer.phar

"Composer.phar" a été ajouté à / home / centos.

Supprimer le programme d'installation

$php -r "unlink('composer-setup.php');"
$ ll
2132 au total
-rwxr-xr-x 1 centos centos 2180422 6 novembre 16:56 composer.phar

Déplacé pour une utilisation mondiale

$mv composer.phar /usr/local/bin/composer

Compositeur Confirmez que cela fonctionne

$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.0.4 2020-10-30 22:39:11
.......

5. Clonez le code source de Laravel

Déplacer vers le répertoire à placer

Cette fois, nous placerons le projet dans le projet Laravel directement sous / var / www.

$ cd /var/www/

Source de clonage

$référentiel distant git clone.git
fatal: could not create work tree dir 'xxxx'.: ????????

Une erreur s'est produite car le répertoire à cloner n'a pas l'autorisation.

Changement d'autorisation

Le propriétaire et le groupe propriétaire de "www" était "root", alors changez-le en "centos".

[root]
$ ll
drwxr-xr-x.4 racine racine 33 6 novembre 13:56 www

$ chown centos:centos www
$ ll
drwxr-xr-x.4 centos centos 33 6 novembre 13:56 www

Clonez à nouveau la source.

$référentiel distant git clone.git
remote: Enumerating objects: 2841, done.
remote: Counting objects: 100% (2841/2841), done.
remote: Compressing objects: 100% (2767/2767), done.
remote: Total 2841 (delta 1874), reused 110 (delta 22)
Receiving objects: 100% (2841/2841), 33.21 MiB | 35.94 MiB/s, done.
Resolving deltas: 100% (1874/1874), done.

$ ll
4 au total
drwxrwxr-x 13 centos centos 4096 6 novembre 17:15 xxxx(source clonée)
drwxr-xr-x.2 racine racine 6 2 avril 2020 cgi-bin
drwxr-xr-x.2 racine racine 6 2 avril 2020 html

Le clone a réussi. Cependant, si vous regardez à l'intérieur du répertoire, vous trouverez les répertoires "cgi-bin" et "html". Je ne l'utiliserai pas cette fois, je vais donc le supprimer.

Supprimer cgi-bin et html

[root]
$ rm -r html
rm:annuaire`html'Voulez-vous supprimer? yes
$ rm -r cgi-bin
rm:annuaire`cgi-bin'Voulez-vous supprimer? yes
$ ll
4 au total
drwxrwxr-x 13 centos centos 4096 6 novembre 17:15 xxxx(source clonée)

5. Mettez-vous au travail (Apache, Laravel)

5.1 Paramètres Apache

Ajoutez ce qui suit à httpd.conf

Ajoutez ce qui suit pour que "ServerName" et "DocumentRoot" .htaccess fonctionnent.

$vi /etc/httpd/conf/httpd.conf

ServerName xxxx.com:80
DocumentRoot "/var/www/xxxx/public"

<Directory /var/www/xxxx/public>
    AllowOverride All
</Directory>

Redémarrage Apache

Redémarrez pour que les paramètres prennent effet.

[root]
$ systemctl restart httpd

5.2 Paramètres Laravel

À partir de là, modifiez les paramètres pour que Laravel fonctionne. composer install

cd /var/www/xxxx
$ composer install

Vider le cache pour la configuration et l'itinéraire

$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!

$ php artisan route:cache
Route cache cleared!

Modifier les autorisations

$ chmod 777 storage -R
$ chmod 777 bootstrap -R

Confirmation

Assurez-vous que les autorisations ont changé.

$ ll
drwxrwxrwx 5 centos centos 46 6 novembre 17:15 storage
drwxrwxrwx 3 centos centos 34 6 novembre 17:15 bootstrap

Paramètres .env

Ensuite, éditez ".env" qui définit l'environnement de Laravel.

$cp .env.example .env
$vi .env

APP_ENV=production
APP_URL=xxxx.com
APP_DEBUG=false

DB_HOST=[point final]
DB_PORT=3306
DB_DATABASE=[Nom de la base de données]
DB_USERNAME=[Nouvel utilisateur DB]
DB_PASSWORD=[mot de passe]

Créer une clé et vider le cache

$ php artisan key:generate
Application key set successfully.

$ php artisan config:clear
Configuration cache cleared!

Créer un lien symbolique

$ php artisan storage:link
The [public/storage] directory has been linked.

Importer le vidage

Cette fois, je voulais vérifier temporairement si cela fonctionne dans cet environnement, alors importez le fichier de vidage de l'environnement de développement dans la base de données et vérifiez-le.

mysqldump -u admin -p -h [point final] -P 3306  [Nom de la base de données] <  xxxx.dump

Dans ce qui précède, j'ai mis le fichier de vidage et vérifié l'opération, mais si ce n'est pas le cas, exécutez la migration de base de données avec la commande suivante.

php artisan migrate

Si vous obtenez une erreur ici, veuillez vérifier s'il y a une erreur dans le paramètre DB de ".env".

Accéder et vérifier

Si vous visitez xxxx.com et que la page s'affiche, vous avez terminé. Si vous n'avez pas encore acquis le domaine, vous pouvez le vérifier en accédant directement à l'adresse IP.

Voilà comment déployer un projet Laravel sur CentOS 7.

Recommended Posts

Comment déployer Laravel sur CentOS 7
Comment déployer avec heroku
Comment déployer Bootstrap sur Rails
Comment installer MariaDB 10.4 sur CentOS 8
Comment installer la beta php8.0 sur CentOS8
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Comment "évider" une vue sur Android
Comment déployer une application Java Servlet simple sur Heroku
Comment utiliser Ruby on Rails
Pour exécuter JavaFX sur Docker
Comment utiliser les bio-formats sur Ubuntu 20.04
Comment déployer une application kotlin (java) sur AWS Fargate
Comment installer WildFly sur Ubuntu 18.04
Déployer des rails sur Docker vers heroku
Comment installer GNOME en tant qu'environnement de bureau sur CentOS 7
Étapes pour installer devtoolset-6 sur CentOS 7
Comment déployer l'application Rails sur AWS (résumé de l'article)
Comment écrire lors de l'installation d'Amazon Corretto 8 sur CentOS 8 avec Ansible.
Installez PHP7.4 pour créer l'environnement CentOS7 Laravel
Comment vérifier Java installé sur Mac
Un mémorandum sur l'utilisation d'Eclipse
Comment utiliser Apache Derby sur Eclipse
Comment détecter les conflits de microphone sur Android
Comment installer Eclipse (Photon) sur votre Mac
Étapes pour publier une application sur Heroku
Comment changer de version de Java sur Mac
Déployer sur Heroku [Ruby on Rails] Débutant
[Ruby on Rails] Comment utiliser redirect_to
J'ai essayé de construire AdoptOpenjdk 11 sur CentOS 7
Comment installer kafkacat sur Amazon Linux2
Commande pour installer nginx / PHP7 / php-fpm sur CentOS7
Déployer sur Ruby on Rails Elastic beanstalk (déploiement EB)
Comment installer les pilotes réseau sur Ubuntu autonome
Comment enregistrer des images sur Heroku dans S3 sur AWS
Notes sur l'utilisation de chaque règle de JUnit
Remarquez comment restaurer Mysql déployé sur Heroku
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
[Rails MySQL] Comment réinitialiser la base de données sur heroku
Comment créer un environnement Pytorch sur Ubuntu