windows下MongoDB4.0的副本集搭建

复制三个MongoDB Server,一个为主节点Primary ,一个为辅节点Secondary,另一个为仲裁节点Arbiter

以无认证方式启动三个Server节点

server1> mongod --noauth --config mongod.cfg   
server2> mongod --noauth --config mongod.cfg   
server3> mongod --noauth --config mongod.cfg   

//server1   mongod.cfg
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  oplogSizeMB: 200
  replSetName: replset

//server2   mongod.cfg
net:
  port: 27018
  bindIp: 0.0.0.0
replication:
  oplogSizeMB: 200
  replSetName: replset

//server3   mongod.cfg
net:
  port: 27019
  bindIp: 0.0.0.0
replication:
  oplogSizeMB: 200
  replSetName: replset

连接server1

> mongo
> rs.initiate();   //初始化副本集设置
> rs.add('mg.imily.net:27018');    //添加server2
> rs.addArb('mg.imily.net:27019');    //添加server3
> cfg = rs.conf();
> cfg.members[0].priority = 100;   //设置server1优先级
> cfg.members[1].priority = 50;    //设置server2优先级
> rs.reconfig(cfg);   //重新配置副本集信息

按照上一篇方式创建帐号密码后,接着需要创建节点之间的认证keyfile,用来在各节点之间的认证。

> openssl.exe rand 128 -base64 -out ./keyfile
//附下载: openssl.zip

//创建后复制到server1,server2,server3的bin目录中,并在三个mongod.cfg中添加
security:
  authorization: enabled
  keyFile: keyfile

最后添加server1,server2,server3作为系统服务,启动即可

显示更多

windows下的MongoDB安装与安全认证设置

MongoDB安装完后有两种启动方式,我们要以服务方式启动,并设置访问权限

安装完后进入安装目录,新建配置文件 config.cfg

systemLog:
    destination: file
    path: E:\MongoDB\mongod.log
storage:
    dbPath: E:\MongoDB\data 
net:
    bindIp: 0.0.0.0
    port: 27017

然后启动一个命令行启动mongod服务:

cd C:\Program Files\MongoDB\Server\3.6\bin
mongod --config="C:\Program Files\MongoDB\Server\3.6\bin\config.cfg"

再另启一个命令行进入mongodb设置用户密码

mongo.exe
use admin
db.createUser({user:'admin',pwd:'password',roles:[{role:'root',db:'admin'}]})

# 设置其他数据库
use admin
db.auth('admin','password');
db.createUser({user:'admin',pwd:'password',roles:[{role:'dbAdmin',db:'xxx'},{role:'readWrite',db:'数据库名称'}]});

#角色包括:

1. 数据库用户角色:read、readWrite;  

2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;       

3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

4. 备份恢复角色:backup、restore;

5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

6. 超级用户角色:root

关闭两个命令行,再启动一个命令行添加windows服务

sc create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.6\bin\mongod.exe\" --service --auth --config=\"C:\Program Files\MongoDB\Server\3.6\bin\config.cfg\"" DisplayName= "MongoDB Server" start= "auto"
# 划线部分替换为安装目录

# 启动服务
sc start MongoDB

再次访问时需要输入:db.auth(‘admin’,’password’)  完成认证

显示更多

Win7搭建Docker环境+Helloworld测试容器(二)

接下来,我们按照官网继续操作

操作前需要在官网注册帐号 

1.分享我们的镜像(镜像和容器区别,转载 http://www.cnblogs.com/zhangmingcheng/p/5718042.html

在Docker终端执行以下命令,将镜像上传到您的仓库中,类似GIT命令

docker login  #我登陆的是imily帐号
docker tag friendlyhello imily/repository:hello    
docker push imily/repository:hello   #推送镜像到imily仓库

 2.运行仓库中的镜像

docker run -p 4000:80 imily/repository:hello   #运行镜像

3.利用容器建立负载均衡测试,

建立docker-compose.yml文件,可创建容器 服务

version: "3"
services:
  web:
    image: imily/repository:hello
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

4.运行容器的5个实例,来进行负载均衡测试

docker swarm init --advertise-addr 192.168.99.100 #换成你的IP
docker stack deploy -c docker-compose.yml helloapp   #运行实例
docker stack ps helloapp  #此命令可查看容器运行栈,会显示5个实例

打开浏览器可看到结果,刷新后会显示不同的hostname

运行期间可直接修改docker-compose.yml文件并运行命令更新 docker stack deploy -c docker-compose.yml helloapp

停止运行可运行如下命令

docker stack rm helloapp

 5.集群测试

docker-machine create --driver virtualbox myvm1 #创建虚拟机1
docker-machine create --driver virtualbox myvm2 #创建虚拟机2
docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.101:2377"  #利用ssh, 让myvm1执行命令docker swarm init,使之称为管理员

#小提示:可执行  docker-machine ssh myvm1  #转到myvm1虚拟机shell下,运行完后执行exit退出
导出TOKEN :
docker-machine ssh myvm1 "docker swarm join-token --quiet worker" > token.txt
docker-machine ssh myvm2  #转到myvm2下,执行
docker swarm join --token 你的token 192.168.99.101:2377
成功执行后
exit #返回到主shell控制台
docker-machine scp docker-compose.yml myvm1:~  #复制docker-compose.yml文件到myvm1用户目录
docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml helloapp"  #运行容器服务

 此时打开 192.168.99.101 会打不开,这时候需要进入VirtualBox设置myvm1和myvm2网络,打开端口

 

然后就可以在浏览器打开 http://192.168.99.101  和 http://192.168.99.102 了

 

 

显示更多

Win7搭建Docker环境+Helloworld测试容器(一)

目前Windows Docker 支持 Windows 10 Professional or Enterprise 64-bit.

win7或win8需要下载 Docker Toolbox 下载地址:https://download.docker.com/win/stable/DockerToolbox.exe

我自己操作系统为win7

1.安装DockerToolbox后桌面会出现三个图标

2.运行官方HelloWorld,直接打开Docker Terminal  输入:

docker run hello-world

运行后正常情况下会显示

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
省略...

如果不正常尝试连接VPN试试 3.创建一个简单的容器实例: 我在桌面创建了一个文件夹,有三个文件 文件内容如下 DockerFile :

# Use an official Python runtime as a base image
FROM python

# Set the working directory to app
WORKDIR app

# Copy the current directory contents into the container at app
ADD . app

# Install any needed packages specified in "app/requirements.txt"
RUN pip install -r  "app/requirements.txt"

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD python "app/app.py"

requirements.txt

Flask Redis 

app.py

from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "</code></pre>
<h3>Hello {name}!</h3>
<pre><code></code></pre>
" \ "<b>Hostname:</b> {hostname}
" \ "<b>Visits:</b> {visits}" 
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) 
if __name__ == "__main__": 
    app.run(host='0.0.0.0', port=80)

4.生成一个实例,输入命令(注意当前目录为Docker-Test):docker build -t friendlyhello .   5.运行生成的实例:docker run -d -p 4001:80 friendlyhello 正常的话 浏览器输入容器IP:4001就可以访问了, 我的是http://192.168.99.100:4001/  

显示更多

使用Android Studio集成环境+编写安卓APP的HelloWorld+调试运行

下载安装Android Studio 这里给出最新2.0版本的下载链接: https://dl.google.com/dl/android/studio/install/2.3.2.0/android-studio-bundle-162.3934792-windows.exe

安装后第一次打开后可能会需要翻墙,这时候可以跳过也可以找代理VPN

打开后创建新项目

点击完成就创建好第一个HelloWorld项目了^_^

下来我们创建安卓模拟器

创建完成我们可以开始调试运行了

如果我们中间需要log输出,则利用自带的logcat即可

显示更多

常用JS正则表达式验证

//数据验证
DataVal = {};
//数字验证
DataVal.number = function(value) {
return /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
};
//正整数
DataVal.digits = function(value) {
return /^\d+$/.test(value);
};
//日期
DataVal.date = function(value) {
return /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);
};
//邮箱
DataVal.email = function(value) {
return /^((([a-z]|\d|[!#\$%&’\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&’\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value);
};
//中文
DataVal.chinese = function(value) {
return /^[\u4e00-\u9fa5]+$/.test(value);
};
//英文
DataVal.english = function(value) {
return /^[a-z]+$/i.test(value);
};
//网址
DataVal.url = function(value) {
return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&’\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&’\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&’\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&’\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&’\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
};
//身份证
DataVal.idCard = function(value) {
return /(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/.test(value);
};
//QQ
DataVal.qq = function(value) {
return /^[1-9]\d{4,11}$/.test(value);
};
//手机
DataVal.mobile = function(value) {
return /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/.test(value);
};
//电话
DataVal.phone = function(value) {
return /^(\d{3,4}-?)?\d{7,9}$/g.test(value);
};
//邮编
DataVal.zipCode = function(value) {
return /^[0-9]{6}$/.test(value);
};

显示更多

创建php的Symfony框架测试网站

1.安装PHP7.1.3 + mysql5.7
2.下载composer for windows 点我打开下载页面
3.下载symfony安装文件,cmd下执行命令:php -r “readfile(‘https://symfony.com/installer’);” > symfony
4.cd到项目目录,利用symfony创建symfony测试网站项目:php symfony new TestWeb
5.cd到TestWeb目录执行composer命令: composer 下载更新各种依赖包
6.执行 bin/console server:run //启动服务器
7.打开http://localhost:8000/ 查看测试网站

添加自定义MVC代码

测试期间:
执行 bin/console debug:container //输出所有可利用的服务

显示更多

创建python3的Django测试网站

1.首先下载python3.6,安装之https://www.python.org/downloads/release/python-360/
2.利用pip 安装数据库mysqlclient驱动: pip install mysqlclient
3.利用pip安装django : pip install django
4. cd到项目目录,假设我的目录为D:\TestDjango
5. 利用django-admin命令:django-admin startproject TestWeb 生成TestWeb网站项目
6. 利用manage.py命令启动网站:python manage.py runserver
7. 浏览器打开http://localhost:8000/即可浏览demo网页

显示更多

Git使用说明

远程创建一个仓库

本地执行

git remote add origin ssh://xxx.git 添加origin为远程仓库
git init 初始化本地仓库
git add . 添加所有文件到暂存区
git commit -am ‘测试提交’ 添加所有文件到仓库区
git add. / commit -m ‘测试提交2’ 继续修改添加
git log 查看分支历史
git reflog 查看HEAD指针引用历史
git reset –hard/mixed/soft commitId/HEAD^^ 回滚操作记录到指定提交点
git checkout commitId/HEAD^^ — fileName 回滚某个文件到某个提交点

 

git pull origin master 从远程拉到本地
git push origin master 从本地推到远程
git reset –hard HEAD^^ 回退版本
git push origin master –force 强制推送到远程,使远程回退
git push origin dev:master 推送dev分支当作主分支
git push –delete origin dev 删除远程分支
git push origin dev 推送dev分支并当作dev分支

可下载后放大

显示更多