作者: admin

  • ubuntu下安装mongoDB

    安装

    sudo apt-get install mongodb

     

    开机自动重启

    切换到sudo su
    /usr/bin/mongod --dbpath /var/lib/mongodb/ --logpath /var/log/mongodb/mongodb.log --logappend &

     

    默认路径

    /usr/bin/mongod //执行程序
    /var/log/mongodb/mongodb.log //日志
    /etc/mongodb.conf   //一些默认配置信息

     

    启动

    /etc/init.d/mongodb start

     

    如果要php安装mongodb模块推荐php的版本在version >= 5.3.0, version <= 5.99.99,之间

     

    —————————————————————–

    ubuntu下的mongodb UI界面

    https://pan.baidu.com/s/1miDCxIC

    https://robomongo.org/download

    解压直接双击运行./bin/robomongo

     

     

     

  • mongodb笔记

    在windows下mongoDB安装和配置

     

     

    连接

    mongo //如果端口ip什么都没改,直接在dos输入mongo回车就可以自动连接shell
    mongo --host 127.0.0.1 --port 27017 -u "root" -p "密码" --authenticationDatabase "admin" //如果mongo开启用户认证就要输入账号密码

     

    增:
    创建数据库(没就自动创建,有就选择数据库)
    use xgllseo

    创建完数据库后需要插入一条数据才能显示数该数据库

    db.xgllseo.insert({“name”:”内容”})

     

    创建集合
    db.createCollection(“集合名”)
    添加集合(可以理解为表)、添加字段、插入内容
    db.集合名.insert({字段名:内容})

    循环插入数据
    for(i=3;i<100;i++)db.集合名.insert({字段:i})

    删:
    删除数据库(选中数据库后才操作)
    db.dropDatabase();

    删除集合(库)
    db.集合.drop()

    删除所有键值对相同的数据
    db.集合.remove({‘title’:’教程’}) //删除集合里面条件是{‘title’:’教程’}的所有文档
    db.集合.remove(); //删除此集合中的所有文档

    删除字段
    db.集合.update({‘name’:’chenchen’},{$unset:{city:’x’}})  //删除city字段

    改:
    修改指定字段内容,只改第一条出现的数据
    db.集合.update({字段:旧值},{字段:新值})
    或者
    db.集合.update({字段:旧值},{$set:{字段:新值}})

    统一修改相同字段和相同内容的数据
    db.集合.update({name:”哈喽123″},{$set:{name:”哈喽1234″}},{multi:true})
    或者
    db.集合.update({name:”哈喽123″},{$set:{name:”哈喽1234″}},false,true)
    //将多个name:”哈喽123″统一修改为name:”哈喽1234″

    更新的数据如果不存在则自动添加,如果已经存在则更新。
    db.集合.update({字段:旧值},{字段:新值},true)

    查:
    查看当前数据库版本
    db.version()

    查看当前系统所有数据库
    show dbs

    查看当前切换哪个数据库
    db 或者 db.getName()

    查看表(要选中库后才能查看表)
    show collections 或者 show tables //以列表方式显示
    db.getCollectionNames() //以数组方式显示

    查看字段内容、查看表里面所有结构
    db.集合.find({},{})  //第一参数查找条件,第二参数是否显示指定字段1显示0不显示

    查看一共几条数据
    db.集合.find().count()

    仅仅查看一条数据
    db.集合.findOne()

    条件搜索
    db.xgllseo.find().skip(3).limit(2).sort({x:1})
    //先查找xgllseo集合的所有数据,忽略前3条(从第4条开始查找),限制只返回2条,按字段名x的值排列(1是正序,-1是倒序)

    模糊查询,配合正则使用(正则用好功能很强大)
    db.集合.find({name:/^De/}); //搜索字段name的值,且开头是De的关键词的所有数据
    (>) 大于 – $gt
    (<) 小于 – $lt
    (>=) 大于等于 – $gte
    (<= ) 小于等于 – $lte
    (!= )不等于$ne
    查找某字段大于100的所有数据
    db.集合.find({link : {$gte : 100}})

    db.集合.find({link : {$lt :200, $gt : 100}}) //,大于100且小于200
    db.集合.find({$or:[{“haha”:123},{“name”: “我我”}]}) //或(多字段,单一值),只要含有”haha”:123、”name”: “我我”的数据
    db.集合.find({“age”:{“$in”:[20, 22, 25]}})  //或(单一字段,多值),查找字段是age的值是20或者22或者25的数据
    db.集合.find({“age”:{“$nin”:[20, 22, 25]}})  //或非,查找除了字段是age的值是20或者22或者25的所有数据
    db.集合.find({“likes”: {$gt:50}, $or: [{“by”: “菜鸟教程”},{“title”: “MongoDB 教程”}]}) //且、或组合

    查看当前数据库所在的服务器IP
    db.getMongo()

    查看当前切换数据库的信息
    db.stats()

    查看当前选中哪个数据库
    db

    备份、还原/导入、导出

    备份指定数据库:

    mongodump -h 127.0.0.1:27017 -d xgllseo -o /Users/xgllseo/Desktop/

    备份名为xgllseo的数据库并导出到目录/Users/xgllseo/Desktop/中,之后会存在一个xgllseo的文件夹。

    还原所有数据库:

    mongorestore /home/zhangy/mongodb/      //将之前备份好的xgllseo目录放入到/home/zhangy/mongodb/目录中

    还原指定数据库

    ./mongorestore -h 127.0.0.1:27017 --db jskoa /root/jskoa  //还原jskoa数据库,jskoa目录就是备份时生成的

    会将目录 /home/zhangy/mongodb/里面所有的数据库都还原

    http://www.jb51.net/article/52498.htm 

    允许远程连接

    此方法是在ubuntu系统中为准,安装参考《ubuntu下安装mongoDB

    1、首先修改mongodb的配置文件 让其监听所有外网ip
    
    编辑文件:/etc/mongodb.conf
    
    修改后的内容如下:
    
     bind_ip = 0.0.0.0
    
     port = 27017
    
    2、/etc/init.d/mongodb restart

    参考:http://www.cnblogs.com/navy235/archive/2012/05/03/2480758.html

    http://blog.csdn.net/drifterj/article/details/7833875

    http://blog.csdn.net/yczz/article/details/5978800

  • 在windows下mongoDB安装和配置

    mongo0

    1,首先到官网(http://www.mongodb.org/downloads )下载安装包,各种版本,推荐下载msi格式,安装只需点击next即可。

    2,在 G盘下创建一个目录mongodb/,在mongodb/目录中创建db和log目录分别是用来存储数据库和log。

    3,将;C:\Program Files\MongoDB\Server\3.2\bin添加到Administrator系统变量PATH中,如图:

    mongo5

     

    4,启动CMD命令,输入

    mongod.exe --dbpath=G:\mongodb\db

    成功提示是看到一串数字,如:

    mongo1

    这时候输入:http://localhost:27017/,如果看到

    It looks like you are trying to access MongoDB over HTTP on the native driver port.

    说明已经启动mongoDB成功了。

    (如果有端口冲突或者被占用查看《解决:通常每个套接字地址(协议/网络地址/端口)只允许使用一次》)

     

    当前的CMD不要关闭,在开启另一个CMD输入命令:mongo

    mongo2

     

    这样就能看见版本号,说明安装启动成功。

    但是每次开机都要运行一次,会很麻烦。

     

    5,为了每次开机自动启动mongoDB,操作如下:

    关闭所有CMD,在重启开启CMD,输入:

    mongod.exe --dbpath "G:\mongodb\data" --logpath "G:\mongodb\log\MongoDB.log" --install --serviceName "MongoDB"

    如果没任何提示,输入:

    NET START MongoDB

    如果看见“开启mongo成功”字样说明已经成功安装并且每次开机都能自动启动了。

    mongo4

     

     

    6,连接数据库

    输入mongo 127.0.0.1:27017,默认连接test

     

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

    mongoDB可视化管理工具,以下教程适用于windows

     

    1,可视化工具win版本(推荐新手)

    https://robomongo.org/download

     

    2,还有安装mongoDB版本的phpmyadmin

    需要php的环境最好是5.3以上,还需要加载php_mongo.dll模块

    下载:RockMongo默认帐号密码 admin  admin

     

    下载:php_mongo.dll

    如果dll不能使用到官网下载:http://pecl.php.net/package/mongo

    (1)将php_mongo.dll放到php安装目录的ext目录中

    (2)编辑php.ini,添加extension=php_mongo.dll

    (3)在系统环境变量中添加php的安装路径

    (4)重启apache

    如果成功就会看到

    php_mongodb

     

    如果一定要使用RockMongo,这里推荐使用phpStudy,它内置了php_mongo.dll,其需要编辑php.ini开启模块就行。

     

     

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

     

    为mongoDB添加管理员帐号密码

    之前安装mongoDB的步骤默认连接是不需要帐号密码就能登录的这样很不安全,所以要设置,以下教程仅适合windows。

     

    1,初次设置创建一个admin管理员权限

    use admin
    db.createUser({user:"root",pwd:"187", roles:[{role:"root",db:"admin"}]})
    db.createRole({role:'sysadmin',roles:[],privileges:[{resource:{anyResource:true},actions:['anyAction']}]})

     

     

    2,开启auth认证

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB 修改ImagePath,在--service 前面加上 --auth

    之后重启mongodb服务

    net stop MongoDB
    net start MongoDB

    这时候在输入mongo,进入到mongodb命令中,在输入show dbs,发现就会出错。所以我们没有权限了。

     

    3,登录admin后,利用其权限创建一个数据库,并且为此数据库创建用户名和密码,如:

    登录admin,如:

    use admin
    db.auth("root","187")
    //返回 1 说明成功
    use xgllseo  //切换xgllseo数据库,并创建此数据库
    db.createUser({user:'xgllseo',pwd:'123',roles:[{role:'sysadmin',db:'admin'}]})
    
    //为xgllseo数据库创建用户名是xgllseo,密码是123。

     

    4,尝试登录xgllseo数据库

    mongo
    use xgllseo
    db.auth("xgllseo","123")
    接下来就可以正常操作xgllseo数据库了

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

    对于“C:\Program Files\MongoDB\Server\3.2\bin”目录下的exe程序,做个简单的说明,可能更利于了解可以做些什么操作,基础学习关注mongod.exe和mongo.exe即可

        mongo.exe:客户端,支持js语法
    
      mongod.exe:服务端
    
      mongodump.exe:备份工具
    
      mongorestore.exe:恢复工具
    
      mongoexport.exe:导出工具
    
      mongoimport.exe:导入工具
    
      mongostat.exe:实时性能监控工具
    
      mongotop.exe:跟踪MongDB实例读写时间工具

     

    mongodb笔记的常用操作

     

  • css3倒影属性 box-reflect

    谷歌兼容

    CSS代码:
    .reflect-below-p {
        padding-bottom: 176px;
    }
    .reflect-below {
        -webkit-box-reflect: below;
    }
    .reflect-right {
        -webkit-box-reflect: right;
    }
    .reflect-right-translate {
        -webkit-box-reflect: right 10px;
    }
    .reflect-below-mask {
        -webkit-box-reflect: below 0 linear-gradient(transparent, white);
    }
    .reflect-below-img {
        -webkit-box-reflect: below 0 url(shuai2.png);
    }
    HTML代码:
    <strong>下倒影</strong>
    <p class="reflect-below-p"><img src="chaowei.jpg" class="reflect-below"></p>
    
    
    <strong>右倒影</strong>
    <p><img src="chaowei.jpg" class="reflect-right"></p>
    <strong>右倒影同时有偏移</strong>
    <p><img src="chaowei.jpg" class="reflect-right-translate"></p>
    
    
    <strong>下倒影同时有遮罩(线性渐变)</strong>
    <p class="reflect-below-p"><img src="chaowei.jpg" class="reflect-below-mask"></p>
    
    
    <strong>下倒影同时有遮罩(使用png图片)</strong>
    <p class="reflect-below-p"><img src="chaowei.jpg" class="reflect-below-img"></p>

    daoying

     

     

     

    火狐兼容

    CSS代码:
    .reflect-below-mask {
        -webkit-box-reflect: below 0 linear-gradient(transparent, white);    
    }
    .element-reflect-below {
        width: 150px; height: 176px;
        background: -moz-element(#reflect);
        transform: scaleY(-1);
    }
    .element-reflect-below:before {
        content: '';
        display: block;
        height: 100%;
        background-image: linear-gradient(to top, hsla(0,0%,100%,0), white);
    }
    
    .spin {
        animation: spin 3s infinite linear;
    }
    @keyframes spin {
        form { transform: rotate(0); }    
        to { transform: rotate(360deg); }    
    }
    HTML代码:
    <p><strong>下倒影同时有遮罩(线性渐变)</strong></p>
    <div id="reflect" class="wrap"><img src="chaowei.jpg" class="reflect-below-mask"></div>
    <div class="element-reflect-below"></div>
    <p><button id="button">图片转起来</button></p>

    daoying2

     

     IE兼容

    HTML代码:
    <svg width="150" height="352">
      <defs>
          <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%"   stop-color="#fff" stop-opacity="0"/>
          <stop offset="100%" stop-color="#fff" stop-opacity="1"/>
        </linearGradient>
        <mask id="mask">
          <rect x="0" y="176" width="150" height="177" fill="url(#gradient)"  />
        </mask>
        <pattern id="reflect" patternUnits="userSpaceOnUse" width="150" height="176">
          <image xlink:href="chaowei.jpg" width="150" height="176" />
        </pattern>
      </defs>
      <rect x="0" y="0" width="150" height="176" fill="url(#reflect)"></rect>
      <rect x="0" y="176" width="150" height="176" fill="url(#reflect)" mask="url(#mask)" transform="translate(75 264) scale(1, -1) translate(-75 -264)"></rect>
    </svg>

    具体查看:http://www.zhangxinxu.com/wordpress/2016/08/webkit-box-reflect-moz-element/

     

  • wordpress个人博客申请Let’s Encrypt免费SSL证书

    本人环境是ubuntu 16.04    64位系统   apache2申请Let’s Encrypt

    先检查看有没有Python 2.7版本以上(最好是2.7)直接在命令中输入:python  如果有会显示版本号。退出:exit()

    此时还需要apache已经是绑定了域名并且已经是用https://sdeno.com的这样形式访问。如果还没有搭建lamp环境请参考:

    ubuntu安装配置apache》这里不讲解这些。

    1,git clone https://github.com/letsencrypt/letsencrypt
    此命令会在目录下生成一些信息/etc/letsencrypt/

     

    2,关闭apache /nginx

    sudo /etc/init.d/apache2 stop

     

    3,再次检查是否占用了80和443端口

    netstat -ap | grep 80
    netstat -ap | grep 443
    如果占用了会输出内容,如果没有就不会输出内容

     

    4,开始执行获取SSL证书和私钥

    cd letsencrypt 
    ./letsencrypt-auto

    执行以上代码会出现以下步骤:

    ssl1

    选择第2个  secure

     

     

    ssl2

    选OK

     

     

    ssl3

    看到这步已经申请成功了

     

    SSL证书和私钥就在目录中/etc/letsencrypt/live/xgllseo.com,同时在目录/etc/apache2/sites-available/

    也帮我们创建了一个ssl文件xgllseo-le-ssl.conf,如果没有请参考avalon123-le-ssl-conf并自己创建,还要创建一个软连接

    sudo ln -s /etc/apache2/sites-available/xgllseo-le-ssl.conf /etc/apache2/sites-enabled/xgllseo-le-ssl.conf

    (如果自动帮我们生成好了xxx-le-ssl.conf,也会自动帮我们创建软连接的,也会帮我们自动获取证书和私钥路径)

     

    5,编辑apache2.conf

    //直接在最底部加上这代码
    
    Listen 443
    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl .crl
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLProxyCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLHonorCipherOrder on
    SSLProtocol all -SSLv2 -SSLv3
    SSLProxyProtocol all -SSLv2 -SSLv3
    SSLPassPhraseDialog builtin
    #SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
    #SSLSessionCacheTimeout 300
    #SSLMutex "file:/usr/local/apache/logs/ssl_mutex"
    
    
    
    将其中的:
     AllowOverride None
     修改为:
     AllowOverride All
    
    

     

    6,检查是否开启了Mod_rewrite 模块,一般情况下都是默认开启了的,不过检查下也好。

    在终端中执行
     sudo a2enmod rewrite
     指令后,即启用了 Mod_rewrite 模块。
     另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 
    来打开 Mod_rewrite 模块。用指令操作就是:
     sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

     

    7,重启apache

    sudo /etc/init.d/apache2 restart

    输入地址https://sdeno.com  看能否访问,如果可以那就成功了。

    不过直接输入域名时候是会直接跳转到http的而不是https,其实我们要把80端口自动跳转到443端口,也就是要做301跳转。

     

    8,编辑/etc/apache2/sites-available/xgllseo.conf,加入以下这3句话,(注意要看位置)

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*) https://sdeno.com/$1 [L,R=301]
    
    </VirtualHost>
    
    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

     

    9,重启apache

    sudo /etc/init.d/apache2 restart

     

    10,Let’s Encrypt免费SSL证书续期

    Let’s Encrypt免费SSL证书有效期是90天,也就是每三个月你就得续期一次。采用官方的方法获取到的免费SSL证书,你不需要更改Apache和Nginx配置代码,执行以下代码即可自动替换证书为新的(注意修改域名和邮箱):

    ./letsencrypt-auto certonly --renew-by-default --email freehao123@gmail.com -d freehao123.org -d www.freehao123.org     
    //没有邮箱就把--email freehao123@gmail.com删除

    要更新之前要停止mysql、apache2 、nginx

    sudo /etc/init.d/mysql stop
    sudo /etc/init.d/apache2 stop
    sudo /etc/init.d/nginx stop

    (到目录/etc/letsencrypt/找./letsencrypt-auto在执行一次)步骤是:

    1,选择要续期的域名

    a1

     

    2,选择第二个选择,相当于重装

    a2

     

    3,选择第一个

    a4

     

    更新完成重新开启mysql、apache2 、nginx

    sudo /etc/init.d/mysql restart
    sudo /etc/init.d/apache2 restart
    sudo /etc/init.d/nginx restart

    查看续期是否成功:

    xuqi

     

     

     

    如何查看过期时间

    谷歌浏览器查看

    ssltime1

    点击“锁头”—-点击“详细信息”

     

     

    ssltime2

    点击“view certificate”

     

     

    ssltime3

    就会自动弹出证书信息。

    也可以按F12—切换到“Security”选项卡—点击“View certificate”

     

     

     

    ————————————————————————————

    注意一些细节

    如果之前你网站是http://xxxx,使用了https://xxx了之后,发现能访问但是锁头并不是绿色的,或者有些页面是绿色锁头有些不是,并且在控制台还有报错,如:

    baocuo

    那么有可能就是你首页或者其他页面加载的时候使用了之前的http://的地址。统一修改就好了

     

    批量修改图片地址:

    UPDATE wp_posts SET post_content = replace(post_content, 'http://www.xgllseo.com', 'https://sdeno.com');
    //注意表前缀

    对于wordpress还有3处地方要改

    UPDATE wp_posts SET pinged = replace(pinged, 'http://www.xgllseo.com', 'https://sdeno.com')
    UPDATE wp_posts SET guid = replace(guid, 'http://www.xgllseo.com', 'https://sdeno.com')

    注:Wordpress数据库里面几个重点替换的表和字段:
    表wp_posts里面的post_content (文章内容)
    表wp_posts里面的pinged (ping内容)
    表wp_posts里面的guid (WordPress默认链接结构)
    表wp_comments里面的comment_author_url (留言作者URL地址 )

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

     多域名申请

    多域名申请如果重复执行不能成功,如:

    git clone https://github.com/letsencrypt/letsencrypt
    //再次执行,不能成功。

    这时候在/etc/letsencrypt/目录下在创建一个letsencrypt/目录,切换到/etc/letsencrypt/letsencrypt/目录下,在执行以下命令

    git clone https://github.com/letsencrypt/letsencrypt

    就会发现出现了2个以上的域名让你选择,选择要为申请证书的域名即可,一切按照以前步骤来即可。

     

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

    解决多次重定向问题,后台无法访问问题

    1,路径:网站根目录\wp-includes\functions.php找到代码 require( ABSPATH . WPINC . ‘/option.php’ );在下方添加:

    add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } 
    add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }

     

    2,路径:网站根目录\wp-config.php找到代码:** @package WordPress*/ ,在下面添加

    $_SERVER['HTTPS'] = 'on';define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true);