作者: admin

  • ubuntu下使用git上传项目到github中

    要在ubuntu环境里使用git上传项目到github,步骤如下:

     

    1,是否安装git

    可以使用 git –version 测试是否安装

    如果没有安装,使用命令: sudo apt-get install git git-core 安装git

     

    2,获取 ssh密钥

    ssh-keygen -C "你的github邮箱" -f ~/.ssh/github
    如果执行的过程中,提示你设置密码,这些都不管一路回车下去。

    这时候会在的你~/目录下生成一个.ssh/目录,如果不知道~/目录是什么输入pwd,默认情况下ubuntu会把.ssh/隐藏起来。
    查看.ssh目录下的github.pub获取到公钥认证,就是一串乱码。

    ~$ cd .ssh
    ~/.ssh$ sudo gedit github.pub  //密钥就在此文件

     

    如果提示:

    Permission denied (publickey).
    fatal: Could not read from remote repository.

    还有另一个方法获取ssh:

    执行

    ssh-keygen -t rsa

    之后一路回车

    同样去到~/.ssh目录下把文件id.rsa.pub里面的密钥粘贴到github中,即可

    如果涉及到同时使用github和gitlab,参考《Git多SSH Key共存问题

     

     

    3,密钥认证

    登录我们的github–点击头像右边下拉小三角–点击”settings”–点击左侧栏”SSH and GPG keys”–然后在右侧栏点击”New SSH key”

    title栏随便输入,key栏粘贴刚刚获取到的密钥,最后点击”Add SSH key”就行

    github2

     

    4,创建git仓库

    github3

    github4

     

    5,本地创建项目文件

    在本地创建一个文件夹专门负责项目的上传和更新,进入到文件夹中,先把刚刚创建好的git仓库拖进本地

    git clone git@github.com:chen77134056/express_blog.git
    //会提示你输入github的帐号和密码

    git的地址获取进入到刚刚创建的git仓库里

    github5

     

    之后会发现多出一个文件夹,多出的文件夹命名就是我们的仓库名称,就是我们的git目录了,以后有什么需要上传的就放在刚刚那个文件夹中。

    之后按步骤输入以下

    git add . // 更新整个目录
    git config user.name "chen77134056" //第一次需要配置
    git config user.email "xxxx@xx.com" //第一次需要配置
    git commit -m "更新版本简要说明"
    git push -u origin master

     

    如果要上传文件就把文件复制到我们的仓库目录中,在按照以下步骤:

    git add . // 更新整个目录
    git commit -m "更新版本简要说明"
    git push -u origin master

    就能上传我们的项目了,之后在去访问我们刚刚在github中的刚刚创建的仓库就会发现有文件了。

     

     

     

     

  • node.js验证码 express、koa2

    koa2 验证码

    在node.js环境中配合express框架制作验证码

    效果图:

    node_code

     

    以下方法在ubuntu下进行的

    安装:

    npm install ccap --save

     

    express制作验证码图片:

    var ccap = require('ccap')();
    
    
    
    var obj={};
    //验证码
    router.get('/code_img', function(req, res, next) {
       var ary = ccap.get();
       var txt = ary[0];
       var buf = ary[1];
       res.end(buf)  //显示验证码图片
       obj.code=txt; //验证码数字
    });
    
    
    其他模块调用获取验证码数字使用:obj.code

     

    显示验证码图片:

    <img src="code_img" onclick="this.src='code_img?'+Math.random();">

     

     

    koa2验证码

    安装:

    npm install ccap --save

     

    var ccap = require('ccap')();
    
    
    router.get('/code_img', async function (ctx, next) {
    
      return next().then(() => {
        let ary = ccap.get();
        let txt = ary[0];
        let buf = ary[1];
        ctx.body = buf;  //直接输出图片
        ctx.type = 'image/png';
        ctx.session.captcha = txt;  //这里可能需要加载session模块,输出验证码,在别的模块调用参与登陆逻辑验证
      });
    
    })
    
    
    

     

     

    推荐使用

    npm install gd-bmp

     

    调用:

    var fs = require('fs');
    const BMP24 = require('gd-bmp').BMP24;//gd-bmp
    
    
    
    //仿PHP的rand函数
    function rand(min, max) {
     return Math.random()*(max-min+1) + min | 0; //特殊的技巧,|0可以强制转换为整数
    }
    
    //制造验证码图片
    function makeCapcha() {
     var img = new BMP24(100, 40);
     img.drawCircle(rand(0, 100), rand(0, 40), rand(10 , 40), rand(0, 0xffffff));
     //边框
     img.drawRect(0, 0, img.w-1, img.h-1, rand(0, 0xffffff));
     img.fillRect(rand(0, 100), rand(0, 40), rand(10, 35), rand(10, 35), rand(0, 0xffffff));
     img.drawLine(rand(0, 100), rand(0, 40), rand(0, 100), rand(0, 40), rand(0, 0xffffff));
     //return img;
    
     //画曲线
     var w=img.w/2;
     var h=img.h;
     var color = rand(0, 0xffffff);
     var y1=rand(-5,5); //Y轴位置调整
     var w2=rand(10,15); //数值越小频率越高
     var h3=rand(4,6); //数值越小幅度越大
     var bl = rand(1,5);
     for(var i=-w; i<w; i+=0.1) {
       var y = Math.floor(h/h3*Math.sin(i/w2)+h/2+y1);
       var x = Math.floor(i+w);
       for(var j=0; j<bl; j++){
          img.drawPoint(x, y+j, color);
       }
     }
    
     var p = "ABCDEFGHKMNPQRSTUVWXYZ3456789";
     var str = '';
     for(var i=0; i<5; i++){
     str += p.charAt(Math.random() * p.length |0);
     }
    
     var fonts = [BMP24.font8x16, BMP24.font12x24, BMP24.font16x32];
     var x = 15, y=8;
     for(var i=0; i<str.length; i++){
     var f = fonts[Math.random() * fonts.length |0];
     y = 8 + rand(-10, 10);
     img.drawChar(str[i], x, y, f, rand(0, 0xffffff));
     x += f.w + rand(2, 8);
     }
     return {img:img,font:str};
    }
    
    
    
    router.get('/code_img', async function (ctx, next) {
    
     return next().then(() => {
       var img = makeCapcha();
       ctx.body = img.img.getFileData();
       ctx.type = 'image/bmp';
       ctx.session.captcha = img.font;
     });
    
    })

    https://github.com/zengming00/node-gd-bmp 

    node-gd-bmp-master    验证码文件

     

    最新文件,解压直接用

    链接:https://pan.baidu.com/s/1It0W-57R-gX0PY8qAIyuJA?pwd=zauz
    提取码:zauz
    –来自百度网盘超级会员V5的分享

  • 解决express-session模块报错:“deprecated undefined resave option; provide resave option app.js”

    网站搬家,数据库自然也要搬家。之后运行node ./bin/www

    报错:deprecated undefined resave option; provide resave option app.js

    app.use(session({
       secret: 'myblog',
       key: 'blog',//cookie name
       cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
       store: new MongoStore({
           url: 'mongodb://blog:123@localhost:27017/blog'
       }),
       resave:false,//添加这行 
       saveUninitialized: true//添加这行
    }));
  • 解决unix:///var/run/supervisor.sock no such file的方法

    supervisor作为一个进程管理的python软件非常的给力 但是一不小心就会遇到一些问题 就比如下面这个:

    unix:///var/run/supervisor.sock no such file
    这个问题一般来说 有几个原因:

    supervisord没有运行起来.

    明明已经运行起来了他就是说没有.

    而且根据我的尝试 如果使用ubuntu, 那么进行下面的操作 100000% 会挂掉而且报错:

    安装:

    sudo apt-get install supervisor
    使用:

    sudo service supervisor start
    sudo supervisorctl
    这里都是很正常的

    但是如果在第一次运行后 再尝试运行:

    sudo supervisorctl reload
    或者在supervisorctl里面运行 reload

    那么这个服务就永远跑不起来了.

    上网搜了好多 结果都没有很好的解决方法. 进行尝试了很久 终于发现可以解决的方法了:

    首先删除通过apt-get安装的supervisor:

    sudo apt-get remove supervisor
    然后

    sudo ps -ef | grep supervisor
    找到对应的进程kill掉.

    再然后:

    sudo easy_install(pip install) supervisor==3.0b2
    注意 这里就是重点:

    通过apt-get安装的supervisor 版本号是3.0a8, 而当你第一次安装这个版本之后 再用easy_install的话 就也是这个版本 而不是最新版的3.0b2

    然后生成配置文件(root权限):

    echo_supervisord_conf > /etc/supervisord.conf
    再然后:

    sudo supervisord
    再然后:

    sudo supervisorctl
    启动成功.

    最后说明:

    使用easy_install安装的supervisor的默认sock文件 会被定义在/tmp下面 而apt-get会在/var/run下面. 鉴于apt-get会出现各种问题 这里建议使用easy_install或是pip安装 supervisor.

    http://tuzii.me/diary/522dc528848eea683d7724f2/%E8%A7%A3%E5%86%B3ubuntu-supervisor-unix:var-run-supervisor.sock-no-such-file.%E7%9A%84%E6%96%B9%E6%B3%95

  • ubuntu下安装使用supervisor配合express测试

    在windows下安装使用supervisor很简单。

    安装:npm install -g supervisor
    使用:supervisor ./bin/www

    为什么使用supervisor配合express测试网站?

    在windows下正常启用express使用命令:npm ./bin/www,但是一旦修改了页面后在刷新页面还是跟之前一样没有变化,这时候又要关闭express再次重启npm ./bin/www后才能看到刚刚修改的效果,反复着繁琐的动作,所以需要使用supervisor,一旦用supervisor来启动./bin/www,修改页面后就立马能看到效果。

     

    如果你使用的是Linux 或Mac,直接键入上面的命令很可能会有权限错误。原因是npm
    需要把supervisor 安装到系统目录,需要管理员授权。所以要这么安装:

    sudo npm install -g supervisor
    使用方法跟win一样

     

    ————————————————————————————————-

    我第一次在ubuntu下也按照windows的步骤进行结果是不行的,ubuntu步骤如下:

    安装:

    sudo apt-get install supervisor

     

    开启:

    sudo /etc/init.d/supervisor start
    或者
    sudo service supervisor start

     

    在/etc/supervisor/conf.d/目录下创建一个文件名为test.conf,内容为:

    [program:test]
    command=node /home/xgllseo/桌面/www/bin/www
    user=root

     

    其他案例:

    [program:meta.txn.recover.on.error]
    command=/cas/bin/meta.txn.recover.on.error ; 被监控的进程路径
    numprocs=1 ; 启动几个进程
    directory=/cas/bin ; 执行前要不要先cd到目录去,一般不用
    autostart=true ; 随着supervisord的启动而启动
    autorestart=true ; 自动重启。。当然要选上了
    startretries=10 ; 启动失败时的最多重试次数
    exitcodes=0 ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
    stopsignal=KILL ; 用来杀死进程的信号
    stopwaitsecs=10 ; 发送SIGKILL前的等待时间
    redirect_stderr=true ; 重定向stderr到stdout
    stdout_logfile=logfile ; 指定日志文件

     

     

    重启supervisor,让配置文件生效,然后启动test进程:

    sudo supervisorctl reload
    sudo supervisorctl start test

     

    查看是否加载进程

    sudo supervisorctl

    如果有类似:

    test                             RUNNING   pid 5152, uptime 0:00:21

    说明已经启用成功。

     

    常用命令:
    supervisorctl start programxxx,启动某个进程

    supervisorctl restart programxxx,重启某个进程

    supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)

    supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。

    supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。

    supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。

    supervisor启动和停止的日志文件存放在/var/log/supervisor/supervisord.log

    注意:显式用stop停止掉的进程,用reload或者update都不会自动重启

     

     

    学习参考:

    http://blog.csdn.net/u012374229/article/details/47158435

    ———————————————————————————-

    在ubuntu使用supervisor各种奇葩常见问题汇总:

    解决unix:///var/run/supervisor.sock no such file的方法

    [Errno 13] Permission denied: ‘/usr/local/bin/node

    http://stackoverflow.com/questions/10716159/nginx-and-supervisor-setup-in-ubuntu