PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
.cn 域名,1个 12个月
简介: PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构)

一、简介


二、Composer 安装与使用

  • 在安装 Laravel 之前需要先安装 Composer, ComposerPHPPHP5.3 以上的一个依赖管理工具,你可以在自己的项目中声明所依赖的外部工具库(libraries)Composer 会安装这些依赖的库文件
  • Composer 仅仅是一个依赖关系的管理,如同在 iOS 开发中使用的 CocoaPods,前端开发中使用的 NPM
  • Composer 安装与使用 这篇文章,安装到设置好镜像源,就行了。

三、创建 Laravel 工程

  • cd 到一个项目存放文件,在执行创建项目命令。
  • 方式一
$ composer create-project --prefer-dist laravel/laravel=5.8.* laravel-test
// 新建项目
create-project
// 以压缩的方式下载
--prefer-dist
// 框架名称和版本号
laravel/laravel=5.8.*
// 项目名称
laravel-test
  • 方式二,跟上面写法不一样,但意思与结果一样。
$ composer create-project laravel/laravel your-project-name --prefer-dist "5.8.*"
  • 如果报错 zsh: no matches found: laravel/laravel=5.8.*,是因为 zsh 不兼容的问题,解决办法:
    1、编辑 ~/.zshrc
$ vim ~/.zshrc
  • 2、添加内容,然后保存
setopt no_nomatch
  • 3、重新加载 ~/.zshrc,然后就可以再次运行创建命令了。
$ source ~/.zshrc
$ composer clearcache
  • 重点:如果遇到错误先清理缓存,在试一次,如果不是缓存问题在另找解决方案

四、安装 Laravel 开发必备组件

// 对应 composer.json 中的 require,一般用这个
$ composer require barryvdh/laravel-ide-helper
// 如果只想在开发环境安装请加上 --dev,对应 composer.json 中的 require-dev
$ composer require barryvdh/laravel-ide-helper --dev
  • 2、初始化
$ php artisan ide-helper:generate
  • 如果报错 Method Illuminate\Routing\Route::get does not exist.

    解决办法:找到 /routes/web.php 文件,调整之后再次运行初始化命令
// 方式一:注销该行代码
// use Illuminate\Routing\Route;
// 方式二:导入正确的地址
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
    return view('welcome');
});
  • 运行命令后,会输出 A new helper file was written to _ide_helper.php,表示成功!
  • 3、初始化前后比较
  • 初始化前:

  • 初始化后:

  • 后续有必备插件在持续添加…

五、Laravel 项目运行(本地apachenginx

  • 方式一:命令行启动,运行窗口不能关闭
$ php artisan serve
// 或指定端口来运行
$ php artisan serve --port=8000
  • 方式二:apache启动,注意文件夹的访问权限。
  • 找到 httpd-vhosts.conf 新增一个虚拟机
<VirtualHost *:80>
  # 域名
  ServerName www.dzm.com
  # 错误日志
  ErrorLog "/Users/dengzemiao/Sites/laravel-test/logs/error.log"
  # 成功日志
  CustomLog "/Users/dengzemiao/Sites/laravel-test/logs/access.log" combined
  # 域名根目录,注意:需要链接到 laravel 项目的 public 文件夹下
  DocumentRoot "/Users/dengzemiao/Sites/laravel-test/public"
  # 域名根目录权限,注意:需要链接到 laravel 项目的 public 文件夹下
  <Directory "/Users/dengzemiao/Sites/laravel-test/public">
      # 运行列出目录(正式服务器需要去掉 Indexes)
      Options Indexes FollowSymLinks
      # 运行权限覆盖
      AllowOverride All
      # 运行所有人访问
      Require all granted
  </Directory>
</VirtualHost>
  • 重启 apache,运行 $ sudo apachectl -k restart,打开 http://www.dzm.com/(由于我是本地电脑安装的 apache 测试,非真服务器环境,本地需要修改 hosts 文件,添加上 127.0.0.1 www.dzm.com)。
  • 打开链接如果报错 failed to open stream: Permission denied,说明文件有权限问题,解决办法:直接给整个项目加上访问权限:
// 进入到项目存放目录(这个看自己的存放位置)
$ cd /usr/local/var
// 直接给整个项目添加权限
$ chmod -R 777 laravel-test
// 如果报错 `chmod: Unable to change file mode on laravel-test/storage/framework/views/eef325e700d1864421506922200f7548a0f32fd8.php: Operation not permitted`
// 我这里是直接删除了这种文件,一看估计就是个缓存文件,然后重新添加权限
  • 然后就访问成功!

  • 方式三:nginx启动,注意文件夹的访问权限。
server {
    # 监听端口
    listen 8081;
    # 主机名称
    server_name www.dzm.com;
    # 域名根目录,注意:需要链接到 laravel 项目的 public 文件夹下
    root /usr/local/var/laravel-test/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
    index index.html index.htm index.php;
    charset utf-8;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    error_page 404 /index.php;
    # 官方配置
    # location ~ \.php$ {
    #     # 本地 php 服务端口 $ sudo php-fpm
    #     # 设置监听端口
    #     fastcgi_pass 127.0.0.1:9000;
    #     # 设置 nginx 的默认首页文件
    #     fastcgi_index index.php;
    #     # 参数
    #     fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    #     # 引入配置文件
    #     include fastcgi_params;
    # }
    # 本地配置(Mac)
    location ~ \.php$ {
        # 设置监听端口
        fastcgi_pass   127.0.0.1:9000;
        # 设置 nginx 的默认首页文件
        fastcgi_index  index.php;
        # 引入 fastcgi 的配置文件
        include        fastcgi.conf;
    }
    location ~ /\.(?!well-known).* {
        deny all;
    }
    # 错误日志
    error_log /usr/local/var/laravel-test/logs/error.log;
    # 成功日志
    access_log /usr/local/var/laravel-test/logs/access.log;
}
  • 刷新 nginx 配置文件,运行 $ nginx -s reload,打开 http://www.dzm.com/ 或者 http://www.dzm.com:8081/(由于我是本地电脑安装的 nginx 测试,非真服务器环境,本地需要修改 hosts 文件,添加上 127.0.0.1 www.dzm.com)。
  • 打开链接如果报错 failed to open stream: Permission denied,可以看 方式二:apache 启动 尾部的解决方法。
  • 然后就访问成功!访问结果跟 方式二:apache 启动 一样。
  • 到这里 Laravel 创建项目到服务器 (nginx、apache) 运行就 OK 了!!

六、目录结构

  • 【重要目录】app 目录:项目的核心目录,主要用于存放核心代码,所编写的代码绝大多数也会放到这里,如控制器、模型等。
  • 控制器 存放 app/Http/Controllers
  • 模型存放 存放 app/Models,系统默认是根目录,文件夹需新建
  • bootstrap 目录Laravel 启动目录,目录包含了框架启动和自动加载设置的文件,autoload.php 文件用于自动载入需要的类文件,该文件夹只用来看一般不用改动,上线此目录要有可写的权限 $ chmod -R 777 目录名
  • 【重要目录】config 目录:项目的配置日录,主要存放配置文件,比如数据库的配置。
  • app.php: 项目主要配置文件
  • database.php: 针对数据库的配置
  • 文件名都可以见名思意 …
  • database 目录:目录包含了数据迁移及填充文件,就是使用文件的方式,来管理数据库,创建一个 PHP 文件,在文件中设计表结构,运行该文件,完成表的创建。
  • public 目录Laravel 项目的 web虚拟主机 指定的目录 (也就是网址根目录),项目的入口文件和系统的静态资源目录(css, img, js, uploads) 后期使用的外部静态文件 (js、 css.图片等) 都需要放到 Public 目录下。
  • 【重要目录】resources 目录:存放视图文件,还有就是语言包文件的目录。(注意:Laravel 中的模板引擎为 blade 模板引擎,后缀为 .php,也可以称为双后缀文件 例: welcome.blade.php)
  • 【重要目录】routes 目录:定义路由的目录,Laravel 中所有的访问请求,都必须事先定义好路由, web.php 定义网页路由,api.php 定义接口路由。
  • storage 目录:主要是存放缓存文件和日志文件。注意:如果在 linux 环境下,该目录需要有 可写 权限。
  • vendor 目录:主要是存放第三方的类库文件和 Laravel 框架的源码,composer下载的类库存放在该目录下面。
  • .env 目录:主要是设置一些系统相关的环境配置文件信息。config目录里面的文件配置内容一般都是读取该文件里面的配置信息( config 里面的配置项的值基本都是来自 .env 文件)。
  • artisan 目录:主要用于生成的代码的(自动生成),比如生成控制器,模型文件等。执行命令: $php artisan,执行命令时,artisan 文件必须存在当前命令路径下,也就是需要 cdartisan 这个文件目录,才能执行成功。

相关文章
|
7天前
|
域名解析 关系型数据库 MySQL
基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)
该文章指导如何使用PHPEnv搭建本地PHP开发环境,并通过一个简单的"Hello World"程序演示从安装到运行的全过程。
基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)
|
2天前
|
存储 前端开发 PHP
深入浅出PHP框架之Laravel的优雅
【9月更文挑战第31天】在编程世界里,PHP语言如同一位多才多艺的老匠人,而Laravel框架则是其手中的精工细作。本文将带你领略Laravel的魅力所在,从其优雅的设计哲学到实用的功能特性,再到如何通过实际代码示例掌握它的核心操作。让我们一起探索Laravel的世界,发现编程之美。
|
12天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
10天前
|
设计模式 数据管理 测试技术
PHP中的设计模式:单一职责原则在实战项目中的应用
在软件开发中,设计模式是解决问题的最佳实践。本文通过分析单一职责原则(SRP),探讨了如何运用这一原则来提升PHP项目的可维护性和扩展性。我们将从实际案例出发,展示单一职责原则在业务逻辑分离、代码解耦和提高测试效率方面的应用。无论是新手还是经验丰富的开发者,都能从中获益,进而编写出更健壮、更灵活的PHP代码。
|
1月前
|
开发框架 前端开发 中间件
开源PHP项目
【9月更文挑战第2天】开源PHP项目
33 4
|
2月前
|
前端开发 中间件 PHP
|
2月前
|
缓存 中间件 PHP
Laravel 框架:优雅 PHP Web 开发的典范
【8月更文挑战第31天】
48 0
|
2月前
|
安全 Java 云计算
JSF 应用究竟何去何从?云端部署能否成为其全新突破点?快来一探究竟!
【8月更文挑战第31天】本文介绍了将JavaServer Faces(JSF)应用部署到云平台的过程。首先,根据成本、功能、可靠性和安全性选择合适的云平台。接着,展示了构建简单JSF应用的示例代码。最后,以AWS Elastic Beanstalk为例,详细说明了部署流程。部署至云端可提升应用的可用性、扩展性和安全性。
32 0
|
2月前
|
数据库连接 Apache Java
【独家揭秘】图书管理系统的奇幻之旅:一文看透Apache Wicket如何从想法萌芽到服务器上翩翩起舞?
【8月更文挑战第31天】本文通过实战案例,详细介绍从概念到部署的Apache Wicket应用开发全流程。以在线图书管理系统为例,涵盖应用概念定义、项目创建、架构设计、首页编写、数据库交互及应用部署等关键步骤。通过Maven或Gradle引入Wicket依赖,设计包结构,并使用JPA或Hibernate处理数据持久化。最终,将应用配置并部署到Tomcat或Jetty服务器,帮助你全面掌握Wicket开发技巧。
31 0
|
2月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
29 0

推荐镜像

更多
下一篇
无影云桌面