Centos7下如何搭建Laravel环境(非docker)

                                                                               

之前一直用docker搭建服务器运行环境,最近有个朋友来找我在服务器上手工搭建个php环境,搞了大半天,快玩不转了。

最近呢有个朋友找我帮忙搭建个PHP的环境,本来想让他直接用docker的。但是他买的是聚石塔的服务器,那边不给数据库开外网,只能内网去访问。用docker搭载宿主机的网络去访问的时候老是时不时的找不到地址,整个服务老是中断,无奈只能迁出来,一个个的安装重新搭建环境。我也是菜鸟一个折腾了半天总算搞定了。

准备工作

更换阿里源

服务器安装的centos7系统,先来换下阿里源。

$ cd /etc/yum.repos.d/$ cp CentOS-Base.repo CentOS-Base.repo.bak$ wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo$ yum clean all$ yum update$ yum makecache# 查看已安装的PHP,有的话rpm -e卸载$ yum list installed | grep php

安装EPEL

EPEL(Extra Packages for Enterprise Linux)是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目。就是一个高质量的白嫖软件源。

安装后可以使用 yum install packageName,即可安装很多以前需要编译安装的软件、常用的软件或一些比较流行的软件,比如Nginx之类。

$ yum install epel-release

安装REMI源

CentOS下除了EPEL源之外还有REMI的源,REMI源保证了软件的最新版,但是不保证软件是稳定版。主要拿来安装最新的PHP版本。

$ rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm

安装PHP7+

选择PHP版本

先查询下可以安装的PHP版本

$ yum repolist all | grep php * remi-php72: mirrors.tuna.tsinghua.edu.cnremi-php70                          Remi's PHP 7.0 RPM repositor disabledremi-php70-debuginfo/x86_64         Remi's PHP 7.0 RPM repositor disabledremi-php70-test                     Remi's PHP 7.0 test RPM repo disabledremi-php70-test-debuginfo/x86_64    Remi's PHP 7.0 test RPM repo disabledremi-php71                          Remi's PHP 7.1 RPM repositor disabledremi-php71-debuginfo/x86_64         Remi's PHP 7.1 RPM repositor disabledremi-php71-test                     Remi's PHP 7.1 test RPM repo disabledremi-php71-test-debuginfo/x86_64    Remi's PHP 7.1 test RPM repo disabled!remi-php72                         Remi's PHP 7.2 RPM repositor enabled:    412remi-php72-debuginfo/x86_64         Remi's PHP 7.2 RPM repositor disabledremi-php72-test                     Remi's PHP 7.2 test RPM repo disabledremi-php72-test-debuginfo/x86_64    Remi's PHP 7.2 test RPM repo disabledremi-php73                          Remi's PHP 7.3 RPM repositor disabledremi-php73-debuginfo/x86_64         Remi's PHP 7.3 RPM repositor disabledremi-php73-test                     Remi's PHP 7.3 test RPM repo disabledremi-php73-test-debuginfo/x86_64    Remi's PHP 7.3 test RPM repo disabledremi-php74                          Remi's PHP 7.4 RPM repositor disabledremi-php74-debuginfo/x86_64         Remi's PHP 7.4 RPM repositor disabledremi-php74-test                     Remi's PHP 7.4 test RPM repo disabledremi-php74-test-debuginfo/x86_64    Remi's PHP 7.4 test RPM repo disabledremi-php80                          Remi's PHP 8.0 RPM repositor disabledremi-php80-debuginfo/x86_64         Remi's PHP 8.0 RPM repositor disabledremi-php80-test                     Remi's PHP 8.0 test RPM repo disabledremi-php80-test-debuginfo/x86_64    Remi's PHP 8.0 test RPM repo disabled

设置默认安装的版本,这里我选择了php7.2

$ yum-config-manager --enable remi-php72# 注意 如果提示 yum-config-manager 找不到的话需要先安装下 yum-utils,在来执行上面的配置$ yum -y install yum-utils# 最后选择自己想安装的PHP版本即可$ yum -y install php$ php -v$ php -m

安装PHP扩展

# 查找php对应版本的扩展,我这里是7.2就写的php72-php$ yum search php72-php * base: mirrors.cloud.aliyuncs.com * extras: mirrors.cloud.aliyuncs.com * remi-php72: mirror.innosol.asia * remi-safe: mirror.innosol.asia * updates: mirrors.cloud.aliyuncs.com============================================================================================================= N/S matched: php72-php ==============================================================================================================php72-php-pecl-handlebars-devel.x86_64 : php72-php-pecl-handlebars developer files (header)php72-php-pecl-http-message-devel.x86_64 : php72-php-pecl-http-message developer files (headers)php72-php-pecl-propro-devel.x86_64 : php72-php-pecl-propro developer files (header)php72-php-pecl-psr-devel.x86_64 : php72-php-pecl-psr developer files (header)php72-php-pecl-raphf-devel.x86_64 : php72-php-pecl-raphf developer files (header)php72-php-pecl-swoole-devel.x86_64 : php72-php-pecl-swoole developer files (header)...# 安装扩展,注意扩展名不需要带上PHP的版本号,下面是我在Laravel里需要的一些扩展$ yum -y install php-fpm php-bcmath php-mbstring php-mysqli php-mysqlnd php-pdo php-pdo_mysql php-posix php-shmop php-simplexml php-sodium php-xml php-xmlreader php-xmlwriter php-xsl php-zip php-opcache# 然后查看扩展是否安装成功$ php -m

PHP-FPM

# 启动$ systemctl start php-fpm# 停止or重启$ systemctl stop php-fpm$ systemctl restart php-fpm# 重载$ systemctl reload php-fpm# 设置开机启动$ systemctl enable php-fpm# 禁止开机启动$ systemctl disable php-pfm

最后查看下PHP-FPM的进程

$ ps aux | grep phproot      1728  0.0  0.1 455280 12780 ?        Ss   Sep07   0:01 php-fpm: master process (/etc/php-fpm.conf)apache    1998  0.0  0.6 558512 48084 ?        S    Sep07   0:15 php-fpm: pool wwwapache    2873  0.0  0.4 542200 36012 ?        S    Sep07   0:19 php-fpm: pool wwwapache    2874  0.0  0.3 536164 29212 ?        S    Sep07   0:19 php-fpm: pool wwwapache    2875  0.0  0.4 542200 34832 ?        S    Sep07   0:21 php-fpm: pool www

也可以通过 service php-fpm status 查看下启动状态

配置文件

php-fpm.conf 文件默认在 /etc/php-fpm.conf

php.ini 文件默认在 /etc/php.ini

php.ini文件里有一些参数需要修改,编辑进入搜索 max 带这个关键字的一些配置自己看描述修改吧,也就是一些限制内存啦,文件大小啦,执行时间啦之类的。

如知AI笔记 如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记 27 查看详情 如知AI笔记

修改完 systemctl reload php-fpm 执行下即可。

安装Nginx

# 安装Nginx最新源$ yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm$ yum repolist enabled | grep "nginx*"# 安装nginx$ yum -y install nginx# 启动nginx$ service nginx start# 测试nginx配置文件是否正常$ nginx -t# 平滑加载$ nginx -s reload# 设置nginx服务器开机自启动$ systemctl enable nginx.service# 检查开机自动是否设置成功$ systemctl list-dependencies | grep nginx

如果遇到nginx重启之类提示说PID为空或者找不到的,可以看下是否有残留进行杀掉,然后 nginx -c /etc/nginx/nginx.conf 指定好配置文件。

可以通过 service nginx status 查看nginx的状态。

Nginx的默认配置目录都在 /etc/nginx/ 下,默认错误日志在 /var/log/nginx/error.log,主要服务器配置文件在 /etc/nginx/conf.d/*.conf

下面是一份简单的Server配置, 做了Https的301 跳转,不需要的话就把ssl相关部分去掉,301跳转去掉即可。

server {    # 这里做了Https的相关配置    listen 443 ssl http2;    server_name your_server_name;    # 项目访问根目录    root /xxx/www/public;    # ssl证书相关    ssl_certificate  /xxx/certs/xxx.pem;    ssl_certificate_key /xxx/certs/xxx.key;    ssl_session_timeout 5m;    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    ssl_prefer_server_ciphers on;        # 添加几条有关安全的响应头;与 Google+ 的配置类似,详情参见文末。    add_header X-Frame-Options "SAMEORIGIN";    add_header X-XSS-Protection "1; mode=block";    add_header X-Content-Type-Options "nosniff";    # 站点默认页面;可指定多个,将顺序查找。    # 例如,访问 http://example.com/ Nginx 将首先尝试「站点根目录/index.html」是否存在,不存在则继续尝试「站点根目录/index.htm」,以此类推...    index index.html index.htm index.php;    # 指定字符集为 UTF-8    charset utf-8;    # Laravel 默认重写规则;删除将导致 Laravel 路由失效且 Nginx 响应 404。    location / {        try_files $uri $uri/ /index.php?$query_string;    }    # 关闭 [/favicon.ico] 和 [/robots.txt] 的访问日志。    # 并且即使它们不存在,也不写入错误日志。    location = /favicon.ico { access_log off; log_not_found off; }    location = /robots.txt  { access_log off; log_not_found off; }    # 将 [404] 错误交给 [/index.php] 处理,表示由 Laravel 渲染美观的错误页面。    error_page 404 /index.php;    # URI 符合正则表达式 [.php$] 的请求将进入此段配置    location ~ .php$ {        # 配置 FastCGI 服务地址,可以为 IP:端口,也可以为 Unix socket。        fastcgi_pass 127.0.0.1:9000;        # 配置 FastCGI 的主页为 index.php。        fastcgi_index index.php;        # 配置 FastCGI 参数 SCRIPT_FILENAME 为 $realpath_root$fastcgi_script_name。        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;        # 引用更多默认的 FastCGI 参数。        include fastcgi_params;    }    # 通俗地说,以上配置将所有 URI 以 .php 结尾的请求,全部交给 PHP-FPM 处理。    # 除符合正则表达式 [/.(?!well-known).*] 之外的 URI,全部拒绝访问    # 也就是说,拒绝公开以 [.] 开头的目录,[.well-known] 除外    location ~ /.(?!well-known).* {        deny all;    }}server {    listen 80;    server_name your_server_name;    return 301 https://your_server_name$request_uri;}

最后重启下nginx让配置生效 nginx -s reload, 如果中间有问题记得查看下nginx的错误日志文件,很有用,基本坑都会记录在里面 /var/log/nginx/error.log

安装Mysql

因为朋友这边是使用的聚石塔的RDS,其实是不需要安装数据库的了,不过还是简单写下Mysql的安装把,这里使用Mysql5.7为例,想要安装Mysql8的自行换下。

# 安装mysql源$ yum -y localinstall  http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm$ yum repolist enabled | grep "mysql.*-community.*"# 安装Mysql$ yum -y install mysql-community-server install mysql-community-devel# 启动mysql$ service mysqld start# 检查mysql启动是否正常$ service mysqld status 或者 ps -ef | grep mysql# 设置mysqld服务开机自启动$ systemctl enable mysqld.service# 使用yum安装Mysql,启动会系统会自动生成一个随机的数据库密码,需要修改下# 查看mysql的随机密码$ grep 'temporary password' /var/log/mysqld.log# 终端登录Mysql$ mysql -hlocalhost -u root -p xxx# 修改密码$ ALTER USER 'root'@'localhost' IDENTIFIED BY 'Yourpassword';

Laravel权限

安装完 Laravel 后,你可能需要给这两个文件配置读写权限:storage 目录和 bootstrap/cache 目录应该允许 Web 服务器写入。

这里需要给PHP-FPM运行角色的权限。

$ ps aux | grep php-fpmroot      1728  0.0  0.1 455280 12780 ?        Ss   Sep07   0:01 php-fpm: master process (/etc/php-fpm.conf)apache    1998  0.0  0.4 542128 31616 ?        S    Sep07   0:17 php-fpm: pool wwwapache    2873  0.0  0.5 552440 46508 ?        S    Sep07   0:22 php-fpm: pool wwwapache    2874  0.0  0.6 560740 52748 ?        S    Sep07   0:22 php-fpm: pool www...

可以看到我这里子进程是一个 apache 用户在执行,所以需要把上面2个目录改成 apache(我也不知道这个鬼用户那里创建来的,可能默认安装php-fpm的时候创建的吧…)。

找到对应的目录

# 暴力一些$ chown -R apache:apache /xxx/storage/$ chown -R apache:apache /xxx/bootstrap/cache/# 在给个755权限$ chmod -R 755 /xxx/storage/$ chmod -R 755 /xxx/bootstrap/cache/

相关推荐:最新的五个Laravel视频教程                                              

以上就是Centos7下如何搭建Laravel环境(非docker)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/346013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 20:25:40
下一篇 2025年11月5日 20:27:07

相关推荐

  • GolangWeb表单验证与输入校验实践

    Golang无内置表单验证因遵循“显式优于隐式”哲学,需依赖结构体绑定与第三方库(如validator)实现声明式验证,并结合手动清理确保安全;通过分离绑定、验证与清理步骤,提升代码可维护性,同时利用ValidationErrors返回具体错误信息以优化用户体验,配合HTML转义、参数化查询等手段完…

    2025年12月15日 好文分享
    000
  • 现代软件开发中的语言选择策略:PHP、GoLang与多语言栈的构建

    本文探讨了在Web、桌面及高性能应用开发中,如何权衡PHP、GoLang等编程语言的选择。面对快速开发与极致性能的需求,没有单一“完美”语言。教程强调应充分利用PHP在Web领域的现有优势,并通过C/C++等语言弥补性能短板,同时根据具体平台(桌面、移动)选择最合适的工具,构建灵活高效的多语言技能栈…

    2025年12月15日
    000
  • PHP与Go-lang抉择:构建高效多平台应用的语言策略

    在编程语言选择上,没有一劳永逸的“完美”方案。本文探讨了在Web开发中继续利用PHP的优势,并结合C/C++处理性能瓶颈的策略。同时,针对桌面和移动应用,提出了基于特定平台和性能需求的语言选择建议,强调采用多语言、多技术栈的综合方法来应对多样化的开发挑战。 Web开发:PHP的持续价值与性能优化 对…

    2025年12月15日
    000
  • Laravel在Debian上如何备份数据

    在debian系统上如何备份laravel项目的数据?以下是详细的步骤和脚本示例: 数据库备份:根据你使用的数据库类型,使用mysqldump或pg_dump进行备份。存储目录备份:将Laravel的storage目录,包括文件、缓存、日志等,备份到安全位置。环境配置文件备份:确保备份.env文件,…

    2025年12月15日
    000
  • EMQX、Go-Gin设备通信:认证、指令发送及业务处理如何实现?

    EMQX、Go-Gin 与物联网设备通信:安全机制与业务流程 本文阐述如何利用 EMQX MQTT 服务器和 Go-Gin 框架构建高效安全的物联网设备通信系统,涵盖设备认证、指令分发和业务逻辑处理三个关键环节。 一、统一认证机制:EMQX 与 HTTP API 的 JWT Token 共享 EMQ…

    2025年12月15日
    000
  • EMQX与Golang-Gin集成:如何实现高效安全的MQTT认证及业务处理?

    EMQX和Golang-Gin框架集成:实现高效安全的MQTT认证与业务逻辑处理 本文阐述如何结合EMQX MQTT消息服务器和Golang-Gin框架,构建高效安全的MQTT认证和业务处理流程。我们将围绕三个核心问题展开:如何利用JWT令牌在EMQX和HTTP服务间实现统一认证?如何向EMQX中的…

    2025年12月15日
    000
  • php中的codeIgniter框架是什么?

    CodeIgniter 因轻量、易上手、高效和灵活被广泛使用,适合初学者和小型项目。其详细文档和简洁语法降低学习门槛,无需复杂工具即可运行;核心小、加载快,资源消耗低;支持按需使用组件,不强制结构;内置数据库操作、表单验证等功能,开箱即用;采用 MVC 架构,分离数据、界面与逻辑,提升可维护性;常用…

    2025年12月14日
    000
  • php中Larave框架中间件是什么?

    中间件是Laravel中用于过滤HTTP请求的机制,可在请求到达控制器前后执行逻辑。1. 可实现身份认证、权限控制、日志记录和安全防护等功能;2. Laravel内置auth、csrf等中间件,也可通过php artisan make:middleware自定义;3. 可在路由或控制器构造函数中绑定…

    2025年12月14日
    000
  • php与python建站的区别有哪些

    PHP专为Web开发设计,适合快速建站,如用WordPress搭建内容类网站;Python是通用语言,适合复杂应用及AI等扩展。1. PHP语法嵌入HTML方便,Python通过Django/Flask实现模块化开发。2. PHP生态有成熟CMS,开发效率高;Python框架功能强,适合数据处理与全…

    2025年12月14日
    000
  • 构建双服务器通信:Laravel 与 Python Flask 的异步请求处理

    本文旨在解决 Laravel 服务器和 Python Flask 服务器之间进行双向通信时,避免阻塞连接的问题。通过探讨传统 HTTP 服务器的局限性,介绍了使用异步编程模型(如 asyncio 和 aiohttp)来优化服务器性能的方法。文章将重点讲解如何在 Flask 框架中利用异步特性,以及如…

    2025年12月14日
    000
  • 使用异步请求在 Laravel 和 Flask 服务器之间进行通信

    本文档介绍了如何在 Laravel (PHP) 和 Flask (Python) 服务器之间实现非阻塞的双向请求通信。传统 HTTP 服务器的线程模型限制了并发处理能力,当一个服务器需要等待另一个服务器的响应时,会阻塞当前线程。本文将探讨使用异步编程解决此问题的方法,重点介绍如何在 Flask 中利…

    2025年12月14日
    000
  • 使用异步方式在 Laravel 和 Flask 服务器之间进行通信

    本文档介绍了如何在 Laravel 和 Python Flask 服务器之间实现非阻塞的请求通信。针对机器学习任务,Flask 服务器需要从 Laravel 服务器获取最新数据,传统同步方式会阻塞连接。本文将探讨使用异步编程解决此问题,重点介绍 asyncio 和 aiohttp,并提供示例代码和注…

    2025年12月14日
    000
  • 实现服务器间非阻塞通信:Python Flask与Laravel的异步交互策略

    本文探讨了在Python Flask和Laravel服务器之间进行数据交互时,如何避免传统阻塞式请求导致的性能瓶颈。核心解决方案是采用异步I/O模型,特别是利用Python的asyncio和aiohttp库,或支持异步的Web框架(如Flask 3.0+或Starlette),以实现服务器线程在等待…

    2025年12月14日
    000
  • 使用异步请求在 Laravel 和 Flask 服务器间进行通信

    本文探讨了如何在 Laravel 和 Python Flask 服务器之间实现非阻塞的请求通信。传统的 HTTP 服务器模型在处理请求时会阻塞线程,影响性能。本文介绍了两种解决方案:使用多线程/进程,以及采用异步服务器架构。重点讲解了如何利用 asyncio 和 aiohttp 等库,将 Flask…

    2025年12月14日
    000
  • 如何进行数据库迁移(Migration)?

    数据库迁移的核心理念是“结构演进的版本控制”,即通过版本化、可追踪、可回滚的方式管理数据库Schema变更,确保团队协作中数据库结构的一致性。它关注的是表结构、索引、字段等“骨架”的变化,如添加字段或修改列类型,强调与应用代码迭代同步。而数据迁移则聚焦于“血肉”,即数据内容的转移、清洗、转换,例如更…

    2025年12月14日
    000
  • Python数据库操作:必须使用对象映射吗?

    Python数据库操作:灵活选择,无需拘泥于对象映射 学习Python数据库操作时,你可能会接触到SQLAlchemy、MongoDB等ORM框架。许多初学者都会问:Python数据库操作必须依赖对象映射吗?面对数百张数据库表,难道要创建同样数量的对象文件?本文将解答这些疑问,并探讨Python数据…

    2025年12月13日
    000
  • Python数据库操作:ORM映射是唯一途径吗?

    Python数据库操作:灵活选择,ORM并非唯一 许多Python开发者在使用Flask框架和数据库驱动(如SQLAlchemy或PyMongo)时,常常纠结于数据库操作是否必须进行ORM(对象关系映射)。本文将结合代码示例,阐明Python数据库操作的灵活性和多种途径。 问题在于,SQLAlche…

    2025年12月13日
    000
  • Python数据库操作:必须使用ORM吗?

    Python数据库操作:ORM并非唯一选择 许多Python开发者习惯使用ORM(对象关系映射)工具,例如SQLAlchemy,来操作数据库。 但一个常见问题是:是否必须为每个数据库表都创建对应的ORM映射?尤其面对大量表时,这种方法显得冗余且效率不高,与PHP框架(如Laravel)直接使用SQL…

    2025年12月13日
    000
  • Flask 中如何使用装饰器模拟 Laravel 框架的中间件?

    flask 中如何使用中间件拦截请求,模拟 php laravel 框架 在 php laravel 框架中,中间件是一种在请求到达控制器之前执行的类。它允许开发者在请求处理过程中注入额外的逻辑,例如身份验证、授权或其他自定义操作。 在 python 的 flask 框架中,我们可以使用装饰器来模拟…

    2025年12月13日
    000
  • 如何在 Flask 框架中实现请求拦截?

    python 的 flask 框架实现请求拦截 要在 flask 框架中实现类似 php laravel 中的中间件对请求拦截,可以使用装饰器来实现。 以检查用户认证为例,可以编写一个 check_auth 装饰器,在每次请求处理之前执行。如果用户未通过认证,则返回 401 未授权错误。 代码示例如…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信