这次又让大家久等了,这个版本更新中间间隔了10个月时间,在这里表示道歉。
2.2版本进行了多项重要更新:

1. 新的模板标签{mp}
该标签可以让您在模板中调用任何你想要调用的数据。例如取出某个分类的图片列表,取出单张图片详情等等。稍后会做详细介绍。

2. 新的sense风格
官方默认风格之一,简洁大方。

3. 扫描文件夹导入图片
大家可以通过ftp上传到服务器中某个目录,然后在上传图片中选择导入图片,设置好文件夹之后即可导入某个目录下的所有图片。

此外还增加了如验证码、设置缩略图大小等功能。大家去下载体验吧。
点击这里下载

Tagged with:
 

昨天在服务器上调php程序与ucenter的连通的时候,发现始终无法通信成功。检查了多遍程序一直没有发现问题。唯一确定的是问题出现在安装了一个zip扩展之后。

正常情况下,ucenter请求程序应该返回的是”1″, 用浏览器获取到的是正常的。然而通过api调用返回的是一串乱码:转换成16进制为“ 1f8b 0800 0000 0000 0003 3204 0000 00ff  ff03 00b7 efdc 8301 0000 000a”。

网上搜索了一下发现“1f8b 0800 0000 0000”应该是gzip的文件头,所以更加确定了问题出现在gzip上。

在尝试了将nginx关闭gzip后,发现问题依旧。然后发现原来php启用了,自动gzip。于是在php.ini中将 zlib.output_compression = Off 关掉后,问题解决!

结论,该问题可能是zlib包的版本不同导致的(gzip和zip都依赖zlib库)。当然首先要确认的是是否进行了两次gzip。

Tagged with:
 

2.1.0版本功能看点:

MeiuPic 是一个使用php开发的在线图床、图片管理的系统,使用起来非常方便。2.1.0版本又新加入了多项功能。

1. 无限级分类

相册加入了无限级分类的概念,可以把相册归类到某个分类里面。便于更好地归类图片。在这里没有加入无限级相册功能,可以说两种功能各有优缺点吧。

2. 颜色取色器

在风格编辑和其他需要选择颜色的地方加入了可视化的颜色选择器,方便用户取色。下面看到的是编辑风格的界面。

3. 图片旋转功能

有些时候拍出来的图片传到电脑上的时候,可能并不是我们要的方向,需要旋转个90度什么的。现在可以直接在MeiuPic里操作了。

4. 不改变地址重新上传图片功能

有时候你会发布一些图片,然后贴到个大论坛、网站或者淘宝网店里面去。突然你发现图片内容有问题,你需要改一下图片内容,而不需要去个大论坛、网站重新发帖。这时候你可以直接用图片重新上传功能。重新上传的图片还是原来的图片地址,更加方便的管理图片。

5. 自定义导航菜单功能

一个很实用的功能。之前很多人问我如果加入超链接到菜单里去,当告诉他们需要改模板的时候,纷纷表示比较难,不会。现在你可以直接在系统设置里面添加了,无需学习html什么的。

 

 6. 系统自动更新

从2.1.0开始,您将体验到自动更新给您带来的快捷。您可以一键自动升级到最新版本。不过在升级之前,最好备份下数据,以免带来不必要的损失。

更多其他功能:

面包屑、加入英文语言支持、Jiathis分享按钮。

 

 

MeiuPic 从2.1版本后改变了版本规则了,使用了最常用的x.y.z的命名方式,去除了开发版本号r216这样的命名,同时加入了自动升级功能,方便用户升级。

 

相信很多人有已经从apache之类的web服务器转到Nginx了,然而Nginx除了单纯的web服务器用途外,可以当做反向代理服务器使用,配合proxy_cache功能基本可以代替squid了。

1. 编译安装Nginx

1
2
./configure --user=www --group=www --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

2. nginx.conf配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
user  www www;
worker_processes 8;
error_log  /opt/nginx/logs/nginx_error.log  crit;
pid        /opt/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;

events
{
use epoll;
worker_connections 65535;
}

http
{
include       mime.types;
default_type  application/octet-stream;

charset  utf-8;

server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;

sendfile on;
tcp_nopush     on;

keepalive_timeout 60;

tcp_nodelay on;

client_body_buffer_size  512k;
proxy_connect_timeout    5;
proxy_read_timeout       60;
proxy_send_timeout       5;
proxy_buffer_size        16k;
proxy_buffers            4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;

gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path   /data/proxy_temp_dir;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path  /data/proxy_cache_dir  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=30g;

upstream backend_server {
server   192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;
server   192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s;
server   192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
listen       80;
server_name  *.yourdomain.com;
index index.html index.htm;
root  /data/htdocs/www;

location /
{
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid  200 304 12h;
#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host  $host;
proxy_set_header X-Forwarded-For  $remote_addr;
proxy_pass http://backend_server;
expires      1d;
}

#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host  $host;
proxy_set_header X-Forwarded-For  $remote_addr;
proxy_pass http://backend_server;
}

access_log  off;
}
}

3. 接下来启动nginx吧

1
/opt/nginx/sbin/nginx

4. 能否将缓存按照域名分文件夹存放?
由于我们的运营的是一个网站集群,所以子站是通过域名泛解析解析到本机的,所以希望能否按照域名存放,便于整站清理缓存。比如:a.youdomain.com/a/b3/…. ,b.youdomain.com/b/ae/….,这样的目录结构。但是研究了很久nginx配置方式,并没有发现相关的设置。于是想到自己来改写nginx源代码,涉及到的文件是src/http/ngx_http_file_cache.c文件。
以下函数的改写是基于 nginx0.8.55的。
ngx_http_file_cache_name函数改写如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
static ngx_int_t
ngx_http_file_cache_name(ngx_http_request_t *r, ngx_path_t *path)
{
    u_char            *p;
    ngx_http_cache_t  *c;
    size_t            pathlen;

    c = r->cache;
    //added by Lingter
    pathlen = path->name.len;
   
    ngx_http_file_cache_domain(r,path);
   
      c->file.name.len = path->name.len + 1 + path->len
                       + 2 * NGX_HTTP_CACHE_KEY_LEN;
      c->file.name.data = ngx_pnalloc(r->pool, c->file.name.len + 1);
     
    if (c->file.name.data == NULL) {
            return NGX_ERROR;
    }

    ngx_memcpy(c->file.name.data, path->name.data, path->name.len);

    p = c->file.name.data + path->name.len + 1 + path->len;
    p = ngx_hex_dump(p, c->key, NGX_HTTP_CACHE_KEY_LEN);
    *p = '\0';
   
    ngx_create_hashed_filename(path, c->file.name.data, c->file.name.len);
    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
               "cache file: \"%s\"", c->file.name.data);
   
    path->name.len = pathlen;
   
    return NGX_OK;
}

上一段代码中加入了一个新的函数ngx_http_file_cache_domain的调用。
先申明一下函数定义:

1
2
static ngx_int_t ngx_http_file_cache_domain(ngx_http_request_t *r,
ngx_path_t *path);

具体函数内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//added by Lingter
static ngx_int_t ngx_http_file_cache_domain(ngx_http_request_t *r,ngx_path_t *path)
{
    ngx_http_cache_t    *c;
    u_char              *pathname,*pos;
    size_t              i;
    ngx_str_t           *key,domain;
   
    c = r->cache;
    key = c->keys.elts;

    domain.len  = key[0].len;
    domain.data = ngx_pstrdup(r->pool,& key[0]);
    pos = (u_char *) ngx_strchr(domain.data,'/');
    if(pos){
        *pos = '\0';
        domain.len = ngx_strlen(domain.data);
       
        pathname = path->name.data;
        i = path->name.len+1;
        pathname[i-1] = '/';
        ngx_memcpy(&pathname[i],domain.data,domain.len);
        path->name.len = i + domain.len;
    }
    return NGX_OK;
}

实际上上面的代码仅仅是找出key中的第一个出现字符’/'的地方,并且将/前的字符串作为域名拼接到缓存路径里去。
由于本人不会C语言,所以写得比较粗糙,但是基本实现了这一需求。

看看最终的成果吧:

附上完整的 ngx_http_file_cache.c文件吧:ngx_http_file_cache.c

原创文章,转载请注明出处!!!

Tagged with:
 

继去年吉卜力推出《借东西的小人阿莉埃蒂》后,今年又一力作《虞美人盛开的山坡》。
由日本动漫大师宫崎骏的儿子宫崎吾朗执导、宫崎骏本人担当企划和剧本的吉卜力最新力作《虞美人盛开的山坡》,将于近日在日本公映。很期待这部作品啊,希望这次宫崎吾朗不会让我们失望。

虞美人盛开的山坡剧照附上主题曲:
主题曲同样由演唱《地海传奇-特露之歌》的手嶌葵演唱。

音频片段:需要 Adobe Flash Player(9 或以上版本)播放音频片段。 点击这里下载最新版本。您需要开启浏览器的 JavaScript 支持。

Continue reading »

Tagged with:
 

适用版本:所有2.0版本

该补丁包解决了以下问题:

  • UI界面的几处bug
  • 自定义Logo功能

补丁包下载:http://www.meiu.cn/files/meiupic_2.0_to_r216.zip

你也可以下载r216完整版本:http://www.meiu.cn/files/meiupic_2.0_r216.zip

Tagged with:
 

适用版本:所有2.0版本

该补丁包解决了以下问题:

  • 加入评论管理
  • 优化管理员评论
  • 修复chrome下详情页的bug
  • 加入重计统计功能
  • 加入检查更新功能
  • 保存水印设置的bug
  • Feed中的一个bug:默认取了所有图片,现在改为50张。

补丁包下载:http://www.meiu.cn/files/meiupic_2.0_to_r214.zip

你也可以下载r214完整版本:http://www.meiu.cn/files/meiupic_2.0_r214.zip

Tagged with:
 

该补丁包解决了以下问题:

  • 水印图片上传的bug
  • 修复一个插件的bug
  • 照片浏览页,加入loading提示
  • 上传的照片名取消后缀部分
  • 完善对php4的支持

补丁包下载:http://www.meiu.cn/files/patch194-202.zip

你也可以下载r202完整版本:http://www.meiu.cn/files/meiupic_2.0_r202.zip

Tagged with:
 

各位使用MeiuPic 1.1的朋友们!现在可以从MeiuPic 1.1升级到2.0了,支持1.0版直接升级。

升级方法:

http://forum.meiu.cn/thread-45-1-1.html

Tagged with: