# 阿里云函数计算-部署laravel项目
## 创建服务函数以及配置
重点是 nas文件系统 用户 用户组 必须填 不能为 -1

## 配置一下自定义域名

## 写到函数计算的laravel 入口函数
函数是 run 那就把代码放进去
```php
<?php
use RingCentral\Psr7\Response;
function endsWith($haystack, $needle) {
$length = strlen($needle);
return $length === 0 ||
(substr($haystack, -$length) === $needle);
}
function handler($request, $context): Response{
$uri = $request->getAttribute("requestURI");
$uriArr = explode("?", $uri);
// default php / or /wp-admin/
if (preg_match('#/$#', $uriArr[0]) && !(strpos($uri, '.php'))) {
$uriArr[0] .= "index.php";
$uri = implode($uriArr);
}
$proxy = $GLOBALS['fcPhpCgiProxy'];
$root_dir = '/mnt/www'; //这里是你上传代码的路径
//php script
if (preg_match('#\.php.*#', $uri)) {
$host = "fcdemo.mofangdegisn.cn"; // 这里填你的自定义域名
$resp = $proxy->requestPhpCgi($request, $root_dir, "index.php",
['HTTP_HOST' => $host, 'SERVER_NAME' => $host, 'SERVER_PORT' => '80'],
['debug_show_cgi_params' => false, 'readWriteTimeout' => 60000]
);
return $resp;
} else {
// static files, js, css, jpg ...
$filename = $root_dir . explode("?", $uri)[0];
$filename = rawurldecode($filename);
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
$headers = [
'Content-Type' => $proxy->getMimeType($filename),
'Cache-Control' => "max-age=8640000",
'Accept-Ranges' => 'bytes',
];
return new Response(200, $headers, $contents);
}
}
```
## 上传代码
vscode 安装好插件以后把代码拉回来 就会有nas:///mnt/blog了 点击`nas:///mnt/blog` 后面的云图标 他就会上传代码

项目里面执行以下 `fun nas info`
```
fun nas info
using template: template.yml
Local NAS folder of service ll includes:
/Desktop/testyunphp/.fun/nas/xxx.nas.aliyuncs.com/
```
打开这个目录把代码放进去

然后你就可以点击 nas 后面云的图标了
他执行了
```
~/.aliyun-serverless/bin/fun.sh nas sync -s ll -m /mnt/blog
✔ upload done
unzipping file
:unzipping █████████████████████ 6134/6382 368 files/s, 96% 16.7 s✔ unzip done
✔ upload completed!
```
然后就可以看到成功的信息了
再点这个这个云的图标把函数上传到函数计算上

# 大功告成
第一次访问用了7秒 后面500ms 还挺快的~
