Nginx反向代理Apache+php大文件上传失败

php.ini中已修改最大文件大小和最大post大小,但上传仍然失败,且最大文件大小约为1M。

因为这个值很特殊,排除了程序原因。经查询得,Nginx默认的client_max_body_size为1M。

(以debian为例)修改/etc/nginx/site-enable/配置名 文件

location /{
##新增,按需修改大小
client_max_body_size 30m;
}

保存退出并reload,再次测试,问题解决

crontab中百分号(%)需要转移

配置了计划任务,几天都没能正确执行,查看系统日志发现,两条命令均在%前被截断。借助搜索引擎得知,crontab中,命令列中%会被当作换行来使用,命令中的百分号前需要加反斜线即 \%。

man 5 crontab

Percent-signs (%) in the command,
unless escaped with backslash (\), will be changed into newline charac-
ters, and all data after the first % will be sent to the command as
standard input.

Apache虚拟主机设置域名泛解析

1、泛解析支持

<VirtualHost *:80>
ServerName      blog.flagplus.net
ServerAlias     *.blog.flagplus.net

#其余配置略
</VirtualHost>

2、同一虚拟主机多域名支持
有两种方法:
(1)写多个ServerName
<VirtualHost *:80>
ServerName      blog.flagplus.net
ServerName      www2.flagplus.net

#其余配置略
</VirtualHost>

(2)使用ServerAlias
<VirtualHost *:80>
ServerName      blog.flagplus.net
ServerAlias     www2.flagplus.net

#其余配置略
</VirtualHost>

Laravel 5 默认使用类/方法路由

在使用绝大部分框架时,路由默认行为为访问http://xxx.com/controller_name/function_name时自动路由至Controller_nameController.php控制器下的function_name方法(Yii2 中为actionFunction_name方法),在laravel中默认并不支持这么做并认为这是一个不好的习惯。
如果执意需要此功能,可通过修改路由实现。

修改路由文件rootpath/routers/web.php,在文件最后增加以下内容:

Route::get('{model}/{func}', function ($model,$func) {
$className = 'App\Http\Controllers\\'.ucfirst($model).'Controller';
$obj = new $className;
return $obj->$func();
});
Route::get('{model}', function ($model) {
$className = 'App\Http\Controllers\\'.ucfirst($model).'Controller';
$obj = new $className;
return $obj->index();
});

参考:
https://doc.laravel-china.org/docs/5.1/routing

Debian 8 testing 安装 WPS

虽然说在Windows下的时候几乎没用过WPS,但在近期将工作平台转移到Debian后,还是觉得应该把WPS装上比较放心。在使用Debian 7的时候可以开混合架构,开启后装一大堆32位依赖就可以直接解压运行了,比较简单;这次看到新版的竟然原生有64位版本,甚是激动,赶紧下载安装!

继续阅读“Debian 8 testing 安装 WPS”

使用对象存储加速网站访问

起因:国内主机的带宽实在是太贵了,买不起。。。被迫在项目上线之前就启用图片cdn。走了大概一周的弯路,发现其实用起来远比想象中来的简单。

程序端的思路:

考虑到以最小的代价改动原有程序,并能够提供一个开关来方便切换cdn服务商或者关闭cdn服务,故不考虑修改数据库中现有数据。
原有的图片以相对路径存储在数据库中(形如”images/1.jpg” “upload/20160815/100000.jpg”),输出时只要在记录前拼接cdn地址即可;
项目中使用了ueditor富文本编辑器(稍作修改使上传目录为/upload文件夹下),观察发现其图片url均为”./upload“开头,故替换”./“为cdn地址;
当不再使用cdn服务时,将cdn地址写成服务器主域名即可完成禁用。

由于这类对象存储服务都提供了无缝迁移功能(腾讯云中称之为”回源设置“,七牛中称为”镜像源“),即对象存储服务器中若不存在当前文件,则自动从用户设定的源地址获取,使得无需手动处理上传逻辑。

参考代码:(原始代码在公司,以下代码为在家写博客时凭回忆手写,并未调试,可能存在某些小错误;以说明思路为主)

class Zcdn
{
$cdn_host = '';
public function __construct()
{
//可以从配置文件中读取或手动修改此处配置;将此处修改为主域名以达到不使用cdn服务的目的
$this->cdn_host = 'http://your.cdn.host'; 
}
public static function auto($url, $type='normal')
{
if($type == 'normal'){
return (new Zcdn())->cdn_host.$url;
}elseif($type == 'ue'){
return str_replace("./", (new Zcdn())->cdn_host, $url);
}
}
}

调用:

//图片或者其他静态资源
Zcdn::auto($item['url_from_db']);
//使用ueditor富文本编辑器时保存在数据库中的记录
Zcdn::auto($item['ue_text_from_db'],'ue');

新博客终于完成备案了

因为调试CDN需要一个已备案的域名,用公司的域名不太方便,考虑再三还是自己备案一个域名。

备案过程整体比较顺利,速度也比较快,除了等待管局审核大概被拖了两周以外。

考虑了再三,博客程序还是用wordpress了,省心懒得折腾。
本来打算用自己构建的一个博客程序的,但是这几个月耽误了不少进度,到现在都没有写完。

考虑了再三,还是觉得主题2012看起来比较顺眼,所以依旧是这个主题。

原博客:http://blog.flagplus.net