Hier sind die Schritte zum Bereitstellen eines Laravel-Projekts auf einem virtuellen Server mit CentOS auf einer EC2-Instanz von AWS.
SSH-Verbindung von Ihrem PC zum Server.
% ssh -i ~/.ssh/xxxxx.pem [email protected]
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
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
[root]
$ yum update
Einige Prozesse müssen neu gestartet werden. Starten Sie sie daher neu.
[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
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
[root]
$yum install http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
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 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
[root]
$yum install mysql-community-client.x86_64
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>
[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
Jetzt haben Sie eine Umgebung, in der Apache, MySQL und PHP arbeiten können.
Fügen Sie hier das erforderliche Repository hinzu.
[root]
$yum install git
$yum install zip unzip
$yum install postfix
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.
[root]
$ getenforce
Enforcing
[root]
$vi /etc/selinux/config
SELINUX=disabled
[root]
$ reboot
$ getenforce
Disabled
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
[root]
$timedatectl set-timezone Asia/Tokyo
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
[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
Jetzt, da Sie in 1.4 eine Verbindung zu MYSQL herstellen können, ist es Zeit, eine Datenbank und einen Datenbankbenutzer zu erstellen.
[root]
$mysql -u [DB-Benutzer] -p -h [Endpunkt] -P 3306
mysql> create database [DB-Name];
Query OK, 1 row affected (0.00 sec)
mysql>GRANT USAGE ON [DB-Name].* to [Neuer DB-Benutzer]@"%" IDENTIFIED BY '[Passwort]';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>GRANT ALL PRIVILEGES ON [DB-Name].* TO [Neuer DB-Benutzer]@"%";
Query OK, 0 rows affected (0.00 sec)
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)
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
$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
$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.
$php -r "unlink('composer-setup.php');"
$ ll
2132 insgesamt
-rwxr-xr-x 1 Centos Centos 2180422 6. November 16:56 composer.phar
$mv composer.phar /usr/local/bin/composer
$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.0.4 2020-10-30 22:39:11
.......
Dieses Mal werden wir das Projekt direkt unter / var / www in das Laravel-Projekt einfügen.
$ cd /var/www/
$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.
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
$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.
[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)
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>
Starten Sie neu, damit die Einstellungen wirksam werden.
[root]
$ systemctl restart httpd
Ändern Sie von hier aus die Einstellungen, damit Laravel funktioniert. 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
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
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]
$ 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.
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.
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