oss php sdk+laravel搭建一个简单网站

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
日志服务 SLS,月写入数据量 50GB 1个月
简介: 用php laravel搭建一个简单的web服务器,静态资源托管到oss

背景

目前中小型网站最流行的还是采用php搭建自己的web服务器,一个web服务器都会做动静资源分离,静态资源流量小的话,静态文件可以统一放单独目录用域名独立访问,流量稍大的时候,可以直接托管到阿里云OSS上,需要静态资源时从oss拉取,对请求延时苛刻的还可以用CDN做缓存和加速。

目的

介绍如何如何在30分钟内搭建一个简单的web服务器,采用nignx+php-fpm+laravel+oss-php-sdk 框架 ,静态资源托管到阿里云oss上。实现通过浏览器展示一张图片。

简单的服务器框图

frame

搭建步骤

运行环境ubuntu16.04,php版本php7.0

laravel搭建

composer global require "laravel/installer=~1.1"

请确定把 ~/.composer/vendor/bin 路径放置于您的 PATH 里, 这样 laravel 执行文件就会存在你的系统。laravel一般在这个目录下/root/.config/composer/vendor/bin

laravel new test_laravel

这可能会报错,网上都有解决方法,我发上来我遇到的:

[RuntimeException]
 The Zip PHP extension is not installed. Please install it and try again.
 sudo apt-get install php7.0-zip 

nginx搭建

或者直接参考这篇文章
http://www.cnblogs.com/piscesLoveCc/p/5794926.html

#下载最新版本:
wget http://nginx.org/download/nginx-1.11.3.tar.gz
#解压:
tar -zxvf nginx-1.11.3.tar.gz
#进入解压目录:
cd nginx-1.11.3
#配置:
./configure --prefix=/usr/local/nginx 
#编辑nginx:
make
注意:这里可能会报错,提示“pcre.h No such file or directory”,具体详见:http://stackoverflow.com/questions/22555561/error-building-fatal-error-pcre-h-no-such-file-or-directory
需要安装 libpcre3-dev,命令为:sudo apt-get install libpcre3-dev
#安装nginx:
sudo make install
#启动nginx:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。
#查看nginx进程:
ps -ef | grep nginx

配置文件/usr/local/nginx/conf/nginx.conf修改为如下的内容:

user  www-data;
worker_processes  1;
error_log  logs/error.log  info;
events {
    worker_connections  1024;
}

http {
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.test_laravel.com;
        root  /home/baiyb/moyue/test_laravel/public;

        location / {
          index  index.php index.html index.htm;
        }
      location ~ \.php$ {
         fastcgi_pass unix:/run/php/php7.0-fpm.sock;
         fastcgi_index index.php;
         fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
         include fastcgi.conf;
     }
}

php-fpm搭建

#启动php-fpm
sudo /etc/init.d/php7.0-fpm restart
#查看配置
/etc/php/7.0/fpm/pool.d/www.conf

验证

修改routes/web.php为

Route::get('/', function()
{
   return ('Hello World');
});

修改你浏览器所在机器的/etc/hosts:

vim /etc/hosts
#增加
120.26.198.7 www.test_laravel.com
#120.26.198.7 是你搭的web服务的ip

浏览器出现"Hello World"代表成功。

到这一步,已经成功大半,一个最简单的服务器已经搭建成功了,后面要做的是把静态资源托管到oss上,当有静态资源请求,可以直接把oss当作静态资源服务器。

oss-php-sdk、oss-laravel配置

如何在laravel中使用oss,可以参考aliyun oss php laravel插件,参照readme,在laravel中配置oss,这里不再重复。oss-laravel链接:
https://github.com/aliyun/aliyun-oss-php-sdk-laravel

验证程序

写一个最简单的验证程序,目的是是验证laravel和oss工作的正确性,不考虑性能。
假设你开通了oss,创建的bucket是laravel_bucket,并参照上一个步骤正确的配置了laravel。另外像我一样把一张图片事先上传到了oss上,并命名为test.png。
修改routes/web.php为

Route::get('/', function()
{
    $client = App::make('aliyun-oss');
   $options = array(OssClient::OSS_FILE_DOWNLOAD => "/root/qiankun.yqk/laravel/moyue/public/img/test.png" );
    $client->getObject( "laravel_bucket", "test.png", $options );
    return view('gitshow');
});

添加一个文件 resources/views/gitshow.blade.php, 内容为:

img

浏览器输入 www.test_laravel.com

xiaoguo

简单描述一下这个过程,laravel收到一个请求后,就通过oss php sdk向oss请求一张图片并保存到本地的"/root/qiankun.yqk/laravel/moyue/public/img/test.png", 然后返回给用户这张图片。这篇文章目的是要说明如何使用php sdk+ laravel,不考虑这个实现的性能问题(言外之意就是实现真的搓,anyway很好的说明了问题)。至于性能优化的问题,大家可以借助oss的图片处理功能实现图片的旋转、裁剪、打水印,而不用使用laravel自带的图片处理功能(毕竟吐槽很差),这里附上利用oss进行图片处理的使用链接[ https://help.aliyun.com/document_detail/44686.html?spm=5176.doc44957.6.938.i8ophk ], 反响好的话以后单独开篇文章介绍。

结语

本篇主要介绍laravel+oss的环境搭建,如何在一个laravel服务器上通过php oss sdk托管静态资源,下一篇主要介绍laravel服务器的性能及优化方案。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
5月前
|
中间件 PHP 调度
深入浅出PHP框架之Laravel的优雅
【10月更文挑战第3天】在PHP的世界里,Laravel以其优雅和简洁闻名。本文将带你走进Laravel的世界,探索它的魔法。我们将通过代码示例,一步步揭示Laravel的魅力。准备好,让我们一起开始这场奇妙的旅程吧!
|
9天前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
104 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
5月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1500 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
4月前
|
缓存 安全 PHP
深入浅出PHP框架之Laravel的优雅与实用
【10月更文挑战第22天】在PHP的世界里,Laravel如同一股清流,以其优雅的设计和实用的功能赢得了广大开发者的喜爱。本文将带你走进Laravel的世界,探索其背后的设计哲学,以及如何利用Laravel构建高效、可维护的Web应用。从路由到模型,从控制器到视图,我们将一步步揭开Laravel的神秘面纱。
110 3
|
4月前
|
前端开发 中间件 PHP
PHP框架深度解析:Laravel的魔力与实战应用####
【10月更文挑战第31天】 本文作为一篇技术深度好文,旨在揭开PHP领域璀璨明星——Laravel框架的神秘面纱。不同于常规摘要的概括性介绍,本文将直接以一段引人入胜的技术剖析开场,随后通过具体代码示例和实战案例,逐步引导读者领略Laravel在简化开发流程、提升代码质量及促进团队协作方面的卓越能力。无论你是PHP初学者渴望深入了解现代开发范式,还是经验丰富的开发者寻求优化项目架构的灵感,本文都将为你提供宝贵的见解与实践指导。 ####
|
5月前
|
存储 前端开发 PHP
深入浅出PHP框架之Laravel的优雅
【9月更文挑战第31天】在编程世界里,PHP语言如同一位多才多艺的老匠人,而Laravel框架则是其手中的精工细作。本文将带你领略Laravel的魅力所在,从其优雅的设计哲学到实用的功能特性,再到如何通过实际代码示例掌握它的核心操作。让我们一起探索Laravel的世界,发现编程之美。
106 6
|
7月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
61 0
|
7月前
|
缓存 安全 PHP
深入浅出PHP框架:Laravel的优雅之旅
【8月更文挑战第15天】 探索PHP世界里的瑰宝,Laravel框架以其优雅、简洁著称。本文将带你领略Laravel的核心魅力,从安装到构建应用,再到高级特性的应用,让你轻松驾驭这个强大的工具。无论你是PHP新手还是资深开发者,这篇文章都将成为你理解并使用Laravel的指南针。
67 2
|
7月前
|
缓存 前端开发 API
PHP现代化之路:从传统到Laravel的演进
【8月更文挑战第4天】 在数字化浪潮不断推进的今天,PHP作为一门历史悠久的编程语言,面临着前所未有的挑战与机遇。本文将探讨PHP如何通过现代化改造,特别是Laravel框架的应用,实现从传统Web开发向现代应用架构的转变,并分析这一转变对开发者和项目带来的影响。
56 5
|
7月前
|
前端开发 中间件 PHP

相关产品

  • 对象存储