首页
好物推荐
薅羊毛领红包
好看壁纸
更多
隐私政策
友情链接
时光机
搜索
1
使用 docker 快速安装 Home Assistant
6,284 阅读
2
Ipad mini2 降级到IOS10.3.3系统
4,467 阅读
3
Home Assistant集成OpenWrt
3,734 阅读
4
华为手机开启ADB进行WIFI远程调试
3,724 阅读
5
小米电视开机广告和乐播投屏广告Hosts屏蔽列表
3,479 阅读
无分类
智能家居
心得随想
文档教程
登录
Search
标签搜索
Linux
JS
教程
CSS
HTML
配置
NodeJS
Docker
解决方案
文档
Git
Java
技术培训
Hadoop
Mac
Windows
RiotJS
Python
VPS
Home Assistant
DONG HAO
累计撰写
157
篇文章
累计收到
60
条评论
首页
栏目
无分类
智能家居
心得随想
文档教程
页面
好物推荐
薅羊毛领红包
好看壁纸
隐私政策
友情链接
时光机
搜索到
46
篇与
Linux
的结果
2018-05-21
服务器程序监控脚本
如果服务器程序经常崩溃,那么就需要一个监控脚本了。将下面的脚本放到crontab里面,每隔1分钟检测一次即可。版本1:如果程序不存在#! /bin/sh #进程名 proc_name="ngrokd" proc_path="/usr/local/ngrok/bin/ngrokd" #查询进程数量 proc_num() { num=`ps -ef | grep $proc_path | grep -v grep | wc -l` return $num } proc_num #获取进程数量 number=$? echo `date '+%Y-%m-%d %H:%M:%S'` $proc_name 进程数量 $number #如果进程数量为0 if [ $number -eq 0 ] then #重新启动服务器 /etc/init.d/$proc_name start echo `date '+%Y-%m-%d %H:%M:%S'` restart $proc_name success. fi 版本2:校验网站访问失败#! /bin/sh #进程名 proc_name="ngrok" #web地址 web_url="http://www.baidu.com" #访问 web_http_code=$(curl -o /dev/null -s -w %{http_code} $web_url) echo `date '+%Y-%m-%d %H:%M:%S'` $web_url 状态码 $web_http_code #如果状态码502或者404 if [ $web_http_code -eq 502 -o $web_http_code -eq 404 ] then #重新启动服务器 /Users/hadong/Codes/dsdc-ngrok-client/dsdc-mac-ngrok -config=/Users/hadong/Codes/dsdc-ngrok-client/ngrok.cfg start myapi echo `date '+%Y-%m-%d %H:%M:%S'` restart $proc_name success. fi crontab定时任务#编辑 crontab -e #每分钟执行一次 */1 * * * * /root/script/ngrokd_monitor.sh > /dev/null 2>&1 #列出任务 crontab -l
2018年05月21日
105 阅读
0 评论
0 点赞
2018-05-21
Linux使用wget安装jdk8
wget下载源文件wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz 解压tar包tar -zxvf jdk-8u111-linux-x64.tar.gz 创建文件夹并拷贝java文件sudo mkdir -pv /usr/java sudo cp -r jdk1.8.0_111/ /usr/java 配置环境变量sudo nano /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_111 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH //立即生效 source /etc/profile
2018年05月21日
837 阅读
0 评论
0 点赞
2018-05-21
Python2与Python3共存模式
确保安装依赖存在sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make 下载python3并解压wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz tar -xvJf Python-3.6.2.tar.xz 编译安装python3cd Python-3.6.2 ./configure prefix=/usr/local/python3 sudo make sudo make install 安装完/usr/local/ 下就有python3文件夹将原来python改名为python2sudo mv /usr/bin/python /usr/bin/python2 修改一些依赖python2的文件sudo nano /usr/bin/yum 将头部 #! /usr/bin/python修改为#! /usr/bin/python2 同样的编辑 /usr/libexec/urlgrabber-ext-down文件 sudo nano /usr/libexec/urlgrabber-ext-down 将头部 #! /usr/bin/python修改为#! /usr/bin/python2 添加软链到执行目录ln -s /usr/local/python3/bin/python3 /usr/bin/python ln -s /usr/local/python3/bin/python3 /usr/bin/python3 加入python3环境变量sudo nano /etc/profile export PYTHON3_HOME=/usr/local/python3 export PATH=${PYTHON3_HOME}/bin:$PATH //立即生效 source /etc/profile
2018年05月21日
138 阅读
0 评论
0 点赞
2018-05-21
pip2与pip3共存方法
安装执行python3,重新安装pip模块python3 -m pip install --upgrade pip --force-reinstall 执行python2,重新安装pip模块python2 -m pip install --upgrade pip --force-reinstall 测试pip2 -V pip3 -V 使用pip2 install xxx pip3 install xxx
2018年05月21日
817 阅读
0 评论
0 点赞
2018-05-21
ERROR: 'configure' exists but is not executable — see the 'R Installation and Administration Manual'解决方法
R 语言会将临时可执行文件放在/tmp下,但是很多Linux因为安全设置会将/tmp设置为noexec, 所以就会造成ERROR: 'configure' exists but is not executable — see the 'R Installation and Administration Manual'的错误解决:将 /tmp设置为execmount -o remount,exec /tmp 如果还需要变回来,可以执行下面语句mount -o remount,noexec /tmp
2018年05月21日
360 阅读
0 评论
0 点赞
2018-05-03
nodejs控制台彩色文字输出
console.log('\x1B[36m%s\x1B[0m', info); //cyanconsole.log('\x1B[33m%s\x1b[0m:', path); //yellow var styles = { 'bold' : ['\x1B[1m', '\x1B[22m'], 'italic' : ['\x1B[3m', '\x1B[23m'], 'underline' : ['\x1B[4m', '\x1B[24m'], 'inverse' : ['\x1B[7m', '\x1B[27m'], 'strikethrough' : ['\x1B[9m', '\x1B[29m'], 'white' : ['\x1B[37m', '\x1B[39m'], 'grey' : ['\x1B[90m', '\x1B[39m'], 'black' : ['\x1B[30m', '\x1B[39m'], 'blue' : ['\x1B[34m', '\x1B[39m'], 'cyan' : ['\x1B[36m', '\x1B[39m'], 'green' : ['\x1B[32m', '\x1B[39m'], 'magenta' : ['\x1B[35m', '\x1B[39m'], 'red' : ['\x1B[31m', '\x1B[39m'], 'yellow' : ['\x1B[33m', '\x1B[39m'], 'whiteBG' : ['\x1B[47m', '\x1B[49m'], 'greyBG' : ['\x1B[49;5;8m', '\x1B[49m'], 'blackBG' : ['\x1B[40m', '\x1B[49m'], 'blueBG' : ['\x1B[44m', '\x1B[49m'], 'cyanBG' : ['\x1B[46m', '\x1B[49m'], 'greenBG' : ['\x1B[42m', '\x1B[49m'], 'magentaBG' : ['\x1B[45m', '\x1B[49m'], 'redBG' : ['\x1B[41m', '\x1B[49m'], 'yellowBG' : ['\x1B[43m', '\x1B[49m'] };
2018年05月03日
257 阅读
0 评论
0 点赞
2018-04-16
ssh:Too many authentication failures for root解决方案
Received disconnect from 192.168.2.11: 2: Too many authentication failures for root. 这种错误一般是因为登陆过多个需要rsa证书登陆的Linux服务器时,通常ssh的MaxAuthTries默认为6次,超过6次就会终止验证。 登录加参数在ssh登陆的时候加上参数 -o PubkeyAuthentication=no,即可登陆。修改服务器ssh配置文件,增加ssh登陆的验证次数ssh配置文件路径 MAC下 /etc/sshd_config Linux下 /etc/ssh/sshd_config 修改后重启ssh服务即可 nano /etc/ssh/sshd_config 修改前 MaxAuthTries 6 修改后 MaxAuthTries 20 重启sshd service sshd restart
2018年04月16日
346 阅读
0 评论
0 点赞
2018-04-11
Centos6搭建ngrok内网穿透服务
安装gogo下载地址 https://golang.org/dl///下载go安装包 wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz //解压go安装包 tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz //编辑环境变量文件 nano /etc/profile //最后添加环境变量 export PATH=$PATH:/usr/local/go/bin //应用环境变量 source /etc/profile 安装ngrok 下载ngrok源码 cd /usr/local git clone https://github.com/inconshreveable/ngrok.git cd ngrok 生成证书在自生成证书时需要一个解析到服务器上的主域名,以xxx.com为例。 //临时变量 export NGROK_DOMAIN="xxx.com" //生成证书 openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 //将新生成的证书,替换掉assets/client/tls下的证书 cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key 编译生成 ngrokd 服务端 这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386 #当前系统可用go env查看 GOOS=linux GOARCH=amd64 make release-server 可能遇到的问题 问题1: GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata bin/go-bindata -nomemcopy -pkg=assets -tags=release \ -debug=false \ -o=src/ngrok/client/assets/assets_release.go \ assets/client/... make: bin/go-bindata: Command not found make: *** [client-assets] Error 127 解决方法:前往go安装目录的bin目录下找到go-bindata,将他移动到ngrok/bin下 (没有bin,可新建一个) 问题2: package code.google.com/p/log4go: Get https://code.google.com/p/log4go/source/checkout?repo=: dial tcp 216.58.197.110:443: i/o timeout 因为google被墙,如果服务器不在墙外或者没有FQ则无法访问到code.google.com. 解决方法:在 ngrok/src/ngrok/log 目录下找到 logger.go 文件,修改其中第4或5行的: log "code.google.com/p/log4go”为 log "github.com/keepeye/log4go" 3.问题3: GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata # github.com/jteeuwen/go-bindata src/github.com/jteeuwen/go-bindata/toc.go:47: function ends without a return statement make: *** [bin/go-bindata] Error 2 解决办法: https://github.com/inconshreveable/ngrok/issues/237 ngrok自启动脚本#!/bin/sh ### BEGIN INIT INFO # Provides: ngrokd # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: ngrokd # Description: # ### END INIT INFO NAME=ngrokd DAEMON=/usr/local/ngrok/bin/$NAME KEY=/usr/local/ngrok/assets/server/tls/snakeoil.key CRT=/usr/local/ngrok/assets/server/tls/snakeoil.crt DOMAIN="xxx.com" HTTPADDR=":80" HTTPSADDR=":443" TUNNELADDR=":4443" case "$1" in start) echo "Starting $NAME..." nohup $DAEMON -tlsKey=$KEY -tlsCrt=$CRT -domain=$DOMAIN -httpAddr=$HTTPADDR -httpsAddr=$HTTPSADDR -tunnelAddr=$TUNNELADDR >/dev/null 2>&1 & ;; stop) echo "Stopping $NAME..." sudo ps -ef|grep $NAME|grep -v grep|cut -c 9-15|xargs kill -9 ;; restart) $0 stop && sleep 2 && $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0 编译生成 ngrok 客户端#这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386 #当前系统可用go env查看 Linux 32位 linux 386 Linux 64位 linux amd64 Windows 32位 windows 386 Windows 64位 windows amd64 Mac OS 32位 darwin 386 Mac OS 64位 darwin amd64 Linux ARM linux arm GOOS=windows GOARCH=amd64 make release-client 添加iptable规则(4443),如果需要。iptables -I INPUT -p tcp --dport 4443 -j ACCEPT /etc/init.d/iptables save service iptables restart 启动ngrok客户端//ngrok.cfg server_addr: "xxx.com:4443" trust_host_root_certs: false tunnels: http: subdomain: "www" proto: http: "8090" https: subdomain: "www" proto: https: "8090" ssh: remote_port: 2222 proto: tcp: "22" //run ngrok -config ngrok.cfg start http https ssh
2018年04月11日
546 阅读
0 评论
0 点赞
2017-12-26
在docker上部署mongodb分布式分片副本集群
使用 Sharded cluster 时,通常是要解决如下2个问题 存储容量受单机限制,即磁盘资源遭遇瓶颈。 读写能力受单机限制(读能力也可以在复制集里加 secondary 节点来扩展),可能是 CPU、内存或者网卡等资源遭遇瓶颈,导致读写能力无法扩展。 Sharded模式图创建3个配置服务(configsvr)docker run -d -p 40001:40001 --privileged=true -v cnf40001:/data/db --name cnf_c1 mongo:latest --configsvr --port 40001 --dbpath /data/db --replSet crsdocker run -d -p 40002:40002 --privileged=true -v cnf40002:/data/db --name cnf_c2 mongo:latest --configsvr --port 40002 --dbpath /data/db --replSet crsdocker run -d -p 40003:40003 --privileged=true -v cnf40003:/data/db --name cnf_c3 mongo:latest --configsvr --port 40003 --dbpath /data/db --replSet crs任意选择crs分片的一个副本mongo --port 40001切换数据库use admin写配置文件config = {_id:"crs", configsvr:true, members:[ {_id:0,host:"192.168.31.82:40001"}, {_id:1,host:"192.168.31.82:40002"}, {_id:2,host:"192.168.31.82:40003"} ] }初始化副本集配置rs.initiate(config)如果已经初始化过,使用下面的强制配置rs.reconfig(config,{force:true})查看副本集状态rs.status()创建2个分片服务(shardsvr),每个shardsvr包含3个副本,其中1个主节点,1个从节点,1个仲裁节点。docker run -d -p 20001:20001 --privileged=true -v db20001:/data/db --name rs1_c1 mongo:latest --shardsvr --port 20001 --dbpath /data/db --replSet rs1docker run -d -p 20002:20002 --privileged=true -v db20002:/data/db --name rs1_c2 mongo:latest --shardsvr --port 20002 --dbpath /data/db --replSet rs1docker run -d -p 20003:20003 --privileged=true -v db20003:/data/db --name rs1_c3 mongo:latest --shardsvr --port 20003 --dbpath /data/db --replSet rs1任意选择rs1分片的一个副本mongo --port 20001切换数据库use admin写配置文件config = {_id:"rs1",members:[ {_id:0,host:"192.168.31.82:20001"}, {_id:1,host:"192.168.31.82:20002"}, {_id:2,host:"192.168.31.82:20003",arbiterOnly:true} ] }初始化副本集配置rs.initiate(config)如果已经初始化过,使用下面的强制配置rs.reconfig(config,{force:true})查看副本集状态rs.status()结果rs1:RECOVERING> rs.status() { "set" : "rs1", "date" : ISODate("2016-12-20T09:01:16.108Z"), "myState" : 1, "term" : NumberLong(1), "heartbeatIntervalMillis" : NumberLong(2000), "members" : [ { "_id" : 0, "name" : "192.168.31.82:20001", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 7799, "optime" : { "ts" : Timestamp(1482224415, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2016-12-20T09:00:15Z"), "infoMessage" : "could not find member to sync from", "electionTime" : Timestamp(1482224414, 1), "electionDate" : ISODate("2016-12-20T09:00:14Z"), "configVersion" : 1, "self" : true }, { "_id" : 1, "name" : "192.168.31.82:20002", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 71, "optime" : { "ts" : Timestamp(1482224415, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2016-12-20T09:00:15Z"), "lastHeartbeat" : ISODate("2016-12-20T09:01:15.016Z"), "lastHeartbeatRecv" : ISODate("2016-12-20T09:01:15.376Z"), "pingMs" : NumberLong(1), "syncingTo" : "192.168.30.200:20001", "configVersion" : 1 }, { "_id" : 2, "name" : "192.168.31.82:20003", "health" : 1, "state" : 7, "stateStr" : "ARBITER", "uptime" : 71, "lastHeartbeat" : ISODate("2016-12-20T09:01:15.016Z"), "lastHeartbeatRecv" : ISODate("2016-12-20T09:01:11.334Z"), "pingMs" : NumberLong(0), "configVersion" : 1 } ], "ok" : 1 } 创建2个分片服务(shardsvr),每个shardsvr包含3个副本,其中1个主节点,1个从节点,1个仲裁节点。docker run -d -p 30001:30001 --privileged=true -v db30001:/data/db --name rs2_c1 mongo:latest --shardsvr --port 30001 --dbpath /data/db --replSet rs2docker run -d -p 30002:30002 --privileged=true -v db30002:/data/db --name rs2_c2 mongo:latest --shardsvr --port 30002 --dbpath /data/db --replSet rs2docker run -d -p 30003:30003 --privileged=true -v db30003:/data/db --name rs2_c3 mongo:latest --shardsvr --port 30003 --dbpath /data/db --replSet rs2任意选择rs2分片的一个副本mongo --port 30001切换数据库use admin写配置文件config = {_id:"rs2",members:[ {_id:0,host:"192.168.31.82:30001"}, {_id:1,host:"192.168.31.82:30002"}, {_id:2,host:"192.168.31.82:30003",arbiterOnly:true} ] }初始化副本集配置rs.initiate(config)如果已经初始化过,使用下面的强制配置rs.reconfig(config,{force:true})查看副本集状态rs.status()创建2个路由服务(mongos)docker run -d -p 50001:50001 --privileged=true --name ctr50001 mongo:latest mongos --configdb crs/192.168.31.82:40001,192.168.31.82:40002,192.168.31.82:40003 --port 50001 --bind_ip 0.0.0.0docker run -d -p 50002:50002 --privileged=true --name ctr50002 mongo:latest mongos --configdb crs/192.168.31.82:40001,192.168.31.82:40002,192.168.31.82:40003 --port 50002 --bind_ip 0.0.0.0通过mongos添加分片关系到configsvr。选择路由服务mongo --port 50001切换数据库use admin添加sharddb.runCommand({addshard:"rs1/192.168.31.82:20001,192.168.31.82:20002,192.168.31.82:20003"})db.runCommand({addshard:"rs2/192.168.31.82:30001,192.168.31.82:30002,192.168.31.82:30003"})查询结果 [仲裁节点不显示]db.runCommand({listshards:1}){ "shards" : [ { "_id" : "rs1", "host" : "rs1/192.168.31.82:20001,192.168.31.82:20002" }, { "_id" : "rs2", "host" : "rs2/192.168.31.82:30001,192.168.31.82:30002" } ], "ok" : 1 } 测试示例设置数据库、集合分片 [说明:并不是数据库中所有集合都分片,只有设置了shardcollection才分片,因为不是所有的集合都需要分片。]db.runCommand({enablesharding:"mydb"}) db.runCommand({shardcollection:"mydb.person", key:{id:1, company:1}})测试分片use mydb for (i =0; i<10000;i++){ db.person.save({id:i, company:"baidu"})}测试结果db.person.stats()
2017年12月26日
635 阅读
0 评论
0 点赞
2017-10-20
Nginx解决下载json静态文件乱码
Linux下采用的是utf-8的字符编码,默认情况下我们的浏览器在服务器没有指定编码或者静态页面没有声明编码的情况下会以GBK的编码去渲染页面,这样默认情况下返回中文的话浏览器用gbk来解析utf-8编码,显然会出现乱码,这时要在nginx location块中主动添加header来输出正确编码添加配置add_header Content-Type 'text/html; charset=utf-8';示例location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 7d; } location ~ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Content-Type 'text/html; charset=utf-8'; } }
2017年10月20日
893 阅读
0 评论
0 点赞
2017-07-19
linux安装htop来管理进程
源安装 On RHEL/CentOS – 32-bit OS -------------- For RHEL/CentOS 6 -------------- # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ihv epel-release-6-8.noarch.rpm -------------- For RHEL/CentOS 5 -------------- # wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm # rpm -ihv epel-release-5-4.noarch.rpm On RHEL/CentOS – 64-bit OS -------------- For RHEL/CentOS 7 -------------- # wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-13.noarch.rpm # rpm -ihv epel-release-7-13.noarch.rpm -------------- For RHEL/CentOS 6 -------------- # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ihv epel-release-6-8.noarch.rpm -------------- For RHEL/CentOS 5 -------------- # wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # rpm -ihv epel-release-5-4.noarch.rpm 添加好源后执行安装 # yum install htop On Fedora OS # yum install htop # dnf install htop [On Fedora 22+ releases] On Debian and Ubuntu # sudo apt-get install htop 编译安装 On RHEL/CentOS and Fedora # yum groupinstall "Development Tools" # yum install ncurses ncurses-devel # wget http://hisham.hm/htop/releases/2.0.2/htop-2.0.2.tar.gz # tar xvfvz htop-2.0.2.tar.gz # cd htop-2.0.2 On Debian and Ubuntu $ sudo apt-get install build-essential $ sudo apt-get install libncurses5-dev libncursesw5-dev $ wget http://hisham.hm/htop/releases/2.0.2/htop-2.0.2.tar.gz $ tar xvfvz htop-2.0.2.tar.gz $ cd htop-2.0.2 下载好了源码之后编译安装 # ./configure # make # make install 运行htop htop
2017年07月19日
602 阅读
0 评论
0 点赞
2017-06-29
搬瓦工VPS购买教程
搬瓦工VPS,一款性价比极高的便宜VPS主机方案,有提供洛杉矶QNET、洛杉矶MACOM、纽约、凤凰城、佛罗里达、荷兰、弗里蒙特数据中心便宜年付OpenVZ VPS方案,开放功能比较全。适合我们基础建站、搭建环境以及各种折腾应用,而且支持支付宝购买续费。 搬瓦工官方网站 https://bandwagonhost.com/aff.php?aff=16054 注册 点击上面的链接, 选择右上角的 Register 进行注册操作。 这样的话我们以后登录就可以看到自己的机器列表。 用户管理 选择右上角的 Client Area 进入用户管理界面,如果没有登录,输入 用户名(注册邮箱)和 密码 进行登录。 服务器购买 点击VPS Hosting ,可以看到服务器列表 如果仅仅用来翻墙或者玩玩,可以购买最小化配置(最便宜,人民币120左右),建议kvm的机器。 我们然后会看到上图所示的界面,根据图示我们需要确定选择的方案以及时间,默认是洛杉矶机房,我们也可以选择其他的几个机房之一,点击ADD TO CART添加购物车。 在promotional code里面还可以输入优惠码来获得折扣,优惠码如下 服务器优惠码(可能会失效,逐个尝试) 优惠码 折扣 BWH1ZBPVK(6%) BWH1XZOBK(5.5%) BWH1NJJHL(4.5%) BWH1GFWZP(3.5%) BWH1FOXXE(3%) 输入后点击validate code,优惠码可用的话就可以看到折扣后价格。 核对我们选择方案的价格,没有问题后点击CHECKOUT结账。 然后我们就可以愉快的使用支付宝支付了。 [rihide] 客户端软件 Windows: shadowsocks-win Mac:ShadowsocksX-NG 或者命令行安装 pip install shadowsocks brew install shadowsocks-libev cpan Net::Shadowsocks Linux: Shadowsocks-Qt5 或者命令行安装 pip install shadowsocks apt-get install shadowsocks-libev cpan Net::Shadowsocks Android: shadowsocks-android iOS: Wingy OpenWRT: [shadowsocks-libev](opkg install shadowsocks-libev) SS配置 参照 https://teddysun.com/357.html [/rihide]
2017年06月29日
355 阅读
0 评论
0 点赞
2017-06-23
如何在windows下升级node & npm
upgrade nodenode有一个模块叫n,是专门用来管理node.js的版本的。 第一步:安装n模块: npm install -g n第二步: 升级node.js到最新稳定版 n stableBut,这在我的windows环境下报错: Google了一圈: (敲黑板!!)As stated in the readme file of that module, the module does not support Windows, hence the error you are getting. If you would like to update Node.js on Windows you can find binaries at https://nodejs.org/en/download/current/.于是乖乖去nodejs网站上下载.msi并安装,command line下成功,顺带着npm也一并更新了:
2017年06月23日
356 阅读
0 评论
0 点赞
2017-06-09
ghost使用pm2管理启动
以前运行ghost使用forever管理启动,但是现在发现pm2管理nodejs程序更好,遂尝试改造代码如下pm2.json{ "apps": [{ "name": "ghost", "script": "index.js", "cwd": "/data/wwwroot/blog.minws.com", "exec_mode": "cluster", "instances": 0, "max_memory_restart": "256M", "autorestart": true, "node_args": [], "args": [], "env": { "NODE_ENV": "production" } }] } 启动pm2 start pm2.json<br/>
2017年06月09日
260 阅读
0 评论
0 点赞
2017-04-12
私有DNS服务器之dnsmasq搭建
安装yum install dnsmasq -y 配置nano /etc/dnsmasq.confresolv-file=/etc/resolv.dnsmasq.conf //设置解析文件 strict-order //放开#注释 listen-address=公网/局域网IP地址,127.0.0.1 addn-hosts=/etc/dnsmasq.hosts nano /etc/resolv.dnsmasq.confnameserver 127.0.0.1 nameserver 119.29.29.29 nameserver 182.254.116.116 nameserver 114.114.114.114 nameserver 114.114.114.115 nameserver 223.5.5.5 nameserver 223.6.6.6 nano /etc/dnsmasq.hosts10.201.11.222 local //ping local 会指向10.201.11.222 启动service dnsmasq start
2017年04月12日
439 阅读
0 评论
0 点赞
2017-04-12
iptables开启DNS解析服务端口
使用dnsmasq搭建dns解析服务器需要开启53的UDP端口操作如下:iptables -I INPUT -p udp --dport 53 -j ACCEPT iptables -I OUTPUT -p udp --sport 53 -j ACCEPT /etc/init.d/iptables save service iptables restart
2017年04月12日
299 阅读
0 评论
0 点赞
2017-04-05
centos端口相关指令
列出所有端口netstat -ntlp 查看端口占用的进程lsof -i tcp:80 查看iptables状态/etc/init.d/iptables status 开启iptables端口iptables -I INPUT -p tcp --dport 3306 -j ACCEPT /etc/init.d/iptables save service iptables restart 关闭iptables端口iptables -I INPUT -p tcp --dport 3306 -j DROP /etc/init.d/iptables save service iptables restart 修改iptables规则iptables -R INPUT 3 -j DROP //将第三条INPUT规则修改掉 删除iptables规则iptables -D INPUT 1 //INPUT 规则表 //1 查看iptables状态的第几条 设置filter表INPUT默认规则是 DROP//注意:必须先将22端口加入到input规则,否则将ssh链接不上 //iptables -I INPUT -p tcp --dport 22 -j ACCEPT iptables -P INPUT DROP 干净配置/sbin/iptables -P INPUT ACCEPT /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -s 自己的公网ip -j ACCEPT /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT /sbin/iptables -P INPUT DROP
2017年04月05日
41 阅读
0 评论
0 点赞
2016-12-06
Ubuntu Meta网络图标丢失解决方案
现象:在终端里面输入nm-applet,错误提示如下:(nm-applet:3338): Gdk-CRITICAL **: gdk_window_thaw_toplevel_updates: assertion 'window->update_and_descendants_freeze_count > 0' failed 问题分析:应该是权限不足导致的任务不能启动。解决方案:我是将当前登录用户加入root组,即可看到图标。
2016年12月06日
132 阅读
0 评论
0 点赞
2016-12-04
ubuntu打开eclipse提示jdk环境变量缺失报错的解决
Ubuntu在安装完eclipse后打开有时会遇到找不到jdk环境变量的错误:A Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No java virtual machine was found after searching the following locations 解决方案如下:1. 进入eclipse,打开终端 2. mkdir jre 3. cd jre 4. ln -s /usr/lib/jvm/jdk1.7/bin bin --(你的JDK目录)
2016年12月04日
223 阅读
0 评论
0 点赞
2016-11-14
python的wechat机器人框架-werobot
安装werobotpip install werobotwerobot githubhttps://github.com/whtsky/WeRoBotwerobot 文档https://werobot.readthedocs.io/zh_CN/latest/index.html示例代码 wechat.py# -*- coding: utf-8 -*- import werobot robot = werobot.WeRoBot(token='tokenhere', enable_session=True) @robot.subscribe def subscribe(message): return 'Hello My Friend!' @robot.unsubscribe def unsubscribe(message): return 'Hello My Friend!' @robot.text def text(message, session): last = session.get("last", None) if last: return last session["last"] = message.content return '这是你第一次和我说话' @robot.filter("帮助") def show_help(message): return """ 帮助 XXXXX """ @robot.click def click(message): if message.key == "abort": return "I'm a robot" robot.run(port=10001) nginx 配置server { listen 80; server_name wechat.minws.com; access_log off; location ~ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:10001; } } 启动文件 /etc/init.d/wechat#!/bin/sh ### BEGIN INIT INFO # Provides: wechat # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: wechat # Description: # ### END INIT INFO NAME=wechat.py DAEMON=/data/wwwroot/wechat.minws.com/$NAME case "$1" in start) echo "Starting $NAME..." nohup python $DAEMON >/dev/null 2>&1 & ;; stop) echo "Stopping $NAME..." sudo ps -ef|grep $NAME|grep -v grep|cut -c 9-15|xargs kill -9 ;; restart) $0 stop && sleep 2 && $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0 自启动chkconfig wechat on
2016年11月14日
347 阅读
0 评论
0 点赞
1
2
3