Rust之旅 linux下rust环境搭建
从今天开始,我们将开始我们的Rust语言学习之路。Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。
首先我们需要搭建好开发环境,本次选用linux作为服务器系统,也是为以后项目环境做考虑。毕竟windows作为服务器系统还是过于小众。
如果您曾经安装过 rustup,可以执行 rustup update 来升级 Rust。
在ssh界面运行以下命令:
如果您熟悉rustup安装程序并希望自定义安装,请选择第二个选项。 但是,出于本教程的考虑,我们仅选择默认的第一个选项,然后按Enter。
在 Rust 开发环境中,所有工具都安装在 ~/.cargo/bin 目录中,您可以在这里找到包括 rustc、cargo 和 rustup 在内的 Rust 工具链。
运行以下命令
运行以下命令
如果出现以下版本号则证明安装成功
如果想卸载 Rust,您可以运行
如果想更新Rust,可以运行
如何在Linux下搭建hadoop集群环境 小残\'s Blog
前期准备
l 两台linux虚拟机(本文使用redhat5,IP分别为 IP1、IP2)
l JDK环境(本文使用jdk1.6,网上很多配置方法,本文省略)
l Hadoop安装包(本文使用Hadoop1.0.4)
搭建目标
210作为主机和节点机,211作为节点机。
搭建步骤
1修改hosts文件
在/etc/hosts中增加:
IP1 hadoop1
IP2 hadoop2
2 实现ssh无密码登陆
2.1 主机(master)无密码本机登陆
ssh-keygen -t dsa -P \'\' -f ~/.ssh/id_dsa
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。
这两个是成对出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :
cat ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
ssh localhost hostname
还是要输入密码,一般这种情况都是因为目录或文件的权限问题,看看系统日志,确实是权限问题
.ssh下的authorized_keys权限为600,其父目录和祖父目录应为755
2.2 无密码登陆节点机(slave)
slave上执行:
ssh-keygen -t dsa -P \'\' -f ~/.ssh/id_dsa
生成.ssh目录。
将master上的authorized_keys复制到slave上:
scp authorized_keys hadoop2:~/.ssh/
实验:在master上执行
ssh hadoop2
实现无密码登陆。
3 配置Hadoop
3.1拷贝hadoop
将hadoop-1.0.4.tar.gz ,拷贝到usr/local 文件夹下,然后解压。
解压命令:
tar –zxvf hadoop-1.0.4.tar.gz
3.2查看 cat /etc/hosts
IP1 hadoop1
IP2 hadoop2
3.3 配置 conf/masters 和 conf/slaves
conf/masters:
1
IP1
conf/slaves:
1
2
IP2
IP2
3.4 配置 conf/hadoop-env.sh
加入
1
export JAVA_HOME=/home/elvis/soft/jdk1.7.0_17
3.5 配置 conf/core-site.xml
1
2
3
4
property
namefs.default.name/name
valuehdfs://IP1:9000/value
/property
3.6 配置 conf/hdfs-site.xml
加入
property
namedfs.http.address/name
valueIP1:50070/value
/property
property
namedfs.name.dir/name
value/usr/local/hadoop/namenode/value
/property
property
namedfs.data.dir/name
value/usr/local/hadoop/data/value
/property
property
namedfs.replication/name
value2/value
/property
3.7 配置conf/mapred-site.xml
加入
property
namemapred.job.tracker/name
value192.168.1.50:8012/value
/property
3.8 建立相关的目录
1
/usr/local/hadoop/ //hadoop数据和namenode目录
【注意】只创建到hadoop目录即可,不要手动创建data和namenode目录。
其他节点机也同样建立该目录。
3.9 拷贝hadoop文件到其他节点机
将hadoop文件远程copy到其他节点(这样前面的配置就都映射到了其他节点上),
命令:
1
scp -r hadoop-1.0.4 IP2:/usr/local/
3.10 格式化Active master
命令:
bin/hadoop namenode -format
3.11 启动集群 ./start-all.sh
现在集群启动起来了,看一下,命令:
1
bin/hadoop dfsadmin -report
2个datanode,打开web看一下
浏览器输入:IP1:50070
打完收工,集群安装完成!
Linux下docker基础环境搭建
curl -fsSL | bash -s docker --mirror Aliyun
# 报错:curl: (6) Could not resolve host: get.docker.com; 未知的错误
# 解决:cat /etc/resolv.conf 里加了个 nameserver 8.8.8.8
sudo curl -L \"(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证安装:docker-compose --version
# compose 那个亚马逊的老是下载不了,可换对应地址:
sudo curl -L (uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
查看docker版本: docker --version
启动docker: systemctl start docker 或者 service docker start
停止docker: systemctl stop docker
查看docker镜像文件: docker images
查看docker内容器: docker ps -a
修改 /etc/dockers 文件下的配置文件 daemon.json (配置作用参考附录)
操作完成后需要重启docker: systemctl restart docker
服务端安装git:yum install git
拉取一下文件和命令:git clone
查看本地和远端版本:git branch -a
切换本地分支为dev:git checkout -b dev origin/dev
启动docker:service docker start
后 执行文件中的shell:./init.sh all (包含:mysql,mongo,redis,solr,activemq,tomcat)
删除多下载的镜像:docker rmi --force 3068f6bb852e
容器列表: docker ps -a
进入某个容器:docker exec -it [CONTAINER ID] /bin/bash
查看某个容器进程:docker top [NAMES]
查看 demo-dockers 目录下 java-runtime 文件位置下有对应几个项目配置文件 application-alpha.yml
修改配置文件后,需要重新启动对应java项目,执行启动脚本 ./init-java-runtime.sh + [项目名或者all]
获取镜像文件的地址: 查找对应需要的镜像包
更换镜像文件: vi java-runtime.yml 内,image后的对应项目后跟的包名中
重启对应项目: ./init-java-runtime.sh [项目名]
查看对应项目启动log: docker logs -f --tail 500 [生成的容器名称]
(容器重启:docker restart [容器id或名称])
{
\"authorization-plugins\": [],//访问授权插件
\"data-root\": \"\",//docker数据持久化存储的根目录
\"dns\": [],//DNS服务器
\"dns-opts\": [],//DNS配置选项,如端口等
\"dns-search\": [],//DNS搜索域名
\"exec-opts\": [],//执行选项
\"exec-root\": \"\",//执行状态的文件的根目录
\"experimental\": false,//是否开启试验性特性
\"storage-driver\": \"\",//存储驱动器
\"storage-opts\": [],//存储选项
\"labels\": [],//键值对式标记docker元数据
\"live-restore\": true,//dockerd挂掉是否保活容器(避免了docker服务异常而造成容器退出)
\"log-driver\": \"\",//容器日志的驱动器
\"log-opts\": {},//容器日志的选项
\"mtu\": 0,//设置容器网络MTU(最大传输单元)
\"pidfile\": \"\",//daemon PID文件的位置
\"cluster-store\": \"\",//集群存储系统的URL
\"cluster-store-opts\": {},//配置集群存储
\"cluster-advertise\": \"\",//对外的地址名称
\"max-concurrent-downloads\": 3,//设置每个pull进程的最大并发
\"max-concurrent-uploads\": 5,//设置每个push进程的最大并发
\"default-shm-size\": \"64M\",//设置默认共享内存的大小
\"shutdown-timeout\": 15,//设置关闭的超时时限(who?)
\"debug\": true,//开启调试模式
\"hosts\": [],//监听地址(?)
\"log-level\": \"\",//日志级别
\"tls\": true,//开启传输层安全协议TLS
\"tlsverify\": true,//开启输层安全协议并验证远程地址
\"tlscacert\": \"\",//CA签名文件路径
\"tlscert\": \"\",//TLS证书文件路径
\"tlskey\": \"\",//TLS密钥文件路径
\"swarm-default-advertise-addr\": \"\",//swarm对外地址
\"api-cors-header\": \"\",//设置CORS(跨域资源共享-Cross-origin resource sharing)头
\"selinux-enabled\": false,//开启selinux(用户、进程、应用、文件的强制访问控制)
\"userns-remap\": \"\",//给用户命名空间设置 用户/组
\"group\": \"\",//docker所在组
\"cgroup-parent\": \"\",//设置所有容器的cgroup的父类(?)
\"default-ulimits\": {},//设置所有容器的ulimit
\"init\": false,//容器执行初始化,来转发信号或控制(reap)进程
\"init-path\": \"/usr/libexec/docker-init\",//docker-init文件的路径
\"ipv6\": false,//开启IPV6网络
\"iptables\": false,//开启防火墙规则
\"ip-forward\": false,//开启net.ipv4.ip_forward
\"ip-masq\": false,//开启ip掩蔽(IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术)
\"userland-proxy\": false,//用户空间代理
\"userland-proxy-path\": \"/usr/libexec/docker-proxy\",//用户空间代理路径
\"ip\": \"0.0.0.0\",//默认IP
\"bridge\": \"\",//将容器依附(attach)到桥接网络上的桥标识
\"bip\": \"\",//指定桥接ip
\"fixed-cidr\": \"\",//(ipv4)子网划分,即限制ip地址分配范围,用以控制容器所属网段实现容器间(同一主机或不同主机间)的网络访问
\"fixed-cidr-v6\": \"\",//(ipv6)子网划分
\"default-gateway\": \"\",//默认网关
\"default-gateway-v6\": \"\",//默认ipv6网关
\"icc\": false,//容器间通信
\"raw-logs\": false,//原始日志(无颜色、全时间戳)
\"allow-nondistributable-artifacts\": [],//不对外分发的产品提交的registry仓库
\"registry-mirrors\": [],//registry仓库镜像
\"seccomp-profile\": \"\",//seccomp配置文件
\"insecure-registries\": [],//非https的registry地址
\"no-new-privileges\": false,//禁止新优先级(??)
\"default-runtime\": \"runc\",//OCI联盟(The Open Container Initiative)默认运行时环境
\"oom-score-adjust\": -500,//内存溢出被杀死的优先级(-1000~1000)
\"node-generic-resources\": [\"NVIDIA-GPU=UUID1\", \"NVIDIA-GPU=UUID2\"],//对外公布的资源节点
\"runtimes\": {//运行时
\"cc-runtime\": {
\"path\": \"/usr/bin/cc-runtime\"
},
\"custom\": {
\"path\": \"/usr/local/bin/my-runc-replacement\",
\"runtimeArgs\": [
\"–debug\"]
}
}
}
服务端安装git:yum install git
拉取一下文件和命令:git clone
指定分支克隆git clone -b dev-1
查看本地和远端版本:git branch -a
切换本地分支为dev:git checkout -b dev origin/dev
启动docker:service docker start
后 执行文件中的shell:./init.sh all (顺序:mysql,mongo,redis,solr,activemq,tomcat)
删除多下载的镜像:docker rmi --force 3068f6bb852e
容器列表: docker ps -a
进入某个容器:docker exec -it [CONTAINER ID] /bin/bash
查看某个容器进程:docker top [NAMES]
# 查看是否安装了tomcat: rpm -qa | grep tomcat
# 查找文件:find / -name tomcat
# 切换Tomcat目录:cd /usr/local/tomcat/bin
# 关闭Tomcat:./shutdown.sh
# 查看docker中的java版本:docker exec container_name java -version
git拉代码:git clone git@172.16.1.35:gchat/gaga-server.git
查看远端分支:git branch -r
创建本地dev分支 并切换到dev分支:git checkout -b dev origin/dev
查看本地分支:git branch
切换回眸分支:git checkout master
查看所有JDK在系统中位置:/usr/libexec/java_home -V
参考地址:
查找docker 安装包:yum list installed | grep docker
停掉docker:systemctl stop docker
删除对应文件:yum remove docker.x86_64 docker-client.x86_64 docker-common.x86_64 -y
查看下docker rpm源:rpm -qa | grep docker
删除对应路径:rm -rf /var/lib/docker
注释:
本次也是由于业务需要,需要重新搭建新的测试服务器,这也是搭建中的一个插曲,后续会使用 Jenkins 进行相关的持续集成,大家一起学习分享!~