Linux常见运维指令02

06.安装git和配置

安装(centos7)

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
cd /usr/src
wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz

tar xzf git-2.7.3.tar.gz
cd git-2.7.3
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc 
#source /etc/bashrc(非root用户运行)
git --version  有输出为成功
or
sudo vim /etc/profile
然后在文件的最后一行,添加下面的内容,然后保存退出。
export PATH=/usr/local/git/bin:$PATH
# source /etc/profile(?)

配置

(1)设置用户名和email。
git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"
此时,Home目录下会新建一个.gitconfig文件

(2)为GitHub账号添加SSH Keys
以公钥认证方式访问SSH协议的Git服务器时无需输入口令,而且更安全。(访问HTTP协议的Git服务器时,比如提交修改,每次都需要输入口令。)
(a) 创建SSH key
$ ssh-keygen -t rsa -C "youremail@163.com"
系统会提示key的保存位置(一般是~/.ssh目录)和指定口令,保持默认,连续三次回车即可。
(b) Copy SSH Key
然后用vim打开该文件,id_rsa.pub文件内的内容,粘帖到github帐号管理的添加SSH key界面中。
vim ~/.ssh/id_rsa.pub
(c) 添加到GitHub
登录github-> Accounting settings图标-> SSH key-> Add SSH key-> 填写SSH key的名称(可以起一个自己容易区分的),然后将拷贝的~/.ssh/id_rsa.pub文件内容粘帖-> add key”按钮添加。
(d)测试
ssh -T git@github.com

使用

(1)为GitHub上的Repository提交修改
(a)git clone已存在GitHub上的Repository。(在新建的~/MyTestFolder目录中)

git clone https://github.com/zhchnchn/ZhchnchnTest.git
(b)修改一个文件,然后提交
vim README.md
git status
git add README.md
git status
git commit -m "Edit by WorkUbuntu 1204"
git status
git remote add origin https://github.com/zhchnchn/ZhchnchnTest.git
这时会报错误:
fatal: remote origin already exists.
解决办法【3】:
$ git remote rm origin
然后再次执行 git remote add origin https://github.com/zhchnchn/ZhchnchnTest.git
(c)之后,需要将修改push到GitHub上
git push -u origin master
执行该条命令后,会要求输入GitHub账户的用户名和密码。
(d)提交完成后,查看GitHub上的Repository,会发现内容修改成功。

PS:
git配置文件和ssh配置文件:要区分是在哪个用户下的操作
~/.gitconfig 全局配置文件
.git/config 项目的配置文件
~/.ssh 

07升级python(不建议升级,可以考虑用pyenv和virtualevn来做python隔离)
1,升级python版本的时候千万不能卸载旧python,再安装新python版本,这样会有无穷无尽的麻烦,保守的方式是直接安装新python的源码包,也就是python两个版本共存。(因为Centos里面有很多程序是依赖着python,所有最好不要尝试去卸载旧版本)。 

安装python需要用到gcc工具,首先查看gcc是否安装 
# gcc -v
# yum -y install gcc
# wget http://python.org/ftp/python/2.7.10/Python-2.7.10.tgz
# tar -xzvf Python-2.7.10.tgz 
编译安装
# cd Python-2.7.10
# ./configure --prefix=/usr/local/python2.7 
# make && make install

zlib包和openssl安装
# yum install zlib-devel  or  yum install zlibc zlib1g-dev 
# yum install openssl openssl-devel  or openssl*
***让python支持zlib包,还需要在配置(./configure)之后修改Modules/Setup文件,
***# sudo vi Modules/Setup  // 找到#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz这行代码(460左右),删除前面的“#”然后再进行编译(make)、安装(make install)
***经测试提前安装好zlib-devel后,无需修改安装文件,也可正常安装get-pip.py


建立软连接,使系统默认的python指向python2.7 
正常情况下即使python2.7安装成功后,系统默认指向的python仍然是2.6.6版本
# mv /usr/bin/python /usr/bin/python.bak
# ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python  # 添加软连接
如果是默认安装路径则使用下面命令
# ln -s /usr/local/bin/python2.7 /usr/bin/python
检验python指向是否成功
# python -v
注意:以后安装的python工具包例如easy_install,pip等,都会安装在/usr/local/python2.7/bin 目录下
要想直接使用这些命令还需要把/usr/local/python2.7/bin添加到$PATH变量中
1、编辑/etc/profile文件(永久生效)
        找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL这行上面加入PATH=$PATH:/usr/local/python2.7/bin、
2、重新初始化文件,使文件立即生效
        source /etc/profile or . /etc/profile 
2、在用户目录下的~/.bash_profile文件中增加变量,对单一用户生效(永久的)

3、在shell的命令行下直接使用[export PATH=$PATH:/usr/local/python2.7/bin]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了(临时的)


08更改yum源头--python升级后yum不可用(一般比建议升级python)
yum依赖python,旧版本,升级后系统中有新旧两个python:
vi /usr/bin/yum
#!/usr/bin/python--> #!/usr/bin/python2.7
09 为普通用户添加sudo权限
1.切换到root用户下
2./etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是:
chmod u+w /etc/sudoers
3.编辑sudoers文件
vi /etc/sudoers
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)

ps:这里说下你可以sudoers添加下面四行中任意一条
youuser            ALL=(ALL)                ALL  #允许用户youuser执行sudo命令(需要输入密码).
%youuser          ALL=(ALL)                ALL #允许用户组youuser里面的用户执行sudo命令(需要输入密码).
youuser            ALL=(ALL)                NOPASSWD: ALL #允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
%youuser          ALL=(ALL)                NOPASSWD: ALL #允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
4.撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers

10 ansible安装
ansible的特点: 
    1. 基于ssh运行 
    2. 无需客户端

安装ansible
    这里提供三种安装方式,任选一种即可
    1.使用yum安装 
    yum install epel-release -y 
    yum install ansible -y
    2.配置服务器
        ansible通过文件来定义你要管理的主机,也就是说把你需要的管理的主机ip写到一个文件中即可。 这个文件一般名为hosts,它可以放在多个路径下,也可以自定义名称和路径。 默认我们用/etc/ansible/hosts这个文件即可

如果要定义登录机器的用户名和密码,比如10.2.1.204的用户名是test,密码是admin@test,端口是2244,
[test]
10.2.1.201
10.2.1.202
10.2.1.203:2211
10.2.1.204:2244 ansible_ssh_user=test ansible_ssh_pass=admin@test
建议使用免密码登录来管理服务器,在ansible的服务器上配置一套ssh的key,通过ssh-copy-id把公钥分发到要管理的服务器上。具体步骤如下:

  1. 使用ssh-keygen产生ssh密钥
  2. 将公钥发送到要管理的服务器
    ssh-copy-id -i /root/.ssh/id_rsa.pub 10.2.31.202 

使用ansible
    命令格式如下: 
ansible + 主机组名称 + -m + 模块名称 + -a + 参数
    主机组名称,即hosts中定义的主机组名称 
        -m 指使用模块,后加指定的模块名称 
        -a 指传给模块的参数

    在不指定模块时,默认调用command模块。 如我们想看下test组上的服务器的/tmp下面有哪些文件,可以使用如下命令 
ansible test -a “ls /tmp”
[root@test-201 ~]# ansible test -a "ls /tmp"
10.2.31.203 | SUCCESS | rc=0 >>
ansible_EMEGZI
testabcdefg
我们可以使用copy模块,将本地文件发送到目标服务器上,如: 
ansible test -m copy -a “src=/root/install.log dest=/tmp” 
这个命令是将本地的/root/install.log发送到test组的/tmp下,执行的效果如下:
 ansible test -m copy -a "src=/root/install.log dest=/tmp"
你可以使用ansible-doc –list查看当前的所有模块
 ansible-doc  --list                       
使用ansible-doc + 模块名,可以看具体某个模块的使用方法,如查看yum模块的使用方法 
ansible-doc yum
ansible自带了很多丰富的模块,详细请看: 

Playbooks
    顾名思义,playbooks就像剧本一样,将你要做的事情先定义好,然后通过它来执行。这也是ansible一个强大的地方,可以通过它来做些复杂的应用部署。

[root@test-201 ~]# cat test-playbook
- hosts: test
  tasks:
  - name: 确认apache是否在运行
service: name=httpd state=started
    这是个很简单的playbooks,首先它指定了要操作的主机组是test,定义了一个名称:确认apache是否在运行,执行pkg=httpd state=latest动作。 执行如下命令ansible-playbook test-playbook,效果如下:
[root@test-201 ~]# ansible-playbook test-playbook 
由于playbooks涉及的内容较多,这里就不一一赘述了,更多内容请参考文档: http://ansible-tran.readthedocs.io/en/latest/docs/playbooks.html

小技巧:
        1.有时候如果想直接操作某台服务器,但又没有在hosts里定义这台服务器时,可以使用如下命令:
            ansible all -i ‘服务器ip,’ 
            注意服务器ip后面要加个,
            ansible all -i ‘10.2.31.201,’ -u test -k -a ‘uptime’

        2.有时候我忘记配了哪些主机和组,我又不想看配置文件,有没有什么命令查看?
            显示所有的组
            ansible localhost -m debug -a 'var=groups.keys()'
            显示所有的组和主机
            ansible localhost -m debug -a 'var=groups'
阅读更多
文章标签: ansible yum github
个人分类: linux运维
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭