linux

golang开发的小工具的小问题总结

星期五, 七月 7th, 2017 | linux | 没有评论

用golang 开发了个自动抓取的小工具,同时受控服务器的任务分发.

小问题总结
1.build后的文件太大(5M)启用这种编译后(3M),更多加壳压缩太麻烦 没有弄了

解决采用:go build -ldflags “-s -w” 这种方式编译。

解释一下参数的意思:

-ldflags: 表示将后面的参数传给连接器(5/6/8l)
-s:去掉符号信息
-w:去掉DWARF调试信息
注意:

-s 去掉符号表(这样panic时,stack trace就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)

-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了

2.工具启动后不允许崩溃 异常捕获 使用recover 捕获调用异常

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    i := 10000
    for j := 0; j < 3; j++ {
        // 使用多协程处理,其中可以预见的是除数为0会抛出异常
        go divide(i, j)
    }
 
    // 为了保证前面线程运行完,这里休眠一下
    for {
        time.Sleep(1 * time.Second)
    }
}
 
func divide(i, j int) {
    // 定义recover方法,在后面程序出现异常的时候就会捕获
    defer func() {
        if r := recover(); r != nil {
            // 这里可以对异常进行一些处理和捕获
            fmt.Println("Recovered:", r)
        }
    }()
 
    fmt.Println(i / j)
}

Tags:

let’s encrypt 遭遇升级错误的解决

星期四, 六月 8th, 2017 | JAVA-and-J2EE, linux | 没有评论

自动续期遭遇错误
使用的自动续期的指令是:

./letsencrypt-auto renew --email service@i5a6.com --agree-tos --force-renewal

错误如下:
Upgrading certbot-auto 0.13.0 to 0.14.2…
Replacing certbot-auto…
Creating virtual environment…
Installing Python packages…
Installation succeeded.
/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Failed to find executable apachectl in expanded PATH: /usr/bin:/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Certbot doesn’t know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run “letsencrypt-auto certonly” to do so. You’ll need to manually configure your web server to use the resulting certificate.

问题分析及解决方法:
是升级到新的0.14的版本时候,有做自动重启apache 和nginx的配置,如果不指定讲默认按照 apache的配置

如果没有安装或者没有默认安装都是找不到的

解决之法 只需执行renew即可,不要再指定信息即可完成,然后再重新载入nginx即可

./letsencrypt-auto renew -v

更多的信息可以使用指令查看

./letsencrypt-auto --help

Tags: ,

nginx启用https的注意和妥协支持http2及IE8以下版本http

星期四, 六月 1st, 2017 | JAVA-and-J2EE, linux | 没有评论

站点启用https的支持后,IE8等低版本有一系列的问题(加载http等警告等),妥协是在IE8以下版本重定向到http去,
本文是基于nginx做的处理,支持http2协议,环境centos6.9

一: nginx-1.12.0 指定编译 openssl-1.0.2l.tar.gz及支持http2(openssl起1.0.2版本才支持)

二.重新编译nginx

1.核查版本
#sbin/nginx -V #查看版本
2.下载
#wget http://nginx.org/download/nginx-1.12.0.tar.gz #下载
#tar xzvf nginx-1.12.0.tar.gz #解压缩
#cd nginx-1.12.0
 
3.编译
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-openssl=/usr/local/webserver/openssl --with-http_ssl_module --with-pcre=/ia/data/tgz/pcre-8.32 --with-http_realip_module --with-http_image_filter_module --with-http_v2_module
 
#make
#mv /usr/local/webserver/nginx/sbin/nginx /usr/local/webserver/nginx/sbin/nginx.old #移动旧版本
#cp objs/nginx /usr/local/webserver/nginx/sbin/ #复制新版本nginx过去
 
4.启动新的,关掉旧的
让nginx把nginx.pid改成nginx.pid.oldbin 跟着启动新的nginx
# kill -USR2 `cat /usr/local/webserver/nginx/nginx.pid`
退出旧的nignx
# kill -QUIT `cat /usr/local/webserver/nginx/nginx.pid.oldbin
5.升级完成。
# sbin/nginx -V

三:(443端口)配置IE8以下版本重定向,(80端口)其他版本支持https

if ($http_user_agent !~* "MSIE [5-8].[0-9]") {
        rewrite (.*) https://www.iatodo.com$1 permanent;
        break;
    }
if ($http_user_agent ~* "MSIE [5-8].[0-9]") {
        rewrite (.*) http://www.iatodo.com$1 permanent;
        break;
    }

Tags: , ,

使用certbot来进行Let’s Encrypt的ssl 配置

星期四, 五月 18th, 2017 | JAVA-and-J2EE, linux | 没有评论

之前let’s encrypt 的老版本可以参考这篇文章主要配置也都相同
http://blog.i5a6.com/1562.html

基于nginx配置
安装方法

如果是CentOS 6,先执行:yum install epel-release
cd /root/
wget https://dl.eff.org/certbot-auto –no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n
接下来就会自动安装所需的依赖包。

配置nginx

1
2
3
4
5
6
7
8
location ^~ /.well-known/acme-challenge/ {
   default_type "text/plain";
   root     /usr/share/nginx/html;
}
 
location = /.well-known/acme-challenge/ {
   return 404;
}

生成证书

单域名生成证书:

1
./certbot-auto certonly --email username@domain --agree-tos --webroot -w /websiteroot -d domain

多域名单目录生成单证书:

1
./certbot-auto certonly --email username@domain --agree-tos --webroot -w /websiteroot -d domain1 -d domain2

多域名多目录生成多个证书:

1
./certbot-auto certonly --email admin@vpser.net --agree-tos --webroot -w /websiteroot1 -d domain1 -d domain2 -w /websiteroot2 -d domain3 -d domain4

证书更新
› Continue reading

Tags: , ,

Oracle VM VirtualBox配置centos7的网络访问

星期四, 五月 4th, 2017 | linux | 没有评论

在虚拟机中配置centos7的网络

1.启用网络配置 Bridged Adapter桥接模式
bridgedadapter

2.修改配置文件/etc/sysconfig/network-scripts/ifcfg-enp0s3

将ONBOOT=”no”改为yes,
BOOTPROTO=”dhcp”

启用网络 service network restart

3.配置可以工具连接的静态ip地址

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
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=NONE  #(修改)
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=4a42d996-1da5-4ea9-b0f9-88b77615880d
DEVICE=enp0s3
ONBOOT=yes
IPADDR0=192.168.1.188 #(新增)
PREFIX0=24            #(新增)
GATEWAY0=192.168.1.1  #(新增)
DNS1=192.168.1.1      #(新增)
 
service network restart

重启网络即可

Tags: , ,

git 取消修改,恢复版本常用命令

星期五, 三月 17th, 2017 | JAVA-and-J2EE, linux | 没有评论

一并说下 常用的简单指令

1. >git clone xxxx.git
 
2. >git status
 
3. >git add *
 
4. >git commit -m "comment"
 
5. >git push
 
6. >git pull
 
上述是正常情况下的使用,下面为修改等
#取消对文件的修改。还原到最近的版本,废弃本地做的修改。
git checkout -- <file>
 
#取消已经暂存的文件。即,撤销先前"git add"的操作
git reset HEAD <file>...
 
#修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情况。
git commit --amend
 
#回退所有内容到上一个版本
git reset HEAD^
 
#回退a.c这个文件的版本到上一个版本  
git reset HEAD^ a.c  
 
#向前回退到第3个版本  
git reset –soft HEAD~3  
 
#将本地的状态回退到和远程的一样  
git reset –hard origin/master  
 
#回退到某个版本  
git reset 089c  
 
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
git revert HEAD

nginx支持lua的编译配置及Nginx rewrite对post数据的影响

星期四, 十二月 8th, 2016 | JAVA-and-J2EE, linux | 没有评论

nginx+lua 可以很方便做限流,路由等其他配置很是方便

编译配置如下:
lua-nginx-module 是 openresty(集成nginx版本) 下的一个模块可以独立编译挂载
https://github.com/openresty/lua-nginx-module

Alternatively, ngx_lua can be manually compiled into Nginx:

1.Install LuaJIT 2.0 or 2.1 (recommended) or Lua 5.1 (Lua 5.2 is not supported yet). LuaJIT can be downloaded from the LuaJIT project website and Lua 5.1, from the Lua project website. Some distribution package managers also distribute LuaJIT and/or Lua.

2.Download the latest version of the ngx_devel_kit (NDK) module HERE.

3.Download the latest version of ngx_lua HERE.

4.Download the latest version of Nginx HERE (See Nginx Compatibility)

下载编译安装:
› Continue reading

Tags: ,

no response “Installing Python packages” when letsencrypt-auto

星期一, 十一月 7th, 2016 | JAVA-and-J2EE, linux | 没有评论

延续https的时间的时候,遭遇no response “Installing Python packages”,卡在一直不动的解决方法

主要执行 三,四即可

一.重新配置pip的源文件

vim ~/.pip/pip.conf
 
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
 
[install]
trusted-host=mirrors.aliyun.com

› Continue reading

Tags: ,

Redis3.2的保护模式

星期四, 十月 27th, 2016 | linux | 没有评论

Redis3.2的保护模式

针对之前Redis版本,默认无bind和密码设置存在很大安全风险;Redis3.2版本提出新特性protected mode(保护模式)。
如果Redis在启动时,未开启bind和密码设置功能,只能通过回环地址本地访问,如果尝试远程访问redis,会提示以下错误:

DENIED Redis is running protected mode because protected mode is enabled,
no bind address was specified, no authentication password is requested to clients.
In this mode connections are only accepted from the loopback interface.

当然也可直接执行CONFIG SET protected-mode no,关闭保护模式。
类似这种设置在MongoDB3.2或MySQL5.7的默认安全配置都有。

Tags:

nginx配置https使其达到A+水平

星期六, 五月 21st, 2016 | linux | 一条评论

前面有一篇文章配置了启用https的安全连接基于LetsEncrypt SSL的nginx配置

在 SSL的安全检测中才获得了B,想达到A+,也很轻松,加下配置文件即可,测试地址:https://www.ssllabs.com/ssltest/index.html

配置如下(nginx.conf):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 server
  {
    listen     192.168.1.1:443 ssl;
    listen     192.168.1.1:80;
    server_name www.iatodo.com iatodo.com;
 
    add_header               Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
    ssl_certificate          /etc/letsencrypt/live/iatodo.com/fullchain.pem;
    ssl_certificate_key      /etc/letsencrypt/live/iatodo.com/privkey.pem;
 
    ssl_ciphers                EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers  on;
 
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache          shared:SSL:50m;
    ssl_session_timeout        1d;
    ssl_session_tickets        on;
 
  ......

最后放图 画圈的部分是 Strict-Transport-Security的部分,默认开启https的访问
iatodossl

Tags: , ,

Rss

Search

文章分类

Meta