Voici les étapes pour déployer un projet Laravel sur un serveur virtuel avec CentOS sur une instance EC2 d'AWS.
-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.
Connexion SSH de votre PC au serveur.
% ssh -i ~/.ssh/xxxxx.pem [email protected]
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
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
[root]
$ yum update
Certains processus doivent être redémarrés, alors redémarrez-les.
[root]
$reboot
[root]
$yum install epel-release.noarch
[root]
$rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[root]
$yum install httpd
[root]
$ systemctl start httpd.service
[root]
$systemctl enable httpd.service
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
[root]
$yum install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
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".
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
[root]
$yum install mysql-community-client.x86_64
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>
[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
[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.
Ici, ajoutez le référentiel requis le cas échéant.
[root]
$yum install git
$yum install zip unzip
$yum install postfix
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.
[root]
$ getenforce
Enforcing
[root]
$vi /etc/selinux/config
SELINUX=disabled
[root]
$ reboot
$ getenforce
Disabled
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
[root]
$timedatectl set-timezone Asia/Tokyo
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
[root]
$localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
[root]
$localectl set-locale LANG=ja_JP.UTF-8
[root]
$localectl set-keymap jp106
[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
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.
[root]
$mysql -u [Utilisateur DB] -p -h [point final] -P 3306
mysql> create database [Nom de la base de données];
Query OK, 1 row affected (0.00 sec)
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)
mysql>GRANT ALL PRIVILEGES ON [Nom de la base de données].* TO [Nouvel utilisateur DB]@"%";
Query OK, 0 rows affected (0.00 sec)
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)
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
$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
$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.
$php -r "unlink('composer-setup.php');"
$ ll
2132 au total
-rwxr-xr-x 1 centos centos 2180422 6 novembre 16:56 composer.phar
$mv composer.phar /usr/local/bin/composer
$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.0.4 2020-10-30 22:39:11
.......
Cette fois, nous placerons le projet dans le projet Laravel directement sous / var / www.
$ cd /var/www/
$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.
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
$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.
[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)
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émarrez pour que les paramètres prennent effet.
[root]
$ systemctl restart httpd
À partir de là, modifiez les paramètres pour que Laravel fonctionne. composer install
cd /var/www/xxxx
$ composer install
$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
$ php artisan route:cache
Route cache cleared!
$ chmod 777 storage -R
$ chmod 777 bootstrap -R
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
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]
$ php artisan key:generate
Application key set successfully.
$ php artisan config:clear
Configuration cache cleared!
$ php artisan storage:link
The [public/storage] directory has been linked.
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".
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