搜尋
首頁php框架LaravelCentOS7如何一步步安裝設定Laravel?

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

Oct 25, 2021 pm 03:59 PM
centoslaravellnmp

以下由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倉庫安裝。 <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>安裝php-fpm在CentOS基礎庫中不存在PHP 7.2,我們需要從名為

remi

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

方式一 remi倉庫(建議)

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

安裝<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>執行完上面的指令後,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倉庫

安裝
<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>其他版本下載可以查看這裡: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。 <pre class="brush:php;toolbar:false">cgi.fix_pathinfo=0</pre>儲存檔案並退出編輯器。 編輯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,取消註解並變更所有值。 <pre class="brush:php;toolbar:false">listen.owner = nginx listen.group = nginx listen.mode  = 0660</pre>對於環境變量,取消註解這些行並設定值。

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

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
Laravel的後端功能:數據庫,邏輯等等Laravel的後端功能:數據庫,邏輯等等Apr 14, 2025 am 12:04 AM

Laravel在後端開發中表現強大,通過EloquentORM簡化數據庫操作,控制器和服務類處理業務邏輯,並提供隊列、事件等功能。 1)EloquentORM通過模型映射數據庫表,簡化查詢。 2)業務邏輯在控制器和服務類中處理,提高模塊化和可維護性。 3)其他功能如隊列系統幫助處理複雜需求。

Laravel的多功能性:從簡單站點到復雜系統Laravel的多功能性:從簡單站點到復雜系統Apr 13, 2025 am 12:13 AM

選擇Laravel開發項目是因為其靈活性和強大功能適應不同規模和復雜度的需求。 Laravel提供路由系統、EloquentORM、Artisan命令行等功能,支持從簡單博客到復雜企業級系統的開發。

Laravel(PHP)與Python:開發環境和生態系統Laravel(PHP)與Python:開發環境和生態系統Apr 12, 2025 am 12:10 AM

Laravel和Python在開發環境和生態系統上的對比如下:1.Laravel的開發環境簡單,僅需PHP和Composer,提供了豐富的擴展包如LaravelForge,但擴展包維護可能不及時。 2.Python的開發環境也簡單,僅需Python和pip,生態系統龐大,涵蓋多個領域,但版本和依賴管理可能複雜。

Laravel和後端:為Web應用程序提供動力邏輯Laravel和後端:為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

PHP和Laravel不是直接可比的,因為Laravel是基於PHP的框架。 1.PHP適合小型項目或快速原型開發,因其簡單直接。 2.Laravel適合大型項目或高效開發,因其提供豐富功能和工具,但學習曲線較陡,性能可能不如純PHP。

Laravel是前端還是後端?Laravel是前端還是後端?Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp,設計ForweBapplicationDevelopment.itfocusessonserver-sideLogic,databasemagemention和Applicationstructure和CanBeintegratedWithFrontendTechnologiesLikeLikeVue.jsorreActeReacterVue.jsorreActforforfull-stackDevefloct。

See all articles

熱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尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境