首页 文章 精选 留言 我的

精选列表

搜索[搭建],共10000篇文章
优秀的个人博客,低调大师

ECS上搭建Docker(CentOS7)

本文讲述Docker在CentOS系统上的部署过程。Ubuntu系统下安装docker,您可以点击此处查看。更多详细的实践您可以参考docker实践文档 适用对象 适用于熟悉Linux操作系统,刚开始使用阿里云ECS的开发者。 主要内容 部署docker docker基本用法 镜像制作 部署docker 本文主要说明手动安装docker的操作步骤,您也可以选择在云市场购买相应镜像,一键部署云服务器。 本文实践操作系统版本为CentOS 7.2 64 3.10.0-514.6.2.el7.x86_64。 Docker要求64位的系统且内核版本至少为3.10 1、添加yum源。 # yum install epel-release –y # yum clean all # yum list 2、安装并运行Docker。 # yum install docker-io –y # systemctl start docker 3、检查安装结果。 # docker info 出现以下xin说明信息则表明安装成功。 docker基本用法 1、Docker守护进程管理。 # systemctl start docker #运行Docker守护进程 # systemctl stop docker #停止Docker守护进程 # systemctl restart docker #重启Docker守护进程 2、镜像管理。 下载基础镜像,具体操作可参考如何下载docker镜像,本文使用的是来自阿里云仓库的Apache镜像。您可在阿里云docker市场搜索更多镜像。 # docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 修改标签,由于阿里云仓库镜像的镜像名称很长,可以修改镜像标签以便记忆区分。 # docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1 查看已有镜像。 # docker images 强制删除镜像。 # docker rmi –f registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 3、容器管理。e121d5f99e1e是执行docker images命令查询到的IMAGE ID,使用docker run命令进入容器。 # docker run –ti e121d5f99e1e /bin/bash 使用exit可以退出当前容器。run命令加上–d参数可以在后台运行容器,—name指定容器命名为apache。 # docker run -d --name apache e121d5f99e1e 进入后台运行的容器。 # docker exec -ti apache /bin/bash 将容器做成镜像。 # docker commit containerID/containerName newImageName:tag 为了方便测试和恢复,先将源镜像运行起来后再做一个命名简单的镜像做测试。 # docker commit 4c8066cd8c01 apachephp:v1 运行容器并将宿主机的8080端口映射到容器里去。 # docker run -d -p 8080:80 apachephp:v1 在浏览器输入宿主机ip加8080端口访问测试,出现以下内容则说明运行成功。 镜像制作 1、准备dockerfile内容。 # vim Dockerfile FROM apachephp:v1 #声明基础镜像来源 MAINTAINER DTSTACK #声明镜像拥有者 RUN mkdir /dtstact #RUN后面接容器运行前需要执行的命令,由于Dockerfile文件不能超过127行,因此当命令较多时建议写到脚本中执行 ENTRYPOINT ping www.aliyun.com #开机启动命令,此处最后一个命令需要是可在前台持续执行的命令,否则容器后台运行时会因为命令执行完而退出。 2、构建镜像。 docker build -t webcentos:v1 . # . 是Dockerfile文件的路径,不能忽略 docker images #查看是否创建成功 docker run –d webcentos:v1 #后台运行容器 docker ps #查看当前运行中的容器 docker ps –a #查看所有容器,包括未运行中的 docker logs CONTAINER ID/IMAGE #如未查看到刚才运行的容器,则用容器id或者名字查看启动日志排错 docker commit fb2844b6c070 dtstackweb:v1 #commit 后接容器id 和构建新镜像的名称和版本号。 docker images #列出本地(已下载的和本地创建的)镜像 docker push #将镜像推送至远程仓库,默认为 Docker Hub 3、将镜像推送到registry。 docker login --username=dtstack_plus registry.cn-shanghai.aliyuncs.com #执行后输入镜像仓库密码 docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/dtstack123/test:[镜像版本号] docker push registry.cn-shanghai.aliyuncs.com/dtstack123/test:[镜像版本号] 在镜像仓库能查看到镜像版本信息则说明push成功 其中[ImageId],[镜像版本号]请您根据自己的镜像信息进行填写 https://help.aliyun.com/document_detail/51853.html https://yq.aliyun.com/articles/60601?spm=5176.100239.blogcont68337.17.O9fc0l

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

CentOS 搭建postfix邮件服务器

注:本文的邮件服务器只用于发送邮件,也就是STMP服务器。 一、准备工作 1. 为邮件服务器添加DNS解析 虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录。比如域名cnblogs.info,对应的DNS记录如下: 2. 准备存放邮件的硬盘空间 如果用的是阿里云入门级Linux服务器,有一块20G的数据盘未挂载,需要格式化并挂载(假设这里挂载的目录是/data),具体操作步骤见之前的博文阿里云云服务器硬盘分区及挂载。 二、配置postfix postfix是CentOS默认安装的邮件服务器软件。以下配置示例假设要配置的域名是cnblogs.info,邮件服务器主机名是mail.cnblogs.info。 1. 打开postfix的配置文件 vi /etc/postfix/main.cf 2. :75 光标移至第75行,修改myhostname myhostname = mail.cnblogs.info 3. :83 光标移至第83行,修改mydomain mydomain = cnblogs.info 4. :99 光标移至第99行,修改myorigin myorigin = $mydomain 5. :116光标移至第116行,修改inet_interfaces inet_interfaces = all 6. :119光标移至第119行,修改inet_protocols inet_protocols = ipv4 7.:164光标移至第164行,添加$mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 8.:264光标移至第264行,修改mynetworks mynetworks = 127.0.0.0/8 子网掩码(netmask)转换器:Network and IP address calculator 9.:419 光标移至第419行,设置home_mailbox home_mailbox = Maildir/ 10.:425 光标移至第425行,设置mail_spool_directory,/data是之前挂载的数据盘,mail目录需要通过mkdir命令创建 mail_spool_directory = /data/mail 11. 重启postfix使设置生效 service postfix restart 三、用telnet测试邮件服务器是否正常 1. 在邮件服务器上安装telnet yum install telnet 2. 连接服务器SMTP端口 telnet 127.0.0.1 25 3. 填写发件人 MAIL FROM:<test@cnblogs.info> 回车 4. 填写收件人 RCPT TO:contact@cnblogs.com 回车 5. 撰写邮件内容 5.1 开始写邮件内容 DATA 回车 5.2 输入标题 Subject: test message 回车 5.3 输入内容,并以.号结束 test body . 如果显示下面的信息,说明邮件进入发送队列 250 2.0.0 Ok: queued as 88D6D32A94 四、授权其他服务器通过该邮件服务器发送邮件 未授权的情况下,如果在其他服务器telnet这台服务器,在输入收件人之后会出现Relay access denied错误 RCPT TO:contact@cnblogs.com 554 5.7.1 <contact@cnblogs.com>: Relay access denied 解决方法: vi /etc/postfix/main.cf,:264将光标移至第264行,在mynetworks的值之后加这台的服务器IP地址,比如: mynetworks = 127.0.0.0/8 58.33.14.124 service postfix restart之后,问题解决。 五、其他问题 收到上面telnet发出的邮件时,你会发现收件人信息显示的是undisclosed recipients,解决方法是在DATA命令之后,输入Subject之前,分别输入: FROM:test@cnblogs.info TO:contact@cnblogs.com 六、参考资料: Install Postfix to configure SMTP Server Postfix - using Telnet to test postfix "To" field is populated with "undisclosed-recipients" sending emails from a telnet session.

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

monocross 环境搭建:MonoTouch & Mono for Android

monocross 中各个平台环境不同: 针对ios的MonoTouch只能在OSX上弄。Android 的Mono for Android在mac 及pc机上都可以..... 安装MonoTouch for mac: 1、安装MonoFramework http://www.go-mono.com/mono-downloads/download.html 2、安装MonoDevelop http://monodevelop.com/download 3、安装ios开发环境,直接下xcode。 4、安装MonoTouch,使用版无限期使用,但仅限于模拟器。http://xamarin.com/trial 安装完成之后就可以看到一些模版, 安装Mono for Android : 1、首先是要有Android开发环境,此相关的不啰嗦,jdk(mac不用)、sdk 、Eclipse、ADT..... 2、安装Mono for Androidhttp://xamarin.com/trial 3、在Visual Studio orMonoDevelop(也可以在windows下使用)中要配置下sdk的Location Tools ->Options->Mono for Android 安装MonoCross templates for vs 2010: 1、从http://www.monocross.net/download下载monocross模板。 2、双击安装MonoCross Templates.vsix 成功可看到: 注意:只支持2010版本,2012不支持呀!!! 安装MonoCross templates for MonoDevelop: 1、从http://www.monocross.net/download下载monocross模板。 2、 windows的步骤一样。 本文转自老Zhan博客园博客,原文链接:http://www.cnblogs.com/mybkn/archive/2012/11/14/2768871.html,如需转载请自行联系原作者

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

Etcd集群搭建过程和命令总结

什么是etcd?etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值数据库,基于Go语言实现。主要解决分布式系统中各种服务的配置信息的管理分享,服务的发现。 一、Etcd三节点集群配置:10.100.50.12310.100.50.12410.100.50.125https://github.com/coreos/etcd/releases/下载1、解压缩、运行etcd[root@Etcd01 /]# tar -zvxf etcd-v3.2.4-linux-amd64.tar.gz [root@Etcd01 /]# mv etcd-v3.2.4-linux-amd64 etcd[root@Etcd01 /]# cd etcd[root@Etcd01 etcd]# lsDocumentation etcd etcdctl README-etcdctl.md README.md READMEv2-etcdctl.md[root@Etcd01 etcd]# ./etcd 2、添加环境变量在"/etc/profile" 中添加环境变量 Etcd export PATH="$PATH:/etcd"export ETCDCTL_API=33、添加systemctl的服务[root@Etcd01 etcd]# vi /etc/systemd/system/etcd.service[Unit]Description=etcd[Service]ExecStart=/etcd/etcd [Install]WantedBy=multi-user.target4、关闭防火墙[root@Etcd01 etcd]# systemctl stop firewalld[root@Etcd01 etcd]# systemctl disable firewalld关闭SElinux[root@Etcd01 etcd]#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config以上三步在其他两个节点重复操作。 5、运行脚本 etcd --name infra0 --initial-advertise-peer-urls http://10.100.50.123:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://10.100.50.123:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster infra0=http://10.100.50.123:2380,infra1=http://10.100.50.124:2380,infra2=http://10.100.50.125:2380 \ --initial-cluster-state new etcd --name infra1 --initial-advertise-peer-urls http://10.100.50.124:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://10.100.50.124:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster infra0=http://10.100.50.123:2380,infra1=http://10.100.50.124:2380,infra2=http://10.100.50.125:2380 \ --initial-cluster-state new etcd --name infra2 --initial-advertise-peer-urls http://10.100.50.125:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://10.100.50.125:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster infra0=http://10.100.50.123:2380,infra1=http://10.100.50.124:2380,infra2=http://10.100.50.125:2380 \ --initial-cluster-state new 后台运行: nohup /path/to/start_etcd.sh &6、命令参数解释https://coreos.com/etcd/docs/latest/op-guide/configuration.html官网解释etcd --name infra0节点名称--initial-advertise-peer-urls http://HOST-IP:2380 通知其他Etcd实例地址--listen-peer-urls http://0.0.0.0:2380 监听其他Etcd实例地址--listen-client-urls http://0.0.0.0:2379 监听客户端地址--advertise-client-urls http://HOST-IP:2379 通知客户端地址--initial-cluster-token etcd-cluster-1 初始化集群Token,同一个集群Token必须相同。--initial-cluster infra0=http://HOST-IP:2380,infra1=http://HOST-IP:2380,infra2=http://HOST-IP:2380 初始化集群节点地址--initial-cluster-state new新建集群,如果是已经存在的集群将new更改为existing 二、使用etcdctl命令操作数据库set指定某个键的值 格式:set -- OPTIONS: --ttl value key time-to-live in seconds (default: 0) --swap-with-value value previous value --swap-with-index value previous index (default: 0) 例1:设置键值[root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl get key1value1[root@Etcd01 ~]# 例2:设置键值的超时时间[root@Etcd01 ~]# etcdctl set --ttl 10 key2 value2value2[root@Etcd01 ~]# etcdctl get key2Error: 100: Key not found (/key2) [10][root@Etcd01 ~]# 例3:若该键现在的值是 value,则进行设置操作[root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl get key1value1[root@Etcd01 ~]# etcdctl set key1 "value2" --swap-with-value "value1" 如果value=value1则 ,把key1的键值改为value2。value2[root@Etcd01 ~]# get获取键值格式: get 选项:--sort 对结果进行排序--consistent 将请求发给主节点,保证获取内容的一致性例1:获取键值[root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl get key1value1 update更新键值格式:etcdctl update 选项:--ttl ‘0’ 超时时间默认为0,永不超时。 [root@Etcd01 ~]# etcdctl set key1 value1value1[root@Etcd01 ~]# etcdctl update --ttl '5' key1 value2 更新key1的键值为value2,并设置5秒超时时间。value2[root@Etcd01 ~]# etcdctl get key1value2[root@Etcd01 ~]# etcdctl get key1 超过5秒钟后键值自动删除。Error: 100: Key not found (/key1) [22][root@Etcd01 ~]# rm删除某个键值格式:etcdctl rm 选项:--dir 如果键是个空目录或者键值对则删除--recursive 删除目录和所有子键--with-value 检查现有的值是否匹配--with-index '0' 检查现有的 index 是否匹配 例1:删除键值[root@Etcd01 ~]# etcdctl set key1 valuevalue[root@Etcd01 ~]# etcdctl rm key1PrevNode.Value: value[root@Etcd01 ~]# etcdctl get key1Error: 100: Key not found (/key1) [24][root@Etcd01 ~]# mk如果给定的键不存在,则创建一个新的键值格式: etcdctl mk 选项:--ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:当键值不存在时[root@Etcd01 ~]# etcdctl mk key2 value1value1[root@Etcd01 ~]# etcdctl get key2value1 例:当键值存在时会报错[root@Etcd01 ~]# etcdctl mk key1 value2Error: 105: Key already exists (/key1) [25] mkdir如果给定的目录不存在,则创建一个新的键目录格式:etcdctl mkdir 选项:--ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:[root@Etcd01 ~]# etcdctl mkdir keydir 创建一个mkdir的目录[root@Etcd01 ~]# etcdctl set mkdir/key1 value1 在mkdir目录下创建一个key1的键且值为value1value1[root@Etcd01 ~]# etcdctl ls /mkdir 使用ls命令查看mkdir下的键/mkdir/key1 setdir创建一个目录,无论存在与否格式:etcdctl setdir --ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:[root@Etcd01 ~]# etcdctl setdir keydir2[root@Etcd01 ~]# etcdctl ls/keydir1/keydir2 updatedir更新一个已经存在的目录(仅在目录中设置了TTL或生存时间时才有用)格式: etcdctl updatedir 选项:--ttl '0' 超时时间(单位为秒),不配置(默认为 0)则永不超时 例:设置TTL时间表示keydir的存活时间。[root@Docker01 ~]# etcdctl ls /keydir[root@Docker01 ~]# etcdctl updatedir keydir --ttl '10' 设置超时时间为10秒[root@Docker01 ~]# etcdctl ls /keydir[root@Docker01 ~]# etcdctl ls 十秒中后目录自动删除,如果为0则永不超时。[root@Docker01 ~]# rmdir删除一个目录,或者键值对格式:etcdctl rmdir 或 例1:删除目录[root@Docker01 ~]# etcdctl ls/keydir[root@Docker01 ~]# etcdctl rmdir /keydir[root@Docker01 ~]# etcdctl ls[root@Docker01 ~]# 例2:删除键值对[root@Docker01 ~]# etcdctl set key1 value1value1[root@Docker01 ~]# etcdctl rmdir key1 删除键值对,格式可以是etcdctl rmdir 而不用加键对应的值。PrevNode.Value: value1[root@Docker01 ~]# etcdctl get key1Error: 100: Key not found (/key1) [22][root@Docker01 ~]# etcdctl ls[root@Docker01 ~]# ls 列出目录(默认为根目录)下的键或者子目录,默认不显示子目录中的内容格式:etcdctl ls 例:[root@Docker01 ~]# etcdctl mkdir /keydir1/key1 value1[root@Docker01 ~]# etcdctl mkdir /keydir2/[root@Docker01 ~]# etcdctl ls/keydir1/keydir2[root@Docker01 ~]# 三、非数据库操作 backup备份 etcd 的数据。选项--data-dir etcd 的数据目录--backup-dir 备份到指定路径 watch检测一个键值的变化格式:etcdctl watch --forever 一直监测,直到用户按 CTRL+C 退出--after-index '0' 在指定 index 之前一直监测--recursive 返回所有的键值和子键值 exec-watch检测一个键值的变化,一旦键值发生更新,就执行给定命令格式:etcdctl exec-watch -- 选项:--after-index '0' 在指定 index 之前一直监测--recursive 返回所有的键值和子键值 member通过list、add、remove命令列出、添加、删除etcd实例到etcd集群中。[root@Docker01 ~]# etcdctl member list8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true[root@Docker01 ~]# 四、命令选项: --debug 输出 cURL 命令,显示执行命令的时候发起的请求--no-sync 发出请求之前不同步集群信息--output, -o 'simple' 输出内容的格式 (simple 为原始信息,json 为进行json格式解码,易读性好一些)--peers, -C 指定集群中的同伴信息,用逗号隔开 (默认为: "127.0.0.1:4001")--cert-file HTTPS 下客户端使用的 SSL 证书文件--key-file HTTPS 下客户端使用的 SSL 密钥文件--ca-file 服务端使用 HTTPS 时,使用 CA 文件进行验证--help, -h 显示帮助命令信息--version, -v 打印版本信息 https://yeasy.gitbooks.io/docker_practice/content/etcd/intro.html资料:

资源下载

更多资源
Mario

Mario

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

Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。