目錄
#前言
更新歷史
軟體版本
更多詳細介紹查看這裡:EPEl
安裝Nginx
多重版本安裝
就可以了。
检查php-fpm
安装MySQL
下载并安装MySQL5.7
启动MySQL
测试MySQL
配置MySQL
安装PHP Composer
NodeJS + NPM + Yarn
安装Laravel测试LNMP
为Larvel配置Nginx配置
测试并重启Nginx
测试Laravel
测试数据库和缓存
问题记录
首頁 php框架 Laravel CentOS7如何一步步安裝設定Laravel?

CentOS7如何一步步安裝設定Laravel?

Oct 25, 2021 pm 03:59 PM
centos laravel lnmp

以下由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 release 7.x
  • #nginx 1.16. x
  • MySQL 5.7.x
  • php-fpm 7.2.x
  • Composer 1.x
  • laravel 7.x
  • nodejs v6.x
  • #laravel 7.x
  • nodejs v6.x
npm 3.x

yarn 1.x

升級EPEL倉庫

EPEL (Extra Packages for Enterprise Linux,企業版Linux的額外軟體包) 是Fedora小組維護的一個軟體倉庫項目,為RHEL/CentOS提供他們預設不提供的軟體包。這個來源相容於RHEL及像CentOS和Scientific Linux這樣的衍生版本。

更多詳細介紹查看這裡:EPEl

我們需要Nginx安裝的EPEL倉庫,因為官方CentOS倉庫中不存在Nginx軟體包。

sudo yum -y install epel-release
登入後複製

安裝Nginx

使用LNMP環境下執行Laravel。 Nginx是其中的Web伺服器部分,可以從EPEL倉庫安裝。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"># 安装Nginx sudo yum -y install nginx # 安装完成后,启动Nginx并将其添加到系统自启动 sudo systemctl start nginx sudo systemctl enable nginx # Nginx默认运行在80端口,使用下面的netstat命令检查。 netstat -plntu | grep 80</pre><div class="contentsignin">登入後複製</div></div>安裝php-fpm在CentOS基礎庫中不存在PHP 7.2,我們需要從名為

remi

webtatic
的第三方倉庫中安裝它。

方式一 remi倉庫(建議)

之所以推薦它是因為它非常方便切換PHP的版本。 更多倉庫相關資訊參考這裡。

安裝<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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 # 建立软连接方便命令行使用</pre><div class="contentsignin">登入後複製</div></div>執行完上面的指令後,CentOS系統上已經安裝了PHP 7.2, 安裝好的

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 # 建立软连接方便命令行使用
登入後複製
方式二 webtatic倉庫

安裝
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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</pre><div class="contentsignin">登入後複製</div></div>其他版本下載可以查看這裡: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

就可以了。

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倉庫安裝的PHP已成功卸載。 設定php-fpm透過使用vim編輯設定檔php.ini來設定PHP,remi倉庫方式安裝的主設定檔存放位置在/etc/opt/remi/php72/php.ini

webtatic倉庫

方式安裝的主設定檔存放位置在

/etc/php.ini

在檔案中找出如下行,取消它的行註解並將值改為0。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cgi.fix_pathinfo=0</pre><div class="contentsignin">登入後複製</div></div>儲存檔案並退出編輯器。 編輯php-fpm檔案www.confremi倉庫方式安裝的設定檔存放位置在/etc/opt /remi/php72/php-fpm.d/www.conf

webtatic倉庫

方式安裝的設定檔存放位置在/etc/php-fpm.d/www.confphp-fpm將在用戶和群組nginx下運行,將下面兩行的值更改為

nginx

,這裡用戶和用戶群組請保持與Nginx的使用者和使用者群組一致。

# 用户和组保持和Nginx一致,使用命令 egrep '^(user|group)' /etc/nginx/nginx.conf 查看nginx进程的用户
user = nginx
group = nginx
登入後複製
php-fpm將在套接字檔案下運行,而不是使用伺服器端口,remi倉庫方式安裝的PHP可以將值改為/run/php-fpm/remi-php72/php-fpm.sock

webtatic倉庫

方式安裝的PHP請將'listen'值改為路徑

/run/php- fpm/php-fpm.sock

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

# webtatic
listen = /run/php-fpm/php-fpm.sock
登入後複製

套接字檔案擁有者將是「nginx」用戶,權限模式為660,取消註解並變更所有值。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">listen.owner = nginx listen.group = nginx listen.mode  = 0660</pre><div class="contentsignin">登入後複製</div></div>對於環境變量,取消註解這些行並設定值。

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Laravel和CodeIgniter的最新版本對比 Laravel和CodeIgniter的最新版本對比 Jun 05, 2024 pm 05:29 PM

Laravel9和CodeIgniter4的最新版本提供了更新的功能和改進。 Laravel9採用MVC架構,提供資料庫遷移、驗證及模板引擎等功能。 CodeIgniter4採用HMVC架構,提供路由、ORM和快取。在性能方面,Laravel9的基於服務提供者設計模式和CodeIgniter4的輕量級框架使其具有出色的性能。在實際應用中,Laravel9適用於需要靈活性和強大功能的複雜項目,而CodeIgniter4適用於快速開發和小型應用程式。

Laravel 和 CodeIgniter 中資料處理能力的比較如何? Laravel 和 CodeIgniter 中資料處理能力的比較如何? Jun 01, 2024 pm 01:34 PM

比較Laravel和CodeIgniter的資料處理能力:ORM:Laravel使用EloquentORM,提供類別物件關係映射,而CodeIgniter使用ActiveRecord,將資料庫模型表示為PHP類別的子類別。查詢建構器:Laravel具有靈活的鍊式查詢API,而CodeIgniter的查詢建構器更簡單,基於陣列。資料驗證:Laravel提供了一個Validator類,支援自訂驗證規則,而CodeIgniter的驗證功能內建較少,需要手動編碼自訂規則。實戰案例:用戶註冊範例展示了Lar

Laravel - Artisan 指令 Laravel - Artisan 指令 Aug 27, 2024 am 10:51 AM

Laravel - Artisan 指令 - Laravel 5.7 提供了處理和測試新指令的新方法。它包括測試 artisan 命令的新功能,下面提到了演示?

Laravel 和 CodeIgniter 對於初學者來說哪一個比較友善? Laravel 和 CodeIgniter 對於初學者來說哪一個比較友善? Jun 05, 2024 pm 07:50 PM

對於初學者來說,CodeIgniter的學習曲線更平緩,功能較少,但涵蓋了基本需求。 Laravel提供了更廣泛的功能集,但學習曲線稍陡。在性能方面,Laravel和CodeIgniter都表現出色。 Laravel有更廣泛的文件和活躍的社群支持,而CodeIgniter更簡單、輕量級,具有強大的安全功能。在建立部落格應用程式的實戰案例中,Laravel的EloquentORM簡化了資料操作,而CodeIgniter需要更多的手動配置。

Laravel和CodeIgniter:哪種框架更適合大型專案? Laravel和CodeIgniter:哪種框架更適合大型專案? Jun 04, 2024 am 09:09 AM

在選擇大型專案框架時,Laravel和CodeIgniter各有優勢。 Laravel針對企業級應用程式而設計,提供模組化設計、相依性注入和強大的功能集。 CodeIgniter是一款輕量級框架,更適合小型到中型項目,強調速度和易用性。對於具有複雜需求和大量用戶的大型項目,Laravel的強大功能和可擴展性更為合適。而對於簡單專案或資源有限的情況下,CodeIgniter的輕量級和快速開發能力則較為理想。

Laravel和CodeIgniter:哪種框架比較適合小型專案? Laravel和CodeIgniter:哪種框架比較適合小型專案? Jun 04, 2024 pm 05:29 PM

對於小型項目,Laravel適用於大型項目,需要強大的功能和安全性。 CodeIgniter適用於非常小的項目,需要輕量級和易用性。

Laravel 和 CodeIgniter 的模板引擎哪一個比較好? Laravel 和 CodeIgniter 的模板引擎哪一個比較好? Jun 03, 2024 am 11:30 AM

比較了Laravel的Blade和CodeIgniter的Twig模板引擎,根據專案需求和個人偏好進行選擇:Blade基於MVC語法,鼓勵良好程式碼組織和模板繼承。 Twig是第三方函式庫,提供靈活語法、強大過濾器、擴充支援和安全沙箱。

Laravel - 分頁自訂 Laravel - 分頁自訂 Aug 27, 2024 am 10:51 AM

Laravel - 分頁自訂 - Laravel 包含分頁功能,可協助使用者或開發人員包含分頁功能。 Laravel 分頁器與查詢產生器和 Eloquent ORM 整合。自動分頁方法

See all articles