在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署

目前,较为成熟的技术是采用laravelS组件,注意和laravel 区别laravelS多了一个大写的S,由于laravelS默认监听5200端口,所以laravel项目要做一些调整

例如:

  • 静态文件引入的方式-----从静态资源服务器加载
我们熟悉的js和css引入方式还是通过相对路径引入到标签中,但是如果集成了laravelS组件,这种技术方案就行不通了,网页不会加载样式或js文件,所以我们最好采用从静态服务器加载相关文件的方法。文件laravel5.8官方手册给出了URL::asset()方法引入,但是例子都过于简单,如果我们静态文件的目录发生改变,则官方文档中的案例就不再奏效

不过放心,虽然“从静态资源服务器加载“听起来要写一些代码实现跨域加载似的,但实践起来并没那么麻烦

  • 项目结构

  • ngixn 分站点设置
server {
    listen       88;
    server_name yinti.com;
    root  /dingshub2/yinti/public;
    index index.html index.htm index.php;

    location / {
        # WordPress固定链接URL重写     #这段显得尤为重要---如果没有,laravel路由方式访问会提示404
        try_files $uri $uri/ /index.php?$query_string;
        if (!-e $request_filename) {
            rewrite (.*) /index.php;
        }
    }

    # PHP配置
    location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
    }
    #静态文件服务器的实现
    location ~ .*\.(gif|jpg|jpeg|png|js|css)$ {

expires 24h;
root /dingshub2/yinti/public/static;
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /dingshub2/yinti/public/static;#静态文件访问路径,比起域名下的根路径多了一层/static,没错,遇到诸如.css结尾的请求,会到这个路径下搜寻
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
  proxy_pass http://127.0.0.1;#默认80端口
}

    }
}
  • blade模版文件中的引入
官方文档没有给i出详细交代,不过我们可以利用一些laravel的配置功能达到我们的目的,实现静态文件引入的“动态”化,以应对静态文件路径发生改变的业务场景;例如我们知道laravel在config文件夹下定义了若干php文件,每个php文件中都返回了一个关联数组,每个数组的键都对应了一个配置方案,例如,我们可以在config下定义一个名为(名称随意)staticfiles.php文件,内容如下:
#staticfiles.php

<?php
return [
    ‘_css_‘=>‘http://yinti.com:88/mycss‘,
    ‘_bstr_‘=>‘http://yinti.com:88/booststrap4/css‘,
    ‘_pic_‘=>‘http://yinti.com:88/mypic‘
];

或者,我们可以在.env文件中定义添加

MYCSS="http://yinti.com:88/mycss"
MYPIC="http://yinti.com:88/mypic"

blade文件中这样引入:

母版文件(局部)
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="../../../../favicon.ico">
    @section(‘title‘)
    <title>Sticky Footer Navbar Template for Bootstrap</title>
    @show
    <!-- Bootstrap core CSS -->
#从config文件夹下的staticfiles.php文件中加载
 <link href="{{asset(config(‘mystatic._bstr_‘).‘/bootstrap.min.css‘)}}" rel="stylesheet"> 
#从.env文件中加载
<!-- Custom styles for this template --> 

 <link href="{{asset(env(‘MYCSS‘)).‘/sticky-footer-navbar.css‘}}" rel="stylesheet"> ........................剩余部分略去不表

模板继承文件

@extends(‘masterpage.login‘)
@section(‘title‘)
    <title>搏击运动员之家</title>
@endsection

@section(‘h1‘)
    <h1 class="mt-5">搏击帅哥魏锐</h1>
@endsection
@section(‘plead‘)
    <p class="lead">2009年,魏锐考入湖南吉首大学,并因此成为河南周口市鹿邑县的第一名运动员大学生。 <code>padding-top: 60px;</code> on the <code>body &gt; .container</code>.</p>
    <p>Back to <a href="../sticky-footer">生活中的魏锐,静若处子,动若脱兔;有如李连杰年轻时的俊郎外表和气质,表情文静,态度温和;赛场上的他,则如猛虎下山,身形灵动,一次次为梦想而“KO”</a> minus the navbar.</p>
    <p>
#从.env文件中加载 
<img width="60%" src="{{asset(env(‘MYPIC‘).‘/9aa88827.jpg‘)}}">
    </p>
@endsection
  • 路由定义
Route::get(‘wr‘,function(){
    return view(‘sample.wr‘);
});
  • 效果

原文地址:https://www.cnblogs.com/saintdingspage/p/11267518.html

时间: 2024-09-29 01:27:16

在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署的相关文章

在laravel5.8中集成swoole组件

铺垫 前提是先安装swoole组件,我采用从pecl-----php扩展组件网下载swoole扩展包,然后切入到解压缩的扩展包中运行phpize命令, phpize是一种编译命令,可以在安装文件中生成configure文件,从而方便我们编译安装,接下来 make make install就好. 最后别忘了在php.ini中添加extension=swoole.so 并且设置extension_dir(扩展文件目录)=你真实的php扩展组件目录,绝大多数情况下,编译安装的扩展包会生成一个*.so文

DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版

前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务,与前篇中的不同,在DSAPI中,指令版同时包含了服务端与客户端. 先来看一下使用方法,几乎不需要太多的说明,当然,它是支持事件的.所谓指令版,即服务端和客户端收发都是基于短字串的,比如客户端发一个"hello",服务端收到这个指令后返回一个"Hi".为确保传输的数据有

java中socket创建服务端与客户端即时对聊

package tool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; impo

Unity 3D中不得不说的yield协程与消息传递

1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花.怪物死亡后20秒再复活之类的.刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这样写. 1 float nowTime = 3.0f; 2 bool isDead = true; 3 float deadTime = 20.0f; 4 5 void startFireworks() 6 { 7 // 放烟花 8 } 9 10 void revival() 11 { 12 //

在eclipse中使用jax-ws构建webservices服务端和客户端

服务端: package com.yinfu.service; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class TestWebsService { public String sayHello(String username) { return "Hello: " + username; } public static void main(String[] args)

linux中web服务中间件软件及服务端和客户端软件

一.中间件: 1.认识中间件: 中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务.面向服务的体系结构等中应用比较广泛. IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能. 该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那

swoole与php协程实现异步非阻塞IO开发

“协程可以在遇到阻塞的时候中断主动让渡资源,调度程序选择其他的协程运行.从而实现非阻塞IO” 然而php是不支持原生协程的,遇到阻塞时如不交由异步进程来执行是没有任何意义的,代码还是同步执行的,如下所示: function foo() { $db=new Db(); $result=(yield $db->query()); yield $result; } 上面的数据库查询操作是阻塞的,当调度器调度该协程到这一步时发现执行了阻塞操作,此时调度器该怎么办?选择其余协程执行?那该协程的阻塞操作又该

Asp.net 中,在服务端向客户端写脚本的常用方法

在Asp.net 服务端处理脚本,一般都用 ClientScriptManager ,即web窗体服务端的this.ClientScript.该对象比较常用的方法: 1.RegisterArrayDeclaration:在服务端,向客户端生成一个数组定义 服务端代码:   this.ClientScript.RegisterArrayDeclaration("aAry", "1,2,3"); 客户端“源文件”呈现 <script type="text

node.js中net网络模块TCP服务端与客户端的使用

node.js中net模块为我们提供了TCP服务器和客户端通信的各种接口. 一.创建服务器并监听端口 const net = require('net'); //创建一个tcp服务 //参数一表示创建服务的一些配置 //参数二表示 事件 'connection' 监听回调函数 let server = net.createServer({ //表示是否允许一个半开的TCP连接,默认为false allowHalfOpen: false, //一旦来了连接,是否暂停套接字,默认为false pau