Heim  >  Artikel  >  PHP-Framework  >  Wie installiere und konfiguriere ich Laravel Schritt für Schritt in CentOS7?

Wie installiere und konfiguriere ich Laravel Schritt für Schritt in CentOS7?

藏色散人
藏色散人nach vorne
2021-10-25 15:59:272216Durchsuche

In der Kolumne „Laravel-Tutorial“ erfahren Sie, wie Sie Laravel auf Basis von LNMP unter CentOS7 installieren und konfigurieren. CentOS7 basierend auf LNMP-Installation und -Konfiguration von Laravel

Das letzte Mal, dass ich mit Laravel in Kontakt kam, war im Jahr 2015. Dieses Mal basierend auf CentOS7 LNMP (Linux, Nginx, MySQL, PHP), lassen Sie uns noch einmal erleben Der Spaß an der Bereitstellung zeichnet die Schritte der manuellen Bereitstellung auf. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen.

Update-Verlauf

21. Oktober 2020 – Erster Entwurf

Originaltext – https://wsgzao.github.io/post/laravel/

Softwareversion

Sie können PHP-Version 7.3 oder höher wählen, ich wähle it yourself Die neueste Version von 7.2

CentOS Linux Release 7. v6 .x
npm 3. /CentOS stellt Pakete bereit, die nicht standardmäßig bereitgestellt werden. Diese Quelle ist mit RHEL und Derivaten wie CentOS und Scientific Linux kompatibel.
  • Weitere Details finden Sie hier: EPEl
  • Wir benötigen das EPEL-Repository für die Nginx-Installation, da das Nginx-Paket nicht im offiziellen CentOS-Repository vorhanden ist.
sudo yum -y install epel-release
  • Installieren Sie Nginx
  • Verwenden Sie die LNMP-Umgebung, um Laravel auszuführen. Nginx ist der Webserver-Teil davon und kann aus dem EPEL-Repository installiert werden.
  • # 安装Nginx
    sudo yum -y install nginx
    
    # 安装完成后,启动Nginx并将其添加到系统自启动
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
    # Nginx默认运行在80端口,使用下面的netstat命令检查。
    netstat -plntu | grep 80
  • Installieren Sie php-fpm
  • PHP 7.2 existiert nicht im CentOS-Basis-Repository, wir müssen es von einem Drittanbieter-Repository namens remi oder webtatic installieren.
  • Methode 1 Remi Warehouse (empfohlen)

  • Der Grund, warum es empfohlen wird, ist, dass es sehr praktisch ist, PHP-Versionen zu wechseln.
  • Weitere Informationen zum Lager finden Sie hier.
  • Installation

    sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
    sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    sudo yum-config-manager --enable remi-php72 # 默认remi仓库禁用的,在实际需要的时候启用
    sudo yum update
    # sudo yum search php72 | more
    sudo yum install -y php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache php72-php-pecl-zip
    sudo mkdir -p /run/php-fpm/remi-php72 # 创建一个sock存放的目录
    sudo ln -s  `which php72` /usr/local/sbin/php # 建立软连接方便命令行使用

    Nach der Ausführung des obigen Befehls wurde PHP 7.2 auf dem CentOS-System installiert. Das installierte Verzeichnis php72 befindet sich in /etc/opt/remi/php72Code>, Sie können auch auf diesen Link verweisen, um weitere Betriebsdetails anzuzeigen. <p></p> <p>Deinstallation</p> <p></p> <code>remi-Repository unterstützt die Koexistenz mehrerer PHP-Versionen

    Eine Deinstallation wird nur empfohlen, wenn dies unbedingt erforderlich ist

    sudo yum-config-manager --disable remi-php72 # 禁用remi-php72仓库
    sudo systemctl stop php72-php-fpm.service
    yum remove php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache
    sudo rmdir /run/php-fpm/remi-php72
    sudo rm -rf /etc/opt/remi/remi-php72 # 删除前记得备份配置
    Zu diesem Zeitpunkt wurde PHP erfolgreich über das Remi-Repository installiert deinstalliert.

    Mehrversionsinstallation

    Nehmen Sie die Installation einer anderen PHP7.3-Version als Beispiel. Führen Sie die folgenden Vorgänge aus, um die Installation der PHP7.3-Version abzuschließen.

    sudo yum-config-manager --enable remi-php73
    sudo yum install php73 php73-php-fpm php73-php-gd php73-php-json php73-php-mbstring php73-php-mysqlnd php73-php-xml php73-php-xmlrpc php73-php-opcache
    sudo mkdir -p /run/php-fpm/remi-php73 # 创建一个sock存放的目录
    sudo ln -s  `which php73` /usr/local/sbin/php # 建立软连接方便命令行使用

    Methode 2 Webtatic Warehouse

    remiwebtatic的第三方仓库中安装它。

    方式一 remi仓库(推荐)

    之所以推荐它是因为它非常方便切换PHP的版本。

    更多仓库相关信息参考这里。

    安装

    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    sudo yum install -y php72w php72w-gd php72w-curl php72w-common php72w-cli php72w-mysql php72w-mbstring php72w-fpm php72w-xml php72w-pdo php72w-zip

    执行完上面的命令后,CentOS系统上已经安装了PHP 7.2, 安装好的php72目录在/etc/opt/remi/php72, 也可以参考这个链接查看更多操作详情。

    卸载

    remi仓库支持PHP的多版本共存,不到万不得已不建议使用卸载操作

    sudo systemctl stop php-fpm
    yum remove php72w php72w-curl php72w-common php72w-cli php72w-mysql php72w-mbstring php72w-fpm php72w-xml php72w-pdo php72w-zip

    至此,使用remi仓库安装的PHP已经成功卸载。

    多版本安装

    再安装一个PHP7.3版本为例,执行下面的操作即可完成PHP7.3版本的安装。

    cgi.fix_pathinfo=0

    方式二 webtatic仓库

    安装

    # 用户和组保持和Nginx一致,使用命令 egrep '^(user|group)' /etc/nginx/nginx.conf 查看nginx进程的用户
    user = nginx
    group = nginx

    其他版本下载可以查看这里:webtatic仓库。

    如果执行上面的命令一直报错curl: (35) Encountered end of file,可以尝试将上面的https协议改成http协议获取rpm源。

    执行完上面的命令后,CentOS系统上已经安装了PHP 7.2, 安装好的php72w目录在/etc/php下。

    卸载

    注意: 如果想更换到php5.6或7.1版本, 直接把上面yum命令里面的关键字php72w换成php56w或者 php71w就可以了。
    # remi
    listen = /run/php-fpm/remi-php72/php-fpm.sock
    
    # webtatic
    listen = /run/php-fpm/php-fpm.sock

    至此,使用webtatic仓库安装的PHP已经成功卸载。

    配置php-fpm

    通过使用vim编辑配置文件php.ini来配置PHP,remi仓库方式安装的主配置文件存放位置在/etc/opt/remi/php72/php.iniwebtatic仓库方式安装的主配置文件存放位置在/etc/php.ini

    在文件中找如如下行,取消它的行注释并将值更改为0。

    listen.owner = nginx
    listen.group = nginx
    listen.mode  = 0660

    保存文件并退出编辑器。

    编辑php-fpm文件www.confremi仓库方式安装的配置文件存放位置在/etc/opt/remi/php72/php-fpm.d/www.confwebtatic仓库方式安装的配置文件存放位置在/etc/php-fpm.d/www.conf

    php-fpm将在用户和组nginx下运行,将下面两行的值更改为nginx,这里用户和用户组请保持与Nginx的用户和用户组一致。

    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp

    php-fpm将在套接字文件下运行,而不是使用服务器端口,remi仓库方式安装的PHP可以将值改为/run/php-fpm/remi-php72/php-fpm.sockwebtatic仓库方式安装的PHP请将'listen'值更改为路径/run/php-fpm/php-fpm.sock

    # remi
    sudo systemctl start php72-php-fpm.service
    sudo systemctl enable php72-php-fpm.service
    
    # webtatic
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm

    套接字文件所有者将是“nginx”用户,权限模式为660,取消注释并更改所有值。

    sudo netstat -pl | grep php-fpm.sock

    对于环境变量,取消注释这些行并设置值。

    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    rpm -ivh mysql57-community-release-el7-11.noarch.rpm
    sudo yum update
    sudo yum install -y mysql-server

    保存文件并退出vim编辑,然后启动php-fpm

    Installation🎜🎜
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    🎜Weitere Versionsdownloads finden Sie hier: Webtatic Warehouse. 🎜🎜Wenn Sie beim Ausführen des obigen Befehls weiterhin die Fehlermeldung curl: (35) Encountered end of file erhalten, können Sie versuchen, das obige https-Protokoll in http zu ändern Das Protokoll ruft die RPM-Quelle ab. 🎜🎜Nach der Ausführung des obigen Befehls wurde PHP 7.2 auf dem CentOS-System installiert. Das installierte Verzeichnis php72w befindet sich unter /etc/php. 🎜🎜🎜Deinstallieren🎜🎜🎜🎜Hinweis:🎜 Wenn Sie zur Version php5.6 oder 7.1 wechseln möchten, ersetzen Sie das Schlüsselwort php72w im obigen Yum-Befehl direkt durch php56w oder php71w reicht aus. 🎜
    netstat -plntu | grep 3306 # 检查端口
    ps aux|grep mysqld # 检查进程
    🎜Zu diesem Zeitpunkt wurde PHP, das über das Webtatic-Repository installiert wurde, erfolgreich deinstalliert. 🎜

    Konfigurieren Sie php-fpm

    🎜Konfigurieren Sie PHP, indem Sie vim verwenden, um die Konfigurationsdatei php.ini zu bearbeiten. Die von 🎜remi Warehouse🎜 installierte Hauptkonfigurationsdatei wird in gespeichert / etc/opt/remi/php72/php.ini, die über 🎜webtatic Warehouse🎜 installierte Hauptkonfigurationsdatei wird in /etc/php.ini gespeichert. 🎜🎜Suchen Sie in der Datei nach der folgenden Zeile, entkommentieren Sie ihre Zeile und ändern Sie den Wert auf 0. 🎜
    sudo grep 'temporary password' /var/log/mysqld.log
    🎜Speichern Sie die Datei und verlassen Sie den Editor. 🎜🎜Bearbeiten Sie die php-fpm-Datei www.conf, und die vom 🎜remi-Warehouse🎜 installierte Konfigurationsdatei wird in /etc/opt/remi/php72 gespeichert /php -fpm.d/www.conf, die über 🎜webtatic Warehouse🎜 installierte Konfigurationsdatei wird in /etc/php-fpm.d/www.conf gespeichert. 🎜🎜php-fpm wird unter Benutzer und Gruppe nginx ausgeführt. Ändern Sie den Wert der folgenden beiden Zeilen in nginx, hier Benutzer und Gruppe Bitte Halten Sie den Benutzer und die Benutzergruppe mit Nginx konsistent. 🎜
    mysql -uroot -p # 回车输入上面获取到的密码
    
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword1!';
    🎜php-fpm wird unter der Socket-Datei ausgeführt, anstatt den über das 🎜remi-Repository installierten Server-Port zu verwenden. PHP kann den Wert in /run/php-fpm /remi- ändern. php72/php-fpm.sock, Für PHP, das über 🎜webtatic Warehouse🎜 installiert wurde, ändern Sie bitte den Wert „listen“ in den Pfad /run/php-fpm/php-fpm.sock . 🎜
    CREATE DATABASE laravel; -- 创建一个laravel数据库
    GRANT ALL PRIVILEGES ON laravel.* TO laravel@localhost IDENTIFIED BY "LaravelPassword1!"; -- 创建一个对应的用户
    🎜 Der Eigentümer der Socket-Datei ist der Benutzer „nginx“, der Berechtigungsmodus ist 660, kommentieren Sie alle Werte aus und ändern Sie sie. 🎜
    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    sudo mv composer.phar /usr/local/bin/composer
    🎜Für Umgebungsvariablen kommentieren Sie diese Zeilen aus und legen Sie den Wert fest. 🎜
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    🎜Speichern Sie die Datei und beenden Sie die vim-Bearbeitung. Starten Sie dann php-fpm und lassen Sie es beim Start laufen. 🎜
    # remi
    sudo systemctl start php72-php-fpm.service
    sudo systemctl enable php72-php-fpm.service
    
    # webtatic
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
    使用remi仓库的时候启动的时候可能会报错,由于php-fpm.sock文件目录不存在,执行命令:sudo mkdir -p /run/php-fpm/remi-php72后在启动就没有问题了。

    检查php-fpm

    php-fpm在套接字文件下运行,使用以下命令检查。

    sudo netstat -pl | grep php-fpm.sock

    安装MySQL

    可以使用MariaDB或PostgreSQL作为Laravel项目的数据库存储。 这里使用MySQL数据库服务器进行安装。 它在CentOS存储库中可用, 使用下面的yum命令安装MySQL-server。

    下载并安装MySQL5.7

    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    rpm -ivh mysql57-community-release-el7-11.noarch.rpm
    sudo yum update
    sudo yum install -y mysql-server
    执行上面的命令进行MySQL的安装,在安装的过程中两次按Y键,在同意后安装完成。

    启动MySQL

    使用下面的命令启动mysql并使其随系统启动而启动。

    sudo systemctl start mysqld
    sudo systemctl enable mysqld

    测试MySQL

    MySQL已经启动并在3306端口上运行,可以使用netstat命令检查。

    netstat -plntu | grep 3306 # 检查端口
    ps aux|grep mysqld # 检查进程

    配置MySQL

    获取安装时初始化密码

    sudo grep 'temporary password' /var/log/mysqld.log

    登录并重设root账户密码

    mysql -uroot -p # 回车输入上面获取到的密码
    
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword1!';

    创建一个测试数据库和测试用户

    CREATE DATABASE laravel; -- 创建一个laravel数据库
    GRANT ALL PRIVILEGES ON laravel.* TO laravel@localhost IDENTIFIED BY "LaravelPassword1!"; -- 创建一个对应的用户

    至此,MySQL的安装和配置已经完成。

    安装PHP Composer

    PHP composer是PHP语言的包管理器。 它创建于2011年,灵感来自于Node.js的“npm”和Ruby的“bundler”安装程序。 使用curl命令安装composer。

    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    sudo mv composer.phar /usr/local/bin/composer

    配置Packagist国内镜像

    composer config -g repo.packagist composer https://packagist.phpcomposer.com

    安装完成后,尝试使用“composer”命令,您将看到以下结果。

    composer
    composer config -g repo.packagist -l # 查看配置的Packagist国内镜像

    至此,PHP Composer已经正常安装在了CentOS系统上。

    NodeJS + NPM + Yarn

    sudo yum -y install nodejs npm
    curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
    sudo yum install -y yarn

    安装Laravel测试LNMP

    现在进入到 laravel 的根目录'/var/www/laravel'。

    sudo mkdir -p /var/www/laravel && cd /var/www/laravel

    Laravel提供了两种在服务器上安装框架的方法。可以用Laravel安装程序安装Laravel,也可以用PHP composer安装它。在这里我将通过使用composer命令创建一个新项目来安装Laravel,运行下面的命令来安装Laravel。

    composer create-project laravel/laravel .

    等待Laravel安装完成。 这可能需要一些时间。

    安装完成后,将Laravel Web根目录的所有者更改为“nginx”用户,并使用以下命令将存储目录的权限更改为755。

    chown -R nginx:root /var/www/laravel
    chmod 755 -R /var/www/laravel/storage

    至此,Laravel安装已经完成。

    为Larvel配置Nginx配置

    在这个步骤中,将为 Laravel 项目创建 Nginx 虚拟主机配置。 我们需要为此 Laravel 定义web根目录/var/www/laravel/public

    接下来,cd到 Nginx 目录,并在conf.d目录中创建一个新的虚拟主机配置文件laravel.conf

    cd /etc/nginx
    vim conf.d/laravel.conf

    将下面的配置粘贴到文件中:

    server {
        listen 80;
    
        # Log files for Debugging
        access_log /var/log/nginx/laravel-access.log;
        error_log /var/log/nginx/laravel-error.log;
    
        # Webroot Directory for Laravel project
        root /var/www/laravel/public;
        index index.php index.html index.htm;
    
        # Your Domain Name
        server_name laravel.domain.io;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        # PHP-FPM Configuration Nginx
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # webtatic
            fastcgi_pass unix:/run/php-fpm/remi-php72/php-fpm.sock; # remi
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    
        location ~ /\.ht {
            deny all;
        }
    }

    保存文件并退出vim编辑器。

    测试并重启Nginx

    测试nginx配置,确保没有错误,然后重新启动nginx服务。

    nginx -t # 测试配置是否正确
    sudo systemctl restart nginx # 重启Nginx

    至此,Laravel的nginx虚拟主机配置已经完成。

    测试Laravel

    打开浏览器并输入服务器配置的Laravel URL,在Nginx虚拟主机文件中定义了Laravel的域名。 我的是laravel.domain.io

    访问域名时,您将看到Laravel框架的首页。

    CentOS 7上的Nginx、PHP-FPM、MySQL、Composer、NodeJS、Yarn和Laravel安装已经成功。

    测试数据库和缓存

    # 我修改了REDIS_CLIENT=predis,需要先执行以下命令安装依赖包
    composer require predis/predis
    
    # 生成并修改.env,重点是DB和REDIS部分
    /data/www/laravel/.env
    
    APP_NAME=Laravel
    APP_ENV=local
    APP_KEY=base64:6+QhPUSBPIjI7LZi93aHdHKNWDWVmrI4mtQ3UnVLMV0=
    APP_DEBUG=true
    APP_URL=http://localhost
    
    LOG_CHANNEL=stack
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=laravel
    DB_USERNAME=laravel
    DB_PASSWORD=LaravelPassword1!
    
    BROADCAST_DRIVER=log
    #CACHE_DRIVER=file
    CACHE_DRIVER=redis
    QUEUE_CONNECTION=sync
    #SESSION_DRIVER=file
    SESSION_DRIVER=redis
    SESSION_LIFETIME=120
    
    REDIS_CLIENT=predis
    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379
    
    MAIL_MAILER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    MAIL_FROM_ADDRESS=null
    MAIL_FROM_NAME="${APP_NAME}"
    
    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_DEFAULT_REGION=us-east-1
    AWS_BUCKET=
    
    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    PUSHER_APP_CLUSTER=mt1
    
    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
    
    # 修改后需要测试mysql和redis时分别执行以下两个命令完成验证
    php artisan migrate
    php artisan cache:clear

    问题记录

    执行composer create-project laravel/laravel .出现“proc_open(): fork failed - Cannot allocate memory”

    原因通常是禁用了swap且内存太小导致,比较快速的解决方案是增加swap

    dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
    mkswap /var/swap.1
    swapon /var/swap.1

    访问laravel.domain.io出现502 error code

    原因建议优先检查/var/log/nginx/laravel-error.log日志,可能的情况有

    1. /var/wwww/laravel路径的权限不正确导致permission denied,注意不同laravel版本间对子目录权限的要求
    2. /etc/nginx/conf.d/laravel.conf 配置文件fastcgi_pass设置有误
    3. php-fpm进程未正常启动
  • Das obige ist der detaillierte Inhalt vonWie installiere und konfiguriere ich Laravel Schritt für Schritt in CentOS7?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen