検索
ホームページPHPフレームワークLaravelCentOS7 で Laravel を段階的にインストールして構成する方法は?

次のコラム Laravel チュートリアル では、CentOS7 上で LNMP をベースにした Laravel のインストールと設定について紹介します。

まえがき

私が最後に Laravel に触れたのは 2015 年でした。 CentOS7 LNMP (Linux、Nginx、MySQL、PHP) に基づいた時間 当時のデプロイメントの楽しさを追体験しましょう。ドキュメントには手動デプロイメントの手順が記録されています。Ansible 自動デプロイメント コードはリリースしません。ご質問がある場合は、お問い合わせください。相談用のメッセージを残してください。

更新履歴

2020年10月21日 - 初稿

原文- https://wsgzao.github.io/post/laravel/


ソフトウェア バージョン

php バージョン 7.3 以降を選択できます。私は最新バージョン 7.2
  • CentOS Linux リリース 7.xx
  • nginx 1.16 を選択しました。 x
  • MySQL 5.7.x
  • php-fpm 7.2.x
  • Composer 1.x
  • laravel 7.xx
  • nodejs v6.x
  • npm 3.x
  • yarn 1.xx

EPEL リポジトリのアップグレード

EPEL (Enterprise Linux 用の追加パッケージ、Enterprise Linux 用の追加ソフトウェア パッケージ) はい A Fedora チームが管理するソフトウェア ウェアハウス プロジェクト。デフォルトでは提供されないソフトウェア パッケージを RHEL/CentOS に提​​供します。このソースは、RHEL および CentOS や Scientific Linux などの派生製品と互換性があります。

詳細については、こちらを参照してください: EPEl

Nginx ソフトウェア パッケージは公式の CentOS リポジトリに存在しないため、Nginx のインストールには EPEL リポジトリが必要です。

sudo yum -y install epel-release

Nginx のインストール

LNMP 環境を使用して Laravel を実行します。 Nginx はその Web サーバー部分であり、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 remiwarehouse (推奨)

なぜ推奨するかというと、PHPのバージョンを切り替えるのに非常に便利だからです。

倉庫関連の詳細については、こちらを参照してください。

インストール

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 # 建立软连接方便命令行使用

上記のコマンドを実行すると、PHP 7.2 が CentOS システムにインストールされます。インストールされた php72 ディレクトリは ## にあります。 #/etc/opt/remi/php72、このリンクを参照して操作の詳細を確認することもできます。

アンインストール

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 # 删除前记得备份配置
この時点で、remi ウェアハウスを使用してインストールされた PHP は正常にアンインストールされました。

複数バージョンのインストール

例として別のバージョンの PHP7.3 をインストールする場合は、以下の操作を行うことで PHP7.3 バージョンのインストールが完了します。

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 # 建立软连接方便命令行使用
方法 2 webtatic ウェアハウス

インストール

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
他のバージョンをダウンロードするには、ここで確認できます: webtatic ウェアハウス。

上記のコマンド
curl: (35) Encountered end of file の実行時にエラーが発生し続ける場合は、上記の https プロトコルを ## に変更してみてください。 #httpプロトコルは rpm ソースを取得します。 上記のコマンドを実行すると、PHP 7.2 が CentOS システムにインストールされ、インストールされた php72w ディレクトリは
/etc/php

の下にあります。

アンインストール

注:
php5.6 または 7.1 バージョンに変更したい場合は、上記のキーワード を直接変更してください。 yum コマンド php72wphp56w または php71w に置き換えるだけです。 <pre class="brush:php;toolbar:false">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</pre>この時点で、Webtatic ウェアハウスを使用してインストールされた PHP は正常にアンインストールされました。

php-fpm の設定

vim を使用して設定ファイル

php.ini

を編集し、remiwarehouse# によってインストールされたメインの設定ファイルを保存して、PHP を設定します。 ## 場所は /etc/opt/remi/php72/php.ini で、webtaticwarehouse によってインストールされるメインの構成ファイルは /etc/php にあります。 iniファイル内で次の行を見つけて、その行のコメントを解除し、値を 0 に変更します。

cgi.fix_pathinfo=0
ファイルを保存し、エディタを終了します。

php-fpm

ファイル

www.confremi ウェアハウスを編集します。 設定ファイルのインストール場所は /etc/opt / です。 remi/php72/php-fpm.d/www.confwebtaticwarehouse によってインストールされた構成ファイルは /etc/php-fpm.d/www.conf# # #。 php-fpm はユーザーおよびグループ

nginx

で実行されます。次の 2 行の値を nginx に変更します。ここで、ユーザーとユーザーはグループは、Nginx のユーザーおよびユーザー グループと一致するようにしてください。 <pre class="brush:php;toolbar:false"># 用户和组保持和Nginx一致,使用命令 egrep '^(user|group)' /etc/nginx/nginx.conf 查看nginx进程的用户 user = nginx group = nginx</pre>php-fpm は、サーバー ポートを使用するのではなく、ソケット ファイルの下で実行されます。

remi ウェアハウス

にインストールされた PHP は、値を /run に変更できます/php-fpm/remi-php72/php-fpm.sock, webtaticwarehouse 「listen」値をパス /run/php-fpm/php-fpm に変更してください。靴下###。

# remi
listen = /run/php-fpm/remi-php72/php-fpm.sock

# webtatic
listen = /run/php-fpm/php-fpm.sock
ソケット ファイルの所有者は、アクセス許可モード 660 を持つ「nginx」ユーザーになり、コメントを解除してすべての値を変更します。
listen.owner = nginx
listen.group = nginx
listen.mode  = 0660
環境変数の場合は、これらの行のコメントを解除して値を設定します。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
ファイルを保存して 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 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
LaravelとThe BackEnd:Webアプリケーションロジックの電源LaravelとThe BackEnd:Webアプリケーションロジックの電源Apr 11, 2025 am 11:29 AM

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

Laravelがそんなに人気があるのはなぜですか?Laravelがそんなに人気があるのはなぜですか?Apr 02, 2025 pm 02:16 PM

Laravelの人気には、単純化された開発プロセスが含まれ、快適な開発環境を提供し、豊富な機能が提供されます。 1)Rubyonrailsの設計哲学を吸収し、PHPの柔軟性を組み合わせています。 2)Eloquentorm、Bladeテンプレートエンジンなどのツールを提供して、開発効率を向上させます。 3)そのMVCアーキテクチャと依存関係噴射メカニズムにより、コードがよりモジュール化され、テスト可能になります。 4)キャッシュシステムやベストプラクティスなどの強力なデバッグツールとパフォーマンス最適化方法を提供します。

どちらが良いのか、DjangoとLaravel?どちらが良いのか、DjangoとLaravel?Mar 28, 2025 am 10:41 AM

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

どちらがより良いPHPですか、それともLaravelですか?どちらがより良いPHPですか、それともLaravelですか?Mar 27, 2025 pm 05:31 PM

LaravelはPHPベースのフレームワークであるため、PHPとLaravelは直接匹敵するものではありません。 1.PHPは、シンプルで直接的であるため、小規模プロジェクトや迅速なプロトタイピングに適しています。 2。LARAVELは、豊富な機能とツールを提供するため、大規模なプロジェクトや効率的な開発に適していますが、急な学習曲線があり、純粋なPHPほど良くない場合があります。

Laravelはフロントエンドですか、それともバックエンドですか?Laravelはフロントエンドですか、それともバックエンドですか?Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp、designforwebapplicationdevelopment.itfocusonserver-sidelogic、databasemanagement、およびapplicationStructure、およびbueithedendtechnologiesvue.jsorreactforfull-stackdevelymentと統合されていること。

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか?Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 02:50 PM

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか?Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか?Mar 17, 2025 pm 02:47 PM

この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか?Laravelのルーティング機能を使用して、SEOに優しいURLを作成するにはどうすればよいですか?Mar 17, 2025 pm 02:43 PM

この記事では、Laravelのルーティングを使用してSEOに優しいURLを作成し、Best Practice、Canonical URL、SEO最適化のツールをカバーします。ワード数:159

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター