分类 默认分类 下的文章

nginx反向代理的dns更新(504 Gateway Time-out)

网站隔三差五的就挂掉,一直以为是球猫在搞鬼,这不,又挂掉了504 Gateway Time-out,本以为是bug已经升级了nginx的,问题依旧。
几次尝试解决,都以失败告终,只能发现后sudo nginx -s reload,总不能放到定时任务中吧,再次查看日志sudo cat /var/log/nginx/error.log。

upstream timed out (110: Connection timed out) while connecting to upstream, upstream: "http://123.123.12.3", host: "mikuq.com"

尝试浏览器中访问这个IP,访问不到,奇怪了,再次确认竟然是过期的IP,参考了几篇文章,是通病,尝试解决,查询本机的dns,写到配置文件中cat /etc/resolv.conf,重起,过几天看效果吧。

参考文献:
https://serverfault.com/questions/240476/how-to-force-nginx-to-resolve-dns-of-a-dynamic-hostname-everytime-when-doing-p
https://www.zhihu.com/question/61786355

在opiz上装docker

最近很喜欢玩docker,所以各种安装写得多一些,参考自己的《玩docker》

uname -a

得到的版本是Linux opiz 4.13.16-sunxi #20 SMP Fri Nov 24 19:50:07 CET 2017 armv7l armv7l armv7l GNU/Linux
运行安装命令

wget -qO- https://get.docker.com/ | sh

可惜报错Could not get lock /var/lib/dpkg/lock,可以用这个命令查看

ps -aux | grep apt

慢慢处理,会好的,安装成功后启动服务,然后需要重起一下

sudo service docker start
sudo usermod -aG docker pi

执行docker info查看版本是18.0.2,然后就可以学习了https://docs.docker.com/get-started/

在docker中安装nginx、php、redis

docker run -ti -h nginx --name nginx_20080 -p 20080:80 ubuntu:14.04
apt-get update
apt-get install nginx
nginx -v 安装的1.4.6版本
cd /usr/share/nginx/html
mv index.html index.html.bak
vi index.html
nginx启动显示hello
apt-get install php5-fpm
cd /etc/nginx
cp sites-available/default default.bak
修改配置文件让php生效
vi sites-available/default
nginx -s reload
service php5-fpm restart
ln -s /usr/share/nginx/html /root/www
vi ip.php

<?php
$ip=$_SERVER["REMOTE_ADDR"];
echo $ip;
echo phpinfo();
?>

可以看到ip说明php配置好啦

找到最新版3.1.6的驱动
https://github.com/phpredis/phpredis/releases
apt-get install wget
wget https://github.com/phpredis/phpredis/archive/3.1.6.tar.gz
tar xzf 3.1.6.tar.gz
cd phpredis-3.1.6
apt-get install php5-dev
phpize
./configure
vi /etc/php5/fpm/php.ini
extension=redis.so 加在php下就可以
service php5-fpm restart

<?php
   $redis = new Redis();
   $redis->connect('192.168.1.220', 26379);
   echo "Connection to server sucessfully";
   echo "Server is running: " . $redis->ping();
?>

继续重入docker attach nginx_20080

参考:http://www.runoob.com/redis/redis-php.html

在docker中安装redis

06.png
首先建立实例
docker run -ti -h redis --name redis_26379 -p 26379:6379 ubuntu:14.04
apt-get update
apt-get install -y python-software-properties
apt-get install software-properties-common
add-apt-repository -y ppa:rwky/redis
用这个办法安装最新版失败了,可能是那个源不在了
apt-get install redis-server安装的是2.8版本,不是最新的
从官方可以装新的
apt-get install wget
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
tar xzf redis-4.0.8.tar.gz
cd redis-4.0.8
apt-get install make
apt-get install gcc
make
会报错jemalloc/jemalloc.h: No such file or directory
改用make MALLOC=libc
如果不是本机启动客户端会警告,用这个启动
src/redis-server --protected-mode no
数据入库比较慢,用mset会快一些,远程打开
redis-cli -h 192.168.1.220 -p 26379

参考资料:
https://redis.io/download
http://mikuq.com/search/docker/
http://blog.csdn.net/chenlix/article/details/46696165

NuGet & Redis for VS2010

工具->扩展管理器,安装完需要重起VS2010
01.jpg

新建一个项目,引用右键,会多出管理NuGet程序包,著名的StackExchange.Redis
02.jpg

真装不上啊,4.0也不行
03.png

尝试NServiceKit.Redis,这个可以装,就学这个吧,需要重新生成项目
04.jpg

简单测试

string redisHost = "127.0.0.1";
RedisClient redis = new RedisClient(redisHost, 6379);
string key = "cat";
byte[] cat=Encoding.UTF8.GetBytes("球猫");
redis.Set(key,cat);
byte[] data = redis.Get(key);
Console.WriteLine(key + " - " + Encoding.UTF8.GetString(data));

大概每秒中可以处理1万次请求,是否可以优化呢?下面是一些命令

keys * 支持模糊查找
flushall 清空所有库
flushdb 清空当前库
dbsize 库中key的数量
select 0 选择0号库(默认)
shutdown 关闭

参考:https://www.cnblogs.com/luking/archive/2012/09/26/2704177.html