nginx 小记 (无法获取get post cookie)
之前给朋友公司架设了nginx phpcgi 应用环境
今天告诉我无法获取get post cookie等
查了php.ini 没用问题
找了半天,原来nginx.conf
include fastcgi_params;
被注释了 开启。即可。
之前给朋友公司架设了nginx phpcgi 应用环境
今天告诉我无法获取get post cookie等
查了php.ini 没用问题
找了半天,原来nginx.conf
include fastcgi_params;
被注释了 开启。即可。
朋友买了台vps 内存在512M ,有时候多个cgi进程是的内存使用过大 导致502错误
除了基本的优化外 ,这里就不写了,网上一堆。
应急预案脚本
#!/bin/sh
function fastCgiRestart(){
killall -9 php-cgi
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -f /usr/local/php5/bin/php-cgi
}
function startNginx(){
/usr/local/nginx/sbin/nginx -t
}
while true
do
echo `free | awk ‘{print $3}’` | awk ‘{print $2}’ >a
usemem=`cat a`
echo `free | awk ‘{print $2}’` | awk ‘{print $2}’ >b
countmem=`cat b`
usememcache=”$usemem”
sysmemcache=”$countmem”
if [ $usememcache -gt 511111 ] ; then
fastCgiRestart
startNginx
else
echo ’sys is ok’
fi
sleep 5
done
注释:
# if [ $usememcache -gt 511111 ] ; then 表示但内存达到511111 时候重启php-cgi具体的参数可以依照内存的大小而定
总之这个《应急预案》是主动出击,保证站点的运行。
今天我的redhat5启动发生如下错误:在为 gnome-terminal 装入或保存配置信息时发生错误。您的某些配置设置可能不能正常工作。
打开终端:rm -rf /tmp/*
重启 ok。
mmseg 安装错误
解决办法
添加
ok!
今天在部署服务器的时候 用到图片处理ImageMagick 模块.这个模块也不知道安装了多少次了。一点问题都没有。
在这台服务器上编译 老提示:
checking if ImageMagick version is at least 6.2.4……. configure: error: no. You need at least Imagemagick version 6.2.4 to use Imagick.
见鬼 用
root@ubuntu8server:convert –version
Version: ImageMagick 6.5.2-6 2009-07-10 Q16
我的版本明明在 6.5.2-6 无语
尝试强行关闭错误:
root@ubuntu8server: vim ./configure
#if test “$IMAGEMAGICK_VERSION_MASK” -ge 6002004; then
3959 # { echo “$as_me:$LINENO: result: found version $IMAGEMAGICK_VERSION_ORIG” >&5
3960 #echo “${ECHO_T}found version $IMAGEMAGICK_VERSION_ORIG” >&6; }
3961 # else
3962 # { { echo “$as_me:$LINENO: error: no. You need at least Imagemagick version 6.2.4 to # use Imagick.” >&5
3963 # echo “$as_me: error: no. You need at least Imagemagick version 6.2.4 to use Imagick.” >&2;}
3964 # { (exit 1); exit 1; }; }
3965 # fi
把这些强行屏蔽了。
继续编译 又提示:
checking if ImageMagick version is at least 6.2.4… checking for MagickWand.h header file… found in /usr/local/ImageMagick/include/ImageMagick/wand/MagickWand.h
checking if PHP version is at least 5.1.3… ./configure: line 4026: awk: command not found
./configure: line 4028: test: -ge: unary operator expected
configure: error: no. You need at least PHP version 5.1.3 to use Imagick.
天哪 我的php 版本是 PHP Version 5.2.6-2
实在无语。
没有办法再仔细分析 报错消息 突然在不起眼的角落发现这么一段提示:
./configure: line 3954: awk: command not found
意思是 找不到 awk 这个命令 。不会吧 这个命令都没有,不至于吧。
试下shell 还真提示 awk: command not found
没有办法 安装awk吧,我安装的是gawk ,它是awk的进化版 ,包涵里awk的功能。
ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.4.tar.gz
tar zvxf gawk-3.1.4.tar.gz
cd gawk-3.1.4
./configure
make && make install
gawk安装完成
执行shell
awk
Usage: awk [POSIX or GNU style options] -f progfile [--] file …
…..
表示成功 ,继续编译imagick
一切顺利 ,扩展成功。
晚上给公司宣传网站做视频上传程序时,突然心血来潮想做个视频截图,以便获取图片,为方便以后给前台做展示使用。
在上一家公司, 也给java的程序员说过ffmpeg。他们也应用了。php也可以使用ffmpeg-php扩展ffmpeg。但是我个人觉的这个效率可能不太高。
还是决定用shell 去执行,或放在服务器端的让任务去执行。
下面简单介绍下安装和使用:
wget http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2
tar -xjvf ffmpeg-0.5.tar.bz2
cd ffmpeg-0.5
./configure --prefix=/usr/local/ffmpeg
make && make install
找个视频
我用的是rmvb格式《叶问》电影,改名为 yw.rmvb
执行:
root@cyd-laptop:~/Desktop# ffmpeg -i 'yw.rmvb' -ss 78 -s 400*200 -f image2 'yw.jpg'
会生成一幅yw.jpg的图片
如果用php调用 就写个简单的shell脚本
#! /bin/sh
ffmpeg -i $1 -ss $2 -s $3 -f image2 $4
参数解释:
-i : 目标文件
-ss: 截取的时间位置(时间段) 格式也可 h:m:s
-s: 生成图片大小 可以直接写 特殊的代号 如`sqcif’==>128×96 详见官方文档
-f: 生成对象格式 又 image2,avi 详见官方文档
最后是文件名称(yw.jpg)。
展示一张截图吧:
服务器的内容备份是网站维护很常见的工作。
rsync是linux下常见的第三方备份工具,同时也可用来做网站镜像,服务器内容分离如图片,静态页面等多服务器的分离。
rsync的官方介绍:http://www.samba.org/rsync/
目前最新版本为:Rsync version 3.0.6 released
安装:
wget http://www.samba.org/ftp/rsync/src/rsync-3.0.6.tar.gz
tar zvxf rsync-3.0.6.tar.gz
cd rsync/rsync-3.0.6
./configure
make && make install
配置服务器端:
[root@localhost rsync-3.0.6]# vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 4
strict modes =yes
port = 873 //rsync守护进程的一个特权TCP端口873
hosts allow =* //允许的ip地址
#hosts deny = 禁止的ip地址
[blogImages]
path = /data/hi/face/ //备份的图片地址
comment = blogImagesMove //欢迎文字 可以不写
ignore errors
read only = yes
list =yes
auth users = chenyuduan //登录验证
secrets file = /etc/rsync.pwd
transfer logging = yes
pid file = /tmp/rsync/rsyncd.pid
lock file = /tmp/rsync/rsyncd.lock
log file = /tmp/rsync/rsyncd.log
生产认证文件
[root@localhost rsync-3.0.6]# vim /etc/rsync.pwd
chenyuduan:xxxxxxx //[用户名:密码]
改变认证文件的权限
[root@localhost rsync-3.0.6]# chmod 600 /etc/rsync.pwd
启动 rsync
[root@localhost rsync-3.0.6]# /usr/bin/rsync rsyncd –daemon
同样客户端也需要安装rsync 这里就不写了,方法一样。
测试例子
1 在服务器端的 /data/hi/face/(可以改成上面配置定义ptah的目录) 建立写文件
2 在客户端 指向
rsync -vzrtopg –progress 用户名@服务器端的ip地址::模块 同步的目录
如上面配置:
rsync -vzrtopg –progress chenyuduan@xxx.xxx.xxx.xxx::blogImages /data/hi/face/
输入密码
xxxxxx
ok 完毕
之前的im机器人是用c的system调用shell的curl来实现数据传送。测试了两天感觉上不是很舒服。决定调整为c的libcurl API发送数据。
就这个小小的调整,涉及到一堆的修改。
最主要的如下:
1 制作 curl发送的动态链接库 so文件
2 修改im机器人的makefile 文件
curl 发送的so动态连接库:
curl_so_head.h
#include “stdio.h”
#include “curl/curl.h”
#include “stdlib.h”
#include “string.h”
#include “dlfcn.h”
void c2(char *msg,char *from,char *robot); // 设置了msg:消息 from:来源 robot:机器人类型
curl_so.c
#include “curl_so_head.h”
void c2(char *msg,char *from,char *robot)
{
CURL *curl;
CURLcode res;
char *s=”&msg=”;
char *s1=”&from=”;
char *s2=”&robot=”;
char pp[200];
strcpy(pp,s);
strcat(pp,msg);
strcat(pp,s1);
strcat(pp,from);
strcat(pp,s2);
strcat(pp,robot);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL,”http://xxxx.xxx.xxx.php”);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,pp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
}
这个是发送调用程序:
void *SoLib;
int (*So)();
SoLib=dlopen(“so_curl.so”,RTLD_LAZY); //so_curl.so是上面操作生成的so文件
So = dlsym( SoLib, “c2″);
(*So)( msg,from,robot); //msg,from,robot表示需要的 消息 来源 robot 机器人类型
修改makefile文件 主要是要在 gcc 后面加上 -ldl 参数 .
ok 目前这项应用就到此吧。后期可能还要加新东西。