首页 文章 精选 留言 我的

精选列表

搜索[私有化部署],共10004篇文章
优秀的个人博客,低调大师

docker 容器部署

Docker 容器 : 容器是Docker又一核心的概念,简单来说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。 接下来具体介绍如何管理一个容器,包括创建、启动和停止等。 启动容器有两种方式: (1.)第一种是基于镜像新建一个容器并启动。 所需要的命令主要为docker run 实例: -t:让docker分配一个为终端(paseudo-tty)并绑定到容器的标准输入上 -i:让容器的标准输入保持打开(即交互式),可以使用-name给容器起个形象的名称。 在交互模式下,用户可以通过所创建的终端来输入命令 例如: 容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用ps或top来查看进程信息。 可见,容器中仅允许了指定的bash应用。这种特点使得Docker对资源利用率极高,是货真价实的轻量级虚拟化。 退出容器的方式: logout exit Ctrl+d Ctrl+c Ctrl -p + Ctrl -q 下面的命令是输出一个hello world 消息,终止容器。 当利用docker run 来创建容器时 ,Docker在后台运行的标准操作包括: 1.检查本地是否存在指定的镜像,不存在就从公有仓库下载 2.利用镜像创建并启动一个容器 3.分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 4.从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 5.从地址池配置一个IP地址给容器 6.执行用户指定的应用程序 7.执行完毕后容器被终止 查看容器: (2.)第二种是将在终止状态(stoped)的容器重新启动。 可以利用docker start 命令,直接将一个已经终止的容器启动运行 可以使用docker stop 来终止一个运行的容器。此外,当docker容器中指定的应用终结时,容器也自动 终止。终止状态的容器可以用docker ps -a 命令看到。 重启一个容器: 二、守护进程方式去运行docker 1.更多的时候,需要让docker容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。 例如: 或者 容器启动后会返回一个唯一的ID值,也可以通过docker ps 命令来查看容器信息 1.docker卡 run -d 运行提个新的容器,我们通过-d 命令来查看容器信息。 2.centos:centos6 是一个我们想要在内部运行命令的镜像。 3./bin/sh -c 是我们想要在容器内部运行的命令 4.while true;do echo hello weibo;sleep 1; done这是一个简单的脚本,我们仅仅是每秒打印一 次 hello world 一直到我们结束它。 2.用 docker inspect查看容器的信息 用docker inspect 查看容器的IP地址 用docker inspect 查看容器执行的程序 3.进入容器: 在使用-d参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,有很多种方法,包括使 用docker attach命令或nsenter命令。 (1.) 使用docker attach进入容器: 1.docker attache 允许我们进入后台进程 2.--sig-proxy=false 不使用容器转发信号,允许我们使用Ctrl -c来退出,执行docker ps查看在后台运行。 但是使用 attache 命令有时候并不方便。当多个窗口同时attach到同一个容器的时候,所有窗口都会 同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。 3.也可以执行docker exec进入运行的容器 (2.)使用nsenter进入容器: 安装:nsenter工具在util-Linux包2.23版本后包含。如果系统中util-Linux包没有该命令,可以按照 下面的方法从源码安装 #wgethttps://www.kernel.org/pub/utils/util-linux/v2.24/util-linux-2.24.tar.gz #tar util-linux-2.24.tar.gz #cd util-linux-2.24 # ./configure --without-ncurses&& make nsenter # cp nsenter /usr/local/bin 注意:nsenter可以访问另一个进程的名字空间。nsenter要正常工作需要有root权限。 庆幸的是centos7使用的是util-linux-2.23,所以就直接使用系统提供的util-linux包了。 为了使用nsenter命令工具连接到容器,还需要找到容器的第一个进程的pid,可以通过下面的命令获取到。 附:更简单的,建议大家下载 .bashrc_docker,并将内容放到 .bashrc中 #wget ~https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker #echo "[-f ~/.bashrc_docker] && ~/.bashrc_docker">>~/.bashrc #source ~/.bashrc 这个文件中定义了很多方便使用Docker的命令,例如docker-pid可以获取某个容器的pid;而docker- enter 可以进入容器或直接在容器内执行命令。 echo $(docker-pid<container>) docker-enter<container>ls 三、容器的导入和导出以及删除容器 (1.)导出容器 如果要导出本地某个容器,可以 使用docker export命令。 (2.)导入容器 可以使用docker import 从容器快照文件中再导入为镜像 除此之外,也可以通过指定URL或者某个目录来导入。例如: #docker importhttp://example.com/exampleimage.tgzexample/imagerepo 注意: docker load 和 docker import 的区别: 用户既可以使用docker load 来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个 容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保 存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入 时可以重新指定标签等元数据信息。 删除容器: 可以使用 docker rm来删除一个处于终止状态的容器 如果要删除一个运行中的容器,可以添加 -f 参数。docker会发送SIGKILL信号给容器。 批量删除多个容器:

优秀的个人博客,低调大师

TensorFlow安装部署

1.环境依赖 Centos7 组件 版本 Python 2.7.5 TensorFlow 0.14.0 pyhton依赖库 Package Version -------------------- --------- absl-py 0.8.0 astor 0.8.0 backports.weakref 1.0.post1 enum34 1.1.6 funcsigs 1.0.2 futures 3.3.0 gast 0.2.2 google-pasta 0.1.7 grpcio 1.23.0 h5py 2.9.0 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.0 Markdown 3.1.1 mock 3.0.5 numpy 1.16.5 pip 19.2.3 protobuf 3.9.1 setuptools 41.2.0 six 1.12.0 tensorboard 1.14.0 tensorflow 1.14.0 tensorflow-estimator 1.14.0 termcolor 1.1.0 Werkzeug 0.15.5 wheel 0.33.6 wrapt 1.11.2 2.资源准备 安装包下载 百度云盘链接:https://pan.baidu.com/s/1cm9mZpP1JRwyGpq945ffaQ 提取码:8bxj 3.安装 a).安装python-devel ## 在线安装 yum install python-devel ## 离线安装 rpm -ivh python-devel-2.7.5-80.el7_6.x86_64.rpm b).安装virtualenv ## 在线安装 pip install virtualenv ## 离线安装 c).安装tensorflow 进入虚拟机,安装tensorflow ## Step1: 创建虚拟机 virtualenv tensorflow ## Step2: 进入虚拟机 source ./tensorflow/bin/activate ## 在线安装 pip install tensorflow ## 离线安装 pip install --no-index --find-links=/path/to/tensorflow_1.14.0_package -r tensorflow_requirement.txt 4.测试 测试代码 import tensorflow as tf mnist = tf.keras.datasets.mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=5) model.evaluate(x_test, y_test) 执行测试 python test.py 测试结果 5.环境依赖下载 ## python-devel http://mirror.centos.org/centos/7/updates/x86_64/Packages/python-devel-2.7.5-80.el7_6.x86_64.rpm ## tensorflow-1.14.0 https://files.pythonhosted.org/packages/d3/59/d88fe8c58ffb66aca21d03c0e290cd68327cc133591130c674985e98a482/tensorflow-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl ## pip-19.2.3 https://files.pythonhosted.org/packages/00/9e/4c83a0950d8bdec0b4ca72afd2f9cea92d08eb7c1a768363f2ea458d08b4/pip-19.2.3.tar.gz ## virtualenv https://files.pythonhosted.org/packages/f7/69/1ad2d17560c4fc60170056dcd0a568b83f3453a2ac91155af746bcdb9a07/virtualenv-16.7.4-py2.py3-none-any.whl

优秀的个人博客,低调大师

docker部署sonarqube

gitlab-ce + gitlab-runner + sonarqube,在提交代码时对代码质量进行检测,对不符合要求的代码不允许提交到gitlab 1、配置docker-compose.yml version: '3.1' services: gitlab-ce: image: 'gitlab/gitlab-ce:latest' container_name: gitlab-ce restart: always hostname: 'gitlab.localhost.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.31.109' ports: - '80:80' - '443:443' - '10022:22' volumes: - '/root/gitlab-ce/home/config:/etc/gitlab' - '/root/gitlab-ce/home/logs:/var/log/gitlab' - '/root/gitlab-ce/home/data:/var/opt/gitlab' networks: - 'default' gitlab-runner: image: 'gitlab/gitlab-runner:latest' container_name: gitlab-runner depends_on: - 'gitlab-ce' restart: always volumes: - '/root/gitlab-ce/runnerconfig:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock' networks: - 'default' links: - 'gitlab-ce:gitlab.localhost.com' mysql: image: mysql:5.7.27 container_name: mysql command: --default-authentication-plugin=mysql_native_password restart: always ports: - 3306:3306 volumes: - /root/gitlab-ce/mysql/data:/var/lib/mysql - /root/gitlab-ce/mysql/logs:/logs - /root/gitlab-ce/mysql/init:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: root@123456 MYSQL_USER: test #创建test用户 MYSQL_PASSWORD: test #设置test用户的密码 networks: - 'default' sonarqube: image: sonarqube:7.7-community # image: sonarqube:latest container_name: sonarqube ports: - "9000:9000" - "9002:9002" volumes: - "/root/gitlab-ce/sonarqube/conf:/opt/sonarqube/conf" - "/root/gitlab-ce/sonarqube/extensions:/opt/sonarqube/extensions" - "/root/gitlab-ce/sonarqube/logs:/opt/sonarqube/logs" - "/etc/sysctl.conf:/etc/sysctl.conf" # - "/root/gitlab-ce/sonarqube/data:/opt/sonarqube/data" environment: sonar.jdbc.username: root #root管理员用户密码 sonar.jdbc.password: root@123456 #创建test用户 sonar.jdbc.url: "jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" restart: always depends_on: - mysql links: - mysql networks: - 'default' sysctls: - net.core.somaxconn=1024 ulimits: nproc: 65536 nofile: soft: 65536 hard: 65536 networks: default: driver: 'bridge'

优秀的个人博客,低调大师

Nginx 部署HTTPS

系统:Linux Centos 7.4 x64软件:Nginx 1.12.2注:需要阿里云申请本地域名与证书并添加下载到本地。 注:证书文件为 xxxx.pem 与 xxxx.key 两个文件。Nginx 配置文件内添加HTTPS vim /etc/nginx/nginx.conf http { server { listen 443 ssl; server_name xxx.xxx.com; ssl on; root /; index index.html index.htm; ssl_certificate /etc/nginx/cert/215058739960601.pem; ssl_certificate_key /etc/nginx/cert/215058739960601.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /; index index.html index.htm; } }}含注释http { server { # 启动443端口 listen 443 ssl; # 证书申请的域名 server_name xxx.xxx.com; # 开启SSL协议 ssl on; # 指定访问根目录 root /; # 指定索引 index index.html index.htm; # 指定xxx.pem证书文件 ssl_certificate /etc/nginx/cert/215058739960601.pem; # 指定xxx.key证书文件 ssl_certificate_key /etc/nginx/cert/215058739960601.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; # 指定访问目录及索引 location / { root /; index index.html index.htm; } } }

优秀的个人博客,低调大师

redash部署使用

一、安装 从https://github.com/getredash/redash 拉取代码,运行docker-compose.production.yml 1,docker-compose文件调整 主要修改了两处: 1,增加了redis和postgres的db文件与宿主机的映射,不让docker容器停止后数据丢失。 官方默认的docker-compose.production.yml在docker-compose down 命令后,所有的配置信息都丢失了 2,增加了redis和postgres的端口映射,方便调试,线上环境也可以关掉。 3,修改REDASH_COOKIE_SECRET。 修改后的docker-compose.production.yml文件如下: # This is an example configuration for Docker Compose. Make sure to atleast update # the cookie secret & postgres database password. # # Some other recommendations: # 1. To persist Postgres data, assign it a volume host location. # 2. Split the worker service to adhoc workers and scheduled queries workers. version: '2' services: server: image: redash/redash:latest command: server depends_on: - postgres - redis ports: - "5000:5000" environment: PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" REDASH_COOKIE_SECRET: "Q422k6vaXUk8" REDASH_WEB_WORKERS: 4 restart: always worker: image: redash/redash:latest command: scheduler environment: PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" QUEUES: "queries,scheduled_queries,celery" WORKERS_COUNT: 2 restart: always redis: image: redis:3.0-alpine ports: - "6379:6379" volumes: - ./data/redis_data:/data restart: always postgres: image: postgres:9.5.6-alpine ports: - "5432:5432" volumes: - ./data/postgresql_data:/var/lib/postgresql/data restart: always nginx: image: redash/nginx:latest ports: - "88:80" depends_on: - server links: - server:redash restart: always 2,创建db [root@VM_38_115_centos redash]# docker-compose -f docker-compose.production.yml run --rm server create_db Starting redash_redis_1 Starting redash_postgres_1 [2018-09-11 09:02:39,580][PID:1][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt [2018-09-11 09:02:39,601][PID:1][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt [2018-09-11 09:02:41,707][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl. [2018-09-11 09:02:41,708][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL. [2018-09-11 09:02:41,724][PID:1][INFO][alembic.runtime.migration] Running stamp_revision -> 969126bd800f 3,运行 # docker-compose -f docker-compose.production.yml up 运行起来的容器如下: 4,邮件配置 For the system to be able to send emails (for example when alerts trigger), you need to set the mail server to use and the host name of your Redash server. If you’re using one of our images, you can do this by editing the .env file: # Note that not all values are required, as they have default values. export REDASH_MAIL_SERVER="" # default: localhost export REDASH_MAIL_PORT="" # default: 25 export REDASH_MAIL_USE_TLS="" # default: false export REDASH_MAIL_USE_SSL="" # default: false export REDASH_MAIL_USERNAME="" # default: None export REDASH_MAIL_PASSWORD="" # default: None export REDASH_MAIL_DEFAULT_SENDER="" # Email address to send from export REDASH_HOST="" # base address of your Redash instance, for example: "https://demo.redash.io" docker-compose文件中配置 server: image: redash/redash:latest environment: ... #邮箱 REDASH_MAIL_SERVER: "smtp.exmail.qq.com" REDASH_MAIL_PORT: 465 REDASH_MAIL_USE_TLS: "false" REDASH_MAIL_USE_SSL: "true" REDASH_MAIL_USERNAME: "no-reply@yoursite.com" REDASH_MAIL_PASSWORD: "111111" REDASH_MAIL_DEFAULT_SENDER: "no-reply@yoursite.com" REDASH_HOST: "http://redash.mysite.com" 测试是否配置成功: [root@VM_38_115_centos ~]# docker exec -it redash_server_1 python manage.py send_test_mail [2018-09-11 10:02:28,627][PID:37][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt [2018-09-11 10:02:28,649][PID:37][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt 自己邮件会收到Test message。 PS:配置成功了,但在Alerts中触发了警告,设置的接受邮件没收到警告信息。还没找到原因... 二、使用 1,配置数据库 2,查询语句 获取表的更新时间 增加图表展示: 3,Dashboards 三、用户管理 添加用户 四、特性 1,支持iframe嵌入到其它网页 对于任何Query,表格和图形都支持embed点击Embed弹出: 这个功能可以实现自己系统中集成报表展示。 2,可视化图形支持的类型 箱型图 线形图、柱状图、面积图、饼图、散点图 队列图 计数器 漏斗图 地图 透视表 桑基图 桑基图用于表达流量分布于结构对比,最初的发明者使用它来呈现能量的流动与分布。 旭日图(Sunburst) 词云图 五,实践 根据scrapy log日志表,设计出一张bashboard监控面板: 参考 redash邮箱设置 redash环境变量 Visualization Types

优秀的个人博客,低调大师

Cassandra 安装部署

python版本:2.7 jdk版本:1.8 Cassandra版本:3.11.2 官网: http://cassandra.apache.org/ 下载: wget http://mirrors.tuna.tsinghua.edu.cn/apache/cassandra/3.11.2/apache-cassandra-3.11.2-bin.tar.gz 1.解压: tar xvzf apache-cassandra-3.11.2-bin.tar.gz -C ../app/ 2.修改目录名称: mv apache-cassandra-3.11.2/ cassandra-3.11.2/ 3.配置环境变量: vim ~/.bash_profile export CASSANDRA_HOME=/home/hadoop/app/cassandra-3.11.2 export PATH=$CASSANDRA_HOME/bin:$PATH source ~/.bash_profile 4.修改配置文件: vim $CASSANDRA_HOME/conf/cassandra.yaml 修改如下位置,为对应的主机名称: rpc_address: online101 listen_address: online101 - seeds: "online101" - cluster_name: 'online_01' # 可选项 修改 启动脚本.py文件 vim $CASSANDRA_HOME/bin/cqlsh.py DEFAULT_HOST = 'online101' cd $CASSANDRA_HOME/pylib python setup.py install 初始化类似: cassandra -f -R 进入cqlsh cqlsh 或者 cqlsh -ucassandra -pcassandra

优秀的个人博客,低调大师

Spring部署步骤

其实也就那么几步:添加jar包;写配置文件;写相应的java类。当然,如果 需要和Struts2.0集成,还是有几个地方需要多加注意的。 1、jar包 可以单独加Spring-web.jar、Spring-aop.jar这些包,也可以加一个总包Spring.jar。只要包含需要用到的类就 行。 如果需要Spring和Struts2.0集成,记得加上struts2-spring-plugin.jar。 2、写配置文件 applicationContext.xml嘛,基本写法就这样咯: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="BASIC" class="common.action.BasicAction"></bean> </beans> 如果与Struts集成,记得在web.xml里写上,声明由Spring来做类管理 <!-- 以下是Spring的监听器定义 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 以上是Spring的监听器定义 --> 还可以加一行,定义applicationContext.xml的位置或名称。*是通配符。 <!-- 以下是Spring配置文件位置的定义 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applicationContext_*.xml </param-value> </context-param> <!-- 以上是Spring配置文件位置的定义 --> 3、java类 java类的编写只有一条需要注意:要通过Spring来注入的属性,需要在类中写明getter和setter方法。比如 applicationContext.xml中定义了: <bean id="BASIC" class="common.action.BasicAction"> <property name="errorbean" ref="eb"/> </bean> <bean id="eb" class="common.bean.ErrorBean"></bean> 在BasicAction.java中就必须要有如下定义,否则Spring是要报错的。 private ErrorBean errorbean; public ErrorBean getErrorbean() { return errorbean; } public void setErrorbean(ErrorBean errorbean) { this.errorbean = errorbean; } 按上述步骤配置好之后,Spring的ioc功能应该是可以正常使用了。其它方面,如aop等,另外记录吧 本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/799058,如需转载请自行联系原作者

优秀的个人博客,低调大师

Docker部署CouchDB

CouchDB介绍: CouchDB是Apache组织发布的一款开源的、面向文档类型的NoSQL数据库。由Erlang编写,使用json格式保存数据。CouchDB以RESTful的格式提供服务 可以很方便的对接各种语言的客户端 CouchDB最大的竞争对手就是熟悉的MangoDB。它们的不同点比较会在另外一篇里面写入 CouchDB 目标是做下一代的Web应用存储系统 CouchDB下载,安装: 官网:http://couchdb.apache.org/ 目前只有2.0.0版本 2016年9月份 CouchDB 安装完成后自动启动,默认是5984 Docker下的安装配置: 1、先创建一个couchdb容器,并赋值给couch1 1 2 COUCH1=$(dockerrun-d-p5984- v /var/lib/couchdb couchdb) root@ubuntu:~ #echo$COUCH1 1 6d708f72e25e9f0d693aa5a8ce5afd1a61e945355f728f409bc5a90676e0524c 2、给couchDB中插入数据 要确保你的HOST是可用的 1 2 3 $HOST=localhost #这里如果localhost不行,就更换成主机ip $URL= "http://$HOST:$(dockerport$COUCH15984|grep-o'[1-9][0-9]*$')/_utils/" $ echo "Navigateto$URLinyourbrowser,andusethecouchinterfacetoadddata" 操作结果: 1 2 3 4 5 6 7 root@ubuntu:~ #HOST=123.xx.xx.x8#这里是公网ip就不显示出来了 root@ubuntu:~ #URL="http://$HOST:$(dockerport$COUCH15984|grep-o'[1-9][0-9]*$')/_utils/" root@ubuntu:~ #dockerport$COUCH15984#这里映射到了宿主机32768端口,并监听所有ip 0.0.0.0:32768 root@ubuntu:~ #echo"Navigateto$URLinyourbrowser,andusethecouchinterfacetoadddata" Navigatetohttp: //123 .xx.xx.x8:32768 /_utils/ in yourbrowser,andusethecouchinterfacetoadddata #打开浏览器输入http://123.xx.xx.x8:32768/_utils/将会显示couchDB的页面 创建数据库账号 控制台页面的左边的主要部分列出了当前数据库,并提供了一个 Create Database … 的操作;右边的侧边栏呢,从上到下分别提供了 工具、 文档 、 诊断 和 当前数据库 3个菜单。最右下角是版本号和一句话:“Welcome to Admin Party! Everyone is admin. Fix this”,什么意思呢?就是说ConchDB默认用户都是admin,对于用惯了关系型数据库的我们,本能的就会感觉这并不安全,没错,其实就是不安全!!!!,所以,点击 Fix this 来新建一个用户吧。 注意:如果使用中发现某些按钮是灰色的或者 Compact & Cleanup 一直在转圈等待,请先看看自己是不是管理员。 点击Create Database …并输入一个数据库名称就可以新建一个数据啦 创建成功后会跳转到当前新建的数据库,如果我们返回Overview页面就会发现刚才新建的数据库已经被添加到列表中了。 CouchDB的增删改操作【INSERT/UPDATE/DELETE】 在新建的数据库的管理页面中点击New Document,我们就可以新建一个文档,其中会包含一个默认的Id字段作为唯一标识,我们可以不用管他,同时也可以点击Add Field来新增字段,这里假设我们新增一个人,字段如下图: 点击右面的“source”按钮,就能看到json格式的内容 点击上面的“Save doucement”来保存数据,然后再主页就能看到我们新创建的数据库了 双击Field或者Value列的单元格可以更改字段名或字段值 点击右侧的绿色对勾按钮后,该字段的值将会被保存,此时切换到Source标签就可以看到json格式的数据 编辑完成后点击上方的Save Document按钮就可以将刚才的json数据保存到数据库中,保存成功后系统会自动为我们添加一个rev字段,这个字段代表当前文档的版本号 更新操作呢也比较简单,只需要单击当前文档的Key或者双击Value就可以进入编辑页面,在编辑页面中不但能修改字段的Key/Value,还可以新增和删除字段,同样,点击Save Document即可保存当前修改,同时,我们可以注意到,该文档的rev值已经发生了变化,这代表该文档的版本号已经被更新 同样,进入当前记录的详情页我们就可以看到Delete Document按钮,点击之后当前文档就会被删除。 但是,值得注意的是,当我们使用Delete Document操作将文档删除后,表面看是没有数据了,但是该数据仍然占用了那么多空间,并没有减少,如下图: 这时我们需要进入数据库详情页,使用Compact & Cleanup…中的Compact Database操作来清理被占用的空间,如果发现此功能点击之后一直在转圈等待,去看看自己是不是管理员用户吧。 使用Docker再次创建一个couchDB 1 COUCH2=$(dockerrun-d-p5984--volumes-from$COUCH1couchdb) 使用浏览器浏览第二个数据库 1 2 3 HOST=localhost #这里如果localhost不行,就更换成主机ip URL= "http://$HOST:$(dockerport$COUCH25984|grep-o'[1-9][0-9]*$')/_utils/" echo "Navigateto$URLinyourbrowser,andusethecouchinterfacetoadddata" 这里可以看到数据已经同步到couchdb的第二台上面临 使用 cURL 通过 RESTful API 对 CouchDB 进行增删查改 Tips: 对cURL还不太了解的亲们可以搜索下,很好用的工具,可以从这里下载:http://curl.haxx.se/download/ 注意:为了测试方便,我们删除原来的数据库。 前面已经介绍过,CouchDB支持使用RESTful API的方式来对数据进行操作,例如,我们在浏览器中输入http://x.x.x.x:32768/demo就可以查看demo数据库中详细信息。如图: 下面是借鉴别人的操作流程,自己没有时间敲了,大家随意感受一下CouchDB流畅的RESTful操作方式: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 #获取CouchDB相关信息 curl-XGEThttp: //127 .0.0.1:5984 { "couchdb" : "Welcome" , "uuid" : "a853c053a5a54a4d3ccbaad0d9ffd3b0" , "version" : "1.6.1" , "vendor" :{ "version" : "1.6.1" , "name" : "TheApacheSoftwareFoundation" }} #创建demo数据库(需要admin权限,参照下一条命令) curl-XPUThttp: //127 .0.0.1:5984 /demo { "error" : "unauthorized" , "reason" : "Youarenotaserveradmin." } #使用用户名密码登录CouchDB,并创建demo数据库 curl-XPUThttp: //username :password@127.0.0.1:5984 /demo { "ok" : true } #查看所有数据库 curl-XGEThttp: //127 .0.0.1:5984 /_all_dbs [ "_replicator" , "_users" , "demo" ] #查看demo数据库相关信息 curl-XGEThttp: //127 .0.0.1:5984 /demo { "db_name" : "demo" , "doc_count" :0, "doc_del_count" :0, "update_seq" :0, "purge_seq" :0, "compact_running" : false , "disk_size" :79, "data_size" :0, "instance_start_time" : "1452000207199340" , "disk_format_version" :6, "committed_update_seq" :0} #向demo数据库中添加一个文档(自动生成Id),注意:windows下需要使用Content-Type:application/json的HttpHeader curl-H "Content-Type:application/json" -XPOSThttp: //127 .0.0.1:5984 /demo -d{\"name\":\"fooly\"} { "ok" : true , "id" : "3ebb59dd78ff448f283f48817800321c" , "rev" : "1-0e4ea534f2c1e7f05e21804b5f2f7a71" } #查看demo数据库中的所有文档 curl-XGEThttp: //127 .0.0.1:5984 /demo/_all_docs { "total_rows" :1, "offset" :0, "rows" :[ { "id" : "3ebb59dd78ff448f283f48817800321c" , "key" : "3ebb59dd78ff448f283f48817800321c" , "value" :{ "rev" : "1-0e4ea534f2c1e7f05e21804b5f2f7a71" }} ]} #获取一个uuid curl-XGEThttp: //127 .0.0.1:5984 /_uuids { "uuids" :[ "3ebb59dd78ff448f283f4881780033c0" ]} #向demo数据库中添加一个文档(使用获取到的uuid作为Id) curl-H "Content-Type:application/json" -XPUThttp: //127 .0.0.1:5984 /demo/3ebb59dd78ff448f283f4881780033c0 -d{\"name\":\"momo314\"} { "ok" : true , "id" : "3ebb59dd78ff448f283f4881780033c0" , "rev" : "1-eb393d36ac1ad38ada8361d94fc5d0b6" } #更新指定Id的文档(但是失败了,因为CouchDB是按版本提交的,同一个源提交多次会造成一定的混乱。所以,需要指定文档版本进行控制。) curl-H "Content-Type:application/json" -XPUThttp: //127 .0.0.1:5984 /demo/3ebb59dd78ff448f283f4881780033c0 -d{\"name\":\"momo314\",\"age\":18} { "error" : "conflict" , "reason" : "Documentupdateconflict." } #更新指定Id和指定版本的文档 curl-H "Content-Type:application/json" -XPUThttp: //127 .0.0.1:5984 /demo/3ebb59dd78ff448f283f4881780033c0 -d{\"_rev\":\"1-eb393d36ac1ad38ada8361d94fc5d0b6\",\"name\":\"momo314\",\"age\":18} { "ok" : true , "id" : "3ebb59dd78ff448f283f4881780033c0" , "rev" : "2-5d081e17588c03c27340035e420edecd" } #获取指定Id的文档内容 curl-XGEThttp: //127 .0.0.1:5984 /demo/3ebb59dd78ff448f283f4881780033c0 { "_id" : "3ebb59dd78ff448f283f4881780033c0" , "_rev" : "2-5d081e17588c03c27340035e420edecd" , "name" : "momo314" , "age" :18} #删除指定Id和rev版本号的文档 curl-XDELETEhttp: //username :password@127.0.0.1:5984 /demo/3ebb59dd78ff448f283f4881780033c0 ?rev=2-5d081e17588c03c27340035e420edecd { "ok" : true , "id" : "3ebb59dd78ff448f283f4881780033c0" , "rev" : "2-5d081e17588c03c27340035e420edecd" } #查看demo数据库中的所有文档(刚才的文档确实被删除掉了) curl-XGEThttp: //127 .0.0.1:5984 /demo/_all_docs { "total_rows" :1, "offset" :0, "rows" :[ { "id" : "3ebb59dd78ff448f283f48817800321c" , "key" : "3ebb59dd78ff448f283f48817800321c" , "value" :{ "rev" : "1-0e4ea534f2c1e7f05e21804b5f2f7a71" }} ]} #删除demo数据库(需要admin权限,参照下一条命令) curl-XDELETEhttp: //127 .0.0.1:5984 /demo { "error" : "unauthorized" , "reason" : "Youarenotaserveradmin." } #使用用户名密码登录CouchDB,并删除demo数据库 curl-XDELETEhttp: //username :password@127.0.0.1:5984 /demo { "ok" : true } #查看所有数据库(demo数据库确实被删除掉了) curl-XGEThttp: //127 .0.0.1:5984 /_all_dbs [ "_replicator" , "_users" ] 本文转自 kesungang 51CTO博客,原文链接:http://blog.51cto.com/sgk2011/1911814,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册