So stellen Sie Laravel für CentOS 7 bereit

Überblick

Hier sind die Schritte zum Bereitstellen eines Laravel-Projekts auf einem virtuellen Server mit CentOS auf einer EC2-Instanz von AWS.

Voraussetzungen

Arbeitsinhalt

  1. Middleware-Installation (Apache, MySQL-Community-Client, PHP7.3)
  2. Ändern Sie die Betriebssystemeinstellungen (SELinux-Stopp, Zeitzone, Gebietsschema).
  3. RDS-Verbindung, DB-Erstellung, Einstellung
  4. Composer-Installation
  5. Quellcode klonen
  6. Machen Sie sich an die Arbeit (Apache, Laravel)

1. Middleware-Installation (Apache, MySQL-Community-Client, PHP7.3)

SSH-Verbindung von Ihrem PC zum Server.

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

1.1 Wechseln Sie zu root, überprüfen Sie die zu aktualisierenden Pakete, aktualisieren Sie alle Pakete und starten Sie sie neu

Wechseln Sie zu root

Wenn Sie nicht über Root-Rechte verfügen, können Sie das Paket möglicherweise aufgrund unzureichender Berechtigungen nicht aktualisieren. Wechseln Sie daher zu root.

$ sudo -i

Überprüfen Sie, ob Pakete aktualisiert werden sollen

Auf dem Datenträger installiertes CentOS enthält möglicherweise alte Pakete. Aktualisieren Sie daher alle Pakete im Voraus. Sie können das Paket, das dieses Mal aktualisiert werden soll, mit dem folgenden Befehl überprüfen.

[root]
$ yum check-update

Aktualisieren Sie alle Pakete

[root]
$ yum update

Starten Sie neu

Einige Prozesse müssen neu gestartet werden. Starten Sie sie daher neu.

[root]
$reboot

1.2 Repository hinzufügen (epel, remi)

Epel-Repository hinzufügen

[root]
$yum install epel-release.noarch

Remi-Repository hinzufügen

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

1.3 Einstellungen für Apache-Installation, -Start und Autostart

Apache-Installation

[root]
$yum install httpd

Starten Sie Apache

[root]
$ systemctl start httpd.service

Apache Autostart-Einstellungen

[root]
$systemctl enable httpd.service

Apache-Statusprüfung

Es ist in Ordnung, wenn "aktiviert" angezeigt wird und "Aktiv: aktiv (läuft)" in () von Loaded angezeigt wird.

[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)seit 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 Fügen Sie das MYSQL-Repository hinzu, installieren Sie den MySQL-Community-Client und überprüfen Sie die Verbindung

Fügen Sie das MYSQL-Repository hinzu

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

Installieren Sie mysql-community-client

Dieses Mal ist es in Ordnung, wenn Sie in Amazon RDS eine Verbindung zu MySQL herstellen können. Wenn Sie also den Befehl MySQL ausführen können. Installieren Sie daher nur "mysql-community-client". Wenn Sie eine Datenbank auf dem Server erstellen möchten, installieren Sie bitte "mysql-community-server".

Stellen Sie sicher, dass die gewünschte Version aktiviert ist (5.7).

Stellen Sie mit dem Befehl yum info sicher, dass mysql-community-client verfügbar ist

[root]
$yum info mysql-community-client
Geladenes Plug-In:extras_suggestions, langpacks, priorities, update-motd
37 packages excluded due to repository priority protections
Installierte Pakete
Name: mysql-community-client
die Architektur: x86_64
Ausführung: 5.7.32
Veröffentlichung: 1.el7
Kapazität: 101 M
Repository: installed
Quell-Repository: mysql57-community
einpacken: MySQL database client applications and tools
URL                 : http://www.mysql.com/
....

Stellen Sie sicher, dass das MySQL-Repository mit dem Befehl yum repolist aktiviert ist.

[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

Installieren Sie mysql-community-client

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

Verbindungsbestätigung

Stellen Sie eine Verbindung zu RDS her. Es ist in Ordnung, wenn Sie bestätigen können, dass Sie eine Verbindung zu MySQL herstellen können.

[root]
$ mysql -u [DB-Benutzer] -p -h [Endpunkt] -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 von PHP 7.3

PHP-Installation mit 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

Stellen Sie sicher, dass die PHP-Version der 7.3-Serie entspricht

[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

Jetzt haben Sie eine Umgebung, in der Apache, MySQL und PHP arbeiten können.

1.6 Installation von Git, Zip, Unzip, Postfix

Fügen Sie hier das erforderliche Repository hinzu.

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

2. Ändern Sie die Betriebssystemeinstellungen (SELinux-Stopp, Zeitzone, Gebietsschema).

2.1 Beenden Sie SELinux

SELinux ist eine der Steuerfunktionen des Kernels und eine Abkürzung für Security-Enhanced-Linux. Eine feine Zugangskontrolle ist mit SELinux möglich. Es ist jedoch schwierig zu verwalten, da es schwierig ist und sich übermäßig verhält. Deaktivieren Sie es daher.

Überprüfen des Status von SELinux (aktiviert, wenn erzwungen)

[root]
$ getenforce
Enforcing

Deaktivieren (deaktivieren Sie den SELINUX-Wert)

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

Starten Sie neu

[root]
$ reboot

Stellen Sie sicher, dass es deaktiviert ist

$ getenforce
Disabled

2.2 Zeitzone ändern

Im Standardzustand ist die Zeiteinstellung "UTC, +0000". Ändern Sie dies in Japan Zeit.

$timedatectl status
      Local time:Sa 2020-11-07 05:31:41 UTC
  Universal time:Sa 2020-11-07 05:31:41 UTC
        RTC time:Sa 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

Stellen Sie Asien / Tokio in der Zeitzone ein

[root]
$timedatectl set-timezone Asia/Tokyo

Überprüfen Sie, ob sich die Tom-Zone geändert hat

Es ist in Ordnung, wenn es sich um "Zeitzone: Asien / Tokio (JST, +0900)" handelt.

[root]
$  timedatectl status
      Local time:Fr 2020-11-06 14:22:07 JST
  Universal time:Fr 2020-11-06 05:22:07 UTC
        RTC time:Fr 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 Gebietsschema ändern

Überprüfen Sie die aktuellen Gebietsschemaeinstellungen

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

Gebietsschema ändern

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

Stellen Sie die japanische 106-Tastatur ein

[root]
$localectl set-keymap jp106

Bestätigen Sie die Änderung des Gebietsschemas

[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. RDS-Verbindung, DB-Erstellung, Anwendungsbenutzererstellung

Jetzt, da Sie in 1.4 eine Verbindung zu MYSQL herstellen können, ist es Zeit, eine Datenbank und einen Datenbankbenutzer zu erstellen.

Stellen Sie eine Verbindung zu RDS her

[root]
$mysql -u [DB-Benutzer] -p -h [Endpunkt] -P 3306

DB-Erstellung

mysql> create database [DB-Name];
Query OK, 1 row affected (0.00 sec)

Erstellen eines Datenbankbenutzers

mysql>GRANT USAGE ON [DB-Name].* to [Neuer DB-Benutzer]@"%" IDENTIFIED BY '[Passwort]';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Gewähren Sie dem Benutzer Zugriff auf die Datenbank

mysql>GRANT ALL PRIVILEGES ON [DB-Name].* TO [Neuer DB-Benutzer]@"%";
Query OK, 0 rows affected (0.00 sec)

Bestätigung der Benutzerberechtigung

Es ist in Ordnung, wenn es wie folgt aussieht.

mysql>show  grants for [Neuer DB-Benutzer]@%
+---------------------------------------------------------+
| Grants for [Neuer DB-Benutzer]@%                                    |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO '[Neuer DB-Benutzer]'@'%'                     |
| GRANT ALL PRIVILEGES ON `[DB-Name]`.* TO '[Neuer DB-Benutzer]'@'%' |
+---------------------------------------------------------+
2 rows in set (0.00 sec)

[Neuer DB-Benutzer] Überprüfen Sie, ob der Benutzer eine Verbindung herstellen kann

Gehen Sie zurück zu EC2 und prüfen Sie, ob Sie sich als der Benutzer anmelden können, den Sie dieses Mal erstellt haben.

[root]
$mysql -u [Neuer DB-Benutzer] -p -h [Endpunkt] -P 3306

4. Installation des Komponisten

Führen Sie copy mit dem Befehl php aus, um composer-setup.php herunterzuladen

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

"Composer-setup.php" wird kopiert.

$ll
Insgesamt 272
-rw-rw-r--1 Centos Centos 276190 6. November 16:55 composer-setup.php

Führen Sie die heruntergeladene Datei composer-setup.php aus, um eine ausführbare Composer-Datei (phar) zu erstellen.

$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" wurde zu / home / centos hinzugefügt.

Entfernen Sie das Installationsprogramm

$php -r "unlink('composer-setup.php');"
$ ll
2132 insgesamt
-rwxr-xr-x 1 Centos Centos 2180422 6. November 16:56 composer.phar

Für den globalen Gebrauch umgezogen

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

Komponist Bestätigen Sie, dass es funktioniert

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

5. Klonen Sie den Laravel-Quellcode

Wechseln Sie in das zu platzierende Verzeichnis

Dieses Mal werden wir das Projekt direkt unter / var / www in das Laravel-Projekt einfügen.

$ cd /var/www/

Quelle klonen

$Git Clone Remote Repository.git
fatal: could not create work tree dir 'xxxx'.: ????????

Ein Fehler ist aufgetreten, weil das zu klonende Verzeichnis keine Berechtigung hat.

Berechtigungsänderung

Der Eigentümer und die Eigentümergruppe von "www" war "root", ändern Sie es also in "centos".

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

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

Klonen Sie die Quelle erneut.

$Git Clone Remote Repository.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 insgesamt
drwxrwxr-x 13 Centos Centos 4096 6. November 17:15 xxxx(geklonte Quelle)
drwxr-xr-x.2 root root 6 2. April 2020 cgi-bin
drwxr-xr-x.2 root root 6 2. April 2020 html

Der Klon war erfolgreich. Wenn Sie jedoch in das Verzeichnis schauen, finden Sie die Verzeichnisse "cgi-bin" und "html". Ich werde es dieses Mal nicht verwenden, also werde ich es löschen.

Entfernen Sie cgi-bin und html

[root]
$ rm -r html
rm:Verzeichnis`html'Möchten Sie löschen?? yes
$ rm -r cgi-bin
rm:Verzeichnis`cgi-bin'Möchten Sie löschen?? yes
$ ll
4 insgesamt
drwxrwxr-x 13 Centos Centos 4096 6. November 17:15 xxxx(geklonte Quelle)

5. Machen Sie sich an die Arbeit (Apache, Laravel)

5.1 Apache-Einstellungen

Fügen Sie httpd.conf Folgendes hinzu

Fügen Sie Folgendes hinzu, damit "ServerName" und "DocumentRoot" .htaccess funktionieren.

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

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

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

Apache Neustart

Starten Sie neu, damit die Einstellungen wirksam werden.

[root]
$ systemctl restart httpd

5.2 Laravel-Einstellungen

Ändern Sie von hier aus die Einstellungen, damit Laravel funktioniert. composer install

cd /var/www/xxxx
$ composer install

Leeren Sie den Cache für Konfiguration und Route

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

$ php artisan route:cache
Route cache cleared!

Berechtigungen ändern

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

Bestätigung

Stellen Sie sicher, dass sich die Berechtigungen geändert haben.

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

.env Einstellungen

Bearbeiten Sie als Nächstes ".env", um die Umgebung von Laravel festzulegen.

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

APP_ENV=production
APP_URL=xxxx.com
APP_DEBUG=false

DB_HOST=[Endpunkt]
DB_PORT=3306
DB_DATABASE=[DB-Name]
DB_USERNAME=[Neuer DB-Benutzer]
DB_PASSWORD=[Passwort]

Erstellen Sie einen Schlüssel und leeren Sie den Cache

$ php artisan key:generate
Application key set successfully.

$ php artisan config:clear
Configuration cache cleared!

Erstellen einer symbolischen Verknüpfung

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

Dump importieren

Dieses Mal wollte ich vorübergehend überprüfen, ob es in dieser Umgebung funktioniert. Importieren Sie also die Speicherauszugsdatei der Entwicklungsumgebung in die Datenbank und überprüfen Sie sie.

mysqldump -u admin -p -h [Endpunkt] -P 3306  [DB-Name] <  xxxx.dump

Oben habe ich die Dump-Datei abgelegt und den Vorgang überprüft. Wenn dies nicht der Fall ist, führen Sie die DB-Migration mit dem folgenden Befehl aus.

php artisan migrate

Wenn hier eine Fehlermeldung angezeigt wird, überprüfen Sie bitte, ob die DB-Einstellung ".env" fehlerhaft ist.

Zugriff und Überprüfung

Wenn Sie xxxx.com besuchen und die Seite angezeigt wird, sind Sie fertig. Wenn Sie die Domain noch nicht erworben haben, können Sie sie überprüfen, indem Sie direkt auf die IP zugreifen.

So stellen Sie ein Laravel-Projekt unter CentOS 7 bereit.

Recommended Posts

So stellen Sie Laravel für CentOS 7 bereit
Wie man mit Heroku einsetzt
So stellen Sie Bootstrap auf Rails bereit
So installieren Sie MariaDB 10.4 unter CentOS 8
So installieren Sie Beta PHP8.0 unter CentOS8
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Wie man eine Ansicht auf Android "aushöhlt"
So stellen Sie eine einfache Java-Servlet-App auf Heroku bereit
Verwendung von Ruby on Rails
So führen Sie JavaFX unter Docker aus
Verwendung von Bio-Formaten unter Ubuntu 20.04
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
So installieren Sie WildFly unter Ubuntu 18.04
Stellen Sie Rails on Docker für Heroku bereit
So installieren Sie GNOME als Desktop-Umgebung unter CentOS 7
Schritte zum Installieren von devtoolset-6 unter CentOS 7
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)
So schreiben Sie bei der Installation von Amazon Corretto 8 unter CentOS 8 mit Ansible.
Installieren Sie PHP7.4, um die CentOS7 Laravel-Umgebung zu erstellen
So überprüfen Sie, ob Java auf einem Mac installiert ist
Ein Memorandum zur Verwendung von Eclipse
Verwendung von Apache Derby unter Eclipse
So erkennen Sie Mikrofonkonflikte unter Android
So installieren Sie Eclipse (Photon) auf Ihrem Mac
Schritte zum Veröffentlichen einer Anwendung auf Heroku
So wechseln Sie Java-Versionen auf dem Mac
Bereitstellen für Heroku [Ruby on Rails] Anfänger
[Ruby on Rails] Verwendung von redirect_to
Ich habe versucht, AdoptOpenjdk 11 unter CentOS 7 zu erstellen
So installieren Sie kafkacat unter Amazon Linux2
Befehl zum Installieren von nginx / PHP7 / php-fpm unter CentOS7
Bereitstellung auf Ruby on Rails Elastic Beanstalk (EB-Bereitstellung)
So installieren Sie Netzwerktreiber unter eigenständigem Ubuntu
So speichern Sie Bilder auf Heroku in S3 unter AWS
Hinweise zur Verwendung der einzelnen JUnit-Regeln
Beachten Sie, wie Sie auf Heroku bereitgestelltes MySQL zurücksetzen können
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
[Rails MySQL] So setzen Sie die Datenbank auf Heroku zurück
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu