CentOS7에서 Laravel을 단계별로 설치하고 구성하는 방법은 무엇입니까?

藏色散人
풀어 주다: 2021-10-25 15:59:27
앞으로
2196명이 탐색했습니다.

Laravel Tutorial 칼럼에서는 CentOS7에서 LNMP를 기반으로 Laravel을 설치하고 구성하는 방법을 소개하겠습니다.

머리말

Laravel을 마지막으로 접한 것은 2015년이었습니다. 이번에는 CentOS7 LNMP(Linux, Nginx, MySQL, PHP) 기반으로 하겠습니다. 그 당시 배포의 재미를 되새기세요. 문서에는 수동 배포 단계가 기록되어 있습니다. 궁금한 사항이 있으면 메시지를 남겨주세요.

업데이트 내역

2020년 10월 21일 - 초안

원문 - https://wsgzao.github.io/post/laravel/


소프트웨어 버전

PHP 버전 7.3 이상을 선택하실 수 있으며 저는 선택합니다. 7.2 최신 버전
  • CentOS Linux 릴리스 7.v6 .x
  • npm 3. /CentOS는 기본적으로 제공하지 않는 패키지를 제공합니다. 이 소스는 RHEL 및 CentOS 및 Scientific Linux와 같은 파생 제품과 호환됩니다.
  • 자세한 내용은 여기를 참조하세요. EPEl
  • Nginx 패키지가 공식 CentOS 저장소에 없기 때문에 Nginx 설치를 위해 EPEL 저장소가 필요합니다.
sudo yum -y install epel-release
로그인 후 복사
  • Nginx 설치
  • LNMP 환경을 사용하여 Laravel을 실행하세요. Nginx는 웹 서버 부분이며 EPEL 저장소에서 설치할 수 있습니다.
  • # 安装Nginx
    sudo yum -y install nginx
    
    # 安装完成后,启动Nginx并将其添加到系统自启动
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
    # Nginx默认运行在80端口,使用下面的netstat命令检查。
    netstat -plntu | grep 80
    로그인 후 복사
  • php-fpm 설치
  • PHP 7.2는 CentOS 기본 저장소에 없으므로 remi 또는 webtatic이라는 타사 저장소에서 설치해야 합니다.
  • 방법 1 레미 웨어하우스(권장)

  • 권장 이유는 PHP 버전 전환이 매우 편리하기 때문입니다.
  • 창고 관련 자세한 내용은 여기를 참고해주세요.

    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 # 建立软连接方便命令行使用
    로그인 후 복사
    위 명령을 실행하면 CentOS 시스템에 PHP 7.2가 설치되었습니다. 설치된 php72 디렉터리는 /etc/opt/remi/php72입니다. code>에서 이 링크를 참조하여 자세한 작업 세부정보를 볼 수도 있습니다. <p></p> <h2>Uninstall</h2> <p></p> <code>remi 저장소는 여러 버전의 PHP의 공존을 지원합니다.

    꼭 필요한 경우가 아니면 제거를 권장하지 않습니다.

    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 # 删除前记得备份配置
    로그인 후 복사
    remiwebtatic的第三方仓库中安装它。

    方式一 remi仓库(推荐)

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

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

    安装

    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 # 建立软连接方便命令行使用
    로그인 후 복사

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

    卸载

    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
    로그인 후 복사

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

    多版本安装

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

    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
    로그인 후 복사

    方式二 webtatic仓库

    安装

    cgi.fix_pathinfo=0
    로그인 후 복사

    其他版本下载可以查看这里: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就可以了。
    # 用户和组保持和Nginx一致,使用命令 egrep '^(user|group)' /etc/nginx/nginx.conf 查看nginx进程的用户
    user = nginx
    group = nginx
    로그인 후 복사

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

    配置php-fpm

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

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

    # remi
    listen = /run/php-fpm/remi-php72/php-fpm.sock
    
    # webtatic
    listen = /run/php-fpm/php-fpm.sock
    로그인 후 복사

    保存文件并退出编辑器。

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

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

    listen.owner = nginx
    listen.group = nginx
    listen.mode  = 0660
    로그인 후 복사

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

    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp
    로그인 후 복사

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

    # 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
    로그인 후 복사
    로그인 후 복사

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

    sudo netstat -pl | grep php-fpm.sock
    로그인 후 복사
    로그인 후 복사

    保存文件并退出vim编辑,然后启动php-fpm이 시점에서 remi 저장소를 사용하여 설치된 PHP는 성공적으로 설치되었습니다. 제거되었습니다.

    다중 버전 설치

    🎜다른 PHP7.3 버전 설치를 예로 들어 다음 작업을 수행하여 PHP7.3 버전 설치를 완료하세요. 🎜
    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
    로그인 후 복사
    로그인 후 복사

    방법 2 webtatic Warehouse

    🎜🎜Installation🎜🎜
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    로그인 후 복사
    로그인 후 복사
    🎜다른 버전은 여기에서 다운로드할 수 있습니다: webtatic Warehouse. 🎜🎜위 명령을 실행할 때 curl: (35) Encountered end of file 오류가 계속 발생하는 경우 위의 https 프로토콜을 http로 변경해 보세요. 프로토콜은 rpm 소스를 가져옵니다. 🎜🎜위 명령을 실행하면 CentOS 시스템에 PHP 7.2가 설치되었습니다. 설치된 php72w 디렉터리는 /etc/php 아래에 있습니다. 🎜🎜🎜Uninstall🎜🎜🎜🎜참고:🎜 php5.6 또는 7.1 버전으로 변경하려면 위 yum 명령의 php72w 키워드를 php56w로 직접 바꾸세요. 또는 php71w가 트릭을 수행합니다. 🎜
    netstat -plntu | grep 3306 # 检查端口
    ps aux|grep mysqld # 检查进程
    로그인 후 복사
    로그인 후 복사
    🎜이 시점에서 webtatic 저장소를 사용하여 설치된 PHP가 성공적으로 제거되었습니다. 🎜

    php-fpm 구성

    🎜vim을 사용하여 php.ini 구성 파일을 편집하여 PHP를 구성하세요. 🎜remi Warehouse🎜에서 설치한 기본 구성 파일은 에 저장되어 있습니다. /etc/opt/remi/php72/php.ini, 🎜webtatic Warehouse🎜를 통해 설치된 기본 구성 파일은 /etc/php.ini에 저장됩니다. 🎜🎜파일에서 다음 줄을 찾아 해당 줄의 주석 처리를 해제하고 값을 0으로 변경하세요. 🎜
    sudo grep 'temporary password' /var/log/mysqld.log
    로그인 후 복사
    로그인 후 복사
    🎜파일을 저장하고 편집기를 종료하세요. 🎜🎜php-fpm 파일 www.conf를 편집하면 🎜remi Warehouse🎜에서 설치한 구성 파일이 /etc/opt/remi/php72에 저장됩니다. /php -fpm.d/www.conf, 🎜webtatic Warehouse🎜를 통해 설치된 구성 파일은 /etc/php-fpm.d/www.conf에 저장됩니다. 🎜🎜php-fpm은 사용자 및 그룹 nginx에서 실행됩니다. 다음 두 줄의 값을 nginx로 변경합니다. 여기에서 사용자 및 그룹을 확인하세요. 사용자 및 사용자 그룹을 Nginx와 일관성을 유지하세요. 🎜
    mysql -uroot -p # 回车输入上面获取到的密码
    
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword1!';
    로그인 후 복사
    로그인 후 복사
    🎜php-fpm는 서버 포트를 사용하는 대신 소켓 파일에서 실행됩니다. 🎜remi 저장소🎜를 통해 설치된 PHP는 값을 /run/php-fpm /remi-로 변경할 수 있습니다. php72/php-fpm.sock, 🎜webtatic Warehouse🎜를 통해 설치된 PHP의 경우 'listen' 값을 /run/php-fpm/php-fpm.sock 경로로 변경하세요. . 🎜
    CREATE DATABASE laravel; -- 创建一个laravel数据库
    GRANT ALL PRIVILEGES ON laravel.* TO laravel@localhost IDENTIFIED BY "LaravelPassword1!"; -- 创建一个对应的用户
    로그인 후 복사
    로그인 후 복사
    🎜 소켓 파일 소유자는 "nginx" 사용자이고 권한 모드는 660이며 주석 처리를 해제하고 모든 값을 변경합니다. 🎜
    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
    로그인 후 복사
    로그인 후 복사
    🎜환경 변수의 경우 이 줄의 주석 처리를 해제하고 값을 설정하세요. 🎜
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    로그인 후 복사
    로그인 후 복사
    🎜파일을 저장하고 vim 편집을 종료한 다음 php-fpm을 시작하고 시작 시 실행되도록 하세요. 🎜
    # 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进程未正常启动

    위 내용은 CentOS7에서 Laravel을 단계별로 설치하고 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:segmentfault.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!