linux配置ssh免密登录

简述

ssh 无密码登录需要使用公钥与私钥,在linux下可以使用ssh-keygen生成公钥/私钥对

场景

  • 将要登录的主机ip为10.10.10.10
  • 以deploy用户登录

步骤

  1. 生成key

    ssh-keygen

    QQ截图20170310175140.png

  2. 复制key
    过程中需要输入ssh登录密码
    ssh-copy-id -i ~/.ssh/id_rsa.pub deploy@10.10.10.10

  3. 测试登录
    若配置成功则无需输入密码即可成功ssh登录
    ssh root@192.168.0.4

  4. 退出
    exit


Ansible实战[一]——Ansible基础

一、Ansible简介

Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible本身只提供一个框架,真正工作的是它内置的各种模块,通过各模块的组装配合完成一系列操作。Ansible通常以执行脚本的方式去实现自动化运维,Ansible的脚本被称为playbook,基于yaml语法编写,一个playbook可以包含多个play,每个play中可以通过调用多个模块实现部署操作。

二、安装Ansible

在CentOS下直接yum即可安装

yum install ansible

输入ansible –version输出如下信息即代表安装成功
QQ截图20170310143837.png

Ansible的配置文件目录结构

-- /etc/ansible
  |-- ansible.cfg    # ansible的相关配置项
  |-- hosts          # 待连接的主机列表(可以配置独立主机或主机组)

三、基于命令行初探Ansible

3.1 写在前边

ansible主要还是以编写playbook脚本,然后执行playbook脚本来操作节点,比较少直接在控制端逐条地输入执行命令去操作受控节点,所以本小节只介绍ansible命令的简单用法,用于初步感受ansible的执行方式,后边章节将会讲解更为常用的playbook部分。

3.2 场景介绍

  • 控制终端 10.10.10.10

  • 受控节点

    • 11.11.11.11

    • 12.12.12.12

      3.3 修改hosts文件配置主机列表

      hosts文件里的初始备注已经列举了配置例子,看两眼基本都能懂,此处就不详细介绍语法了。本例中我们把受控节点的两个服务器ip归回test组,hosts文件配置如下

      [test]
      11.11.11.11
      12.12.12.12

3.4 测试连接受控节点

输入如下命令

ansible test -m ping -u deploy -k

若执行结果返回的是pong则代表访问成功

11.11.11.11 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

例子详解

  • test 指定需要控制的主机组为test,若指定为all则hosts文件中所有的主机都将被控制
  • -m 指定将要执行的模块
  • ping 执行ansible的ping模块
  • -u 指定以哪个用户登录受控节点,例子中指定登录用户为deploy,若不指定默认为root
  • -k 提示输入 ssh 登录密码,当使用密码验证登录的时候用

3.5 配置免密登录

每次执行ansible命令都指定密码是非常不方便的,而把密码在配置文件中填写只能用明文保存,这样安全性很低。为解决这个问题,通常的做法是配置主机间免密登录,具体配置方式请参考《linux配置ssh免密登录》

3.6 命令参数

参见《Ansible实战[附录一]——Ansible命令参数列表》

四、主机管理进阶

4.1 组嵌套

利用组嵌套可实现组与组之间的层级关系,提高可管理性
以下配置指定了group1、group2隶属于test组下

[group1]
10.10.10.10
[group2]
11.11.11.11
[test:children]
group1
group2

4.2 变量

通过指定变量可以在ansible执行时自动获取相应变量,例如指定变量ansible_ssh_user后在连接到主机时将会自动以变量中指定的用户登录,无需每次敲写指定用户。除了ansible_ssh_user外还有许多其他的系统参数可以更改,如ansible_ssh_pass等;当然除了系统参数外,还可以填写自定义参数(在playbook中可以用到)。

4.2.1在hosts文件中指定变量
  • 方法一 在主机后直接带上变量

    [test]
    10.10.10.10 ansible_ssh_user=deploy1
    11.11.11.11 ansible_ssh_user=deploy2

  • 方法二 对一个指定变量

    [test]
    10.10.10.10
    11.11.11.11

    [test:vars]
    ansible_ssh_user=deploy

4.2.2 在外部添加变量

  • 所有主机共享变量
    在/etc/ansible目录下创建host_vars文件,在该文件中可以指定特定变量,该变量将会对所有主机生效。
    注意变量与值之间是用冒号而不是等号

    ansible_ssh_user: deploy
    ansible_ssh_pass: 123456

  • 组内共享变量
    在/etc/ansible目录下创建group_vars目录,在该目录下以hosts文件中配置的组为文件名创建文件,如test,然后在新建的文件中指定变量则可实现组内共享变量。
    注意变量与值之间是用冒号而不是等号

    ansible_ssh_user: deploy
    ansible_ssh_pass: 123456


[目录]
[下一篇] Ansible实战[二]——playbook初探



Ansible实战[目录]
Nexus搭建Maven私服[下篇]——Nexus使用

Nexus搭建Maven私服[上篇]——Nexus安装


登录Nexus

点击右上角的login,输入账号密码即可登录,初始账号密码为admin/admin123
21.png

管理仓库

点击左边的Repositories即可打开仓库管理页面
22.png

仓库类型

Nexus中有四种仓库类型group,hosted,proxy,virtual,这里我们不关心virtual,只介绍下另外三种类型:

  • hosted 本地仓库,通常我们会部署自己的构件到这一类型的仓库。
  • proxy 代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • group 仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。

23.png

Nexus预定义的仓库

Nexus预定义了Public Repositories、3rd Party、Central、Releases、Snapshots这几个主要的分支(不同版本的Nexus对应的名称会有一点差异),主要作用如下:

  • Public Repositories 这是一个group类型的仓库,一般情况下里边包含了其他所有仓库,这样做的好处是我们在maven的pom.xml中只需配置一个仓库链接即可,无需针对所有仓库单独配置。
    在PublicRepositories的Configuration页中可以看到包含的仓库组,通过调整顺序可以更改优先匹配的仓库
    24.png
  • Central 这是proxy类型的,代理的是https://repo1.maven.org/maven2/,也就是Maven中央仓库
  • 3rd Party 用于部署第三方构件,有些构件如Oracle的JDBC驱动,我们不能从公共仓库下载到,我们就需要将其部署到自己的仓库中
  • Snapshots 用于部署我们自己的snapshot构件
  • Releases 用于部署我们自己的release构件

Release和Snapshots的区别

在配置hosted和proxy类型的仓库时,需要配置Repository Policy指定仓库类型是Release或Snapshots类型。Maven默认情况下是根据构件的版本号去更新依赖构件的,但是在开发过程中我们如果引入的构件还没进入稳定状态,构件也是在不断的修改和发布,如果使用Release类型则必须修改版本号才能更新依赖,针对这种情况我们可选择Snapshots类型。对于Snapshots类型,Maven会从镜像中获取构件,即使不更改版本号也能确保构件是最新的。但是也因为Snapshots类型代表着构件仍处于开发状态,是不稳定的构件,所以要根据实际需要选择Release或Snapshots类型。
25.png

Download Remote Indexes的配置

[这点很重要!]打开Central仓库的Configuration页,在Download Remote Indexes一项中默认是false状态,这是因为Nexus初始状态下防止在用户不知情的情况下自动下载构件,所以要求用户手动修改成true状态,只有修改为true才能下载Maven中央仓库的索引文件。注意所有proxy类型的仓库都要配置Download Remote Indexes为true才可用。
26.png

Download Remote Indexes为true后,选中对应仓库,右键选择Repair Index,然后Nexus就会开始下载远程仓库的索引文件,如果索引文件非常大,可能会花费比较久的时间。
27.png

要测试是否下载成功可以在Browser Index页中查看是否能够打开索引目录。
28.png

proxy仓库配置成功后可在Artifact Search中查找对应的构件,如搜索maven对应的搜索结果如下
29.png

上传私有构件

有些构件如Oracle的JDBC驱动,我们无法从公共仓库下载到,所以我们只能先上传到Nexus,创建私有构件。通常这些无法从公共仓库下载的构件我们会放在3rd party中。

  • 在3rd party仓库的Artifact Upload页中我们可以上传已下载的第三方jar包,步骤如图
    210.png
  • 上传后在Maven项目的pom.xml中添加对应的dependency即可引入对应构件
    211.png

Maven中使用Nexus

在Maven项目的pom.xml中配置repository指定到我们的public仓库地址即可
(注意:因为我们的public中包含了policy为napshots的仓库,所以在配置repository时需要设定snapshots enable为true)

<repositories>
    <repository>
        <id>public</id>
        <name>Public Repositories</name>
        <url>http://xx.com/nexus/content/groups/public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Nexus搭建Maven私服[上篇]——Nexus安装

Nexus介绍

现今大部分的项目都已经是使用Maven进行构建,如果你使用Maven,你可以从Maven中央仓库下载所需要的构件(artifact),但是如果直接从Maven中央仓库下载可能会遇到下载速度慢的问题。Nexus可以用来搭建Maven私服,通过Nexus可以缓存Maven中央仓库的构件,节省带宽和提升下载速度。另外,利用Nexus还可以实现在内网中使用Maven、创建公共仓库不存在的构件(如私有jar包)等功能。

Nexus安装

  • 基础环境
    linux(CentOS)
    jdk7

  • 下载Nexus
    下载地址 http://www.sonatype.org/nexus/
    下载NEXUS REPOSITORY MANAGER OSS
    (FREE TRIAL是收费版)
    1.png

  • 解压Nexus
    解压Nexus到/usr/local/nexus目录下,解压后将会有两个目录
    nexus-2.14.2-01
    sonatype-work
    第一个目录是服务程序,第二个目录用于存放数据

  • 修改端口
    进入/usr/local/nexus/nexus-2.14.2-01/conf目录下,编辑nexus.properties文件,修改application-port即可
    2.png

  • 启动Nexus
    进入/usr/local/nexus/nexus-2.14.2-01/bin目录, 执行命令./nexus 即可运行

  • 修改运行用户
    启动过程中可能会报如下错误
    修改/usr/local/nexus/nexus-2.14.2-01/bin/nexus, 改为RUN_AS_USER=root,保存后重新执行./nexus即可。
    851491-20160729120732966-1744702207.png

QQ截图20170215172053.png


Nexus搭建Maven私服[下篇]——Nexus使用



redis安装与简单使用

CentOS yum安装redis

yum install redis

启动redis

redis-server 

测试连接redis

redis-cli

8272c21b-86ed-42d9-a09e-43f3c7900e86.png

配置多实例

1、复制redis.conf文件

cp /etc/redis.conf redis6380.conf

2、修改redis6380.conf配置文件中的端口
c5639ffb-f884-468f-ba5c-45fbf96b8577.png
3、指定配置文件启动新的redis实例

redis-server /etc/redis6380.conf

4、查看进程列表检查是否启动成功

netstat -ntpl | grep 'redis'

44f3c44c-223c-40c6-a6a7-0bbeeb184886.png

5、测试连接新实例

redis-cli -p 6380

15afadff-b094-45bd-84ad-52fdc2b15d01.png

常用命令

  • 插入键值
    SET keyname value
  • 读取键值
    GET keyname
  • 删除键值
    DEL keyname
  • 列出键
    KEYS pattern

linux成长路[4.3]——搭建WordPress常见问题

常见问题

  • 安装主题时提示无法创建目录
    原因是权限不足,把plugins、themes、uploads、upgrade文件夹都提权,而且赋权给ftp用户(www-data是通过apt方式安装web服务时的默认用户,leapftp是自己搭建ftp服务的用户)。
    进入wp-content目录执行以下代码即可

    chmod -R 775 plugins/
    chmod -R 775 themes/
    chmod -R 775 uploads/
    chmod -R 775 upgrade/

    chown -R www-data:www-data uploads/
    chown -R leapftp:vsftp plugins/
    chown -R leapftp:vsftp themes/
    chown -R leapftp:vsftp upgrade/

  • WordPress提示“在裁剪您的图像时发生了错误”的解决方法
    原因:缺少PHP GD库
    apt-get install php5-gd

linux成长路[4.2]——搭建WordPress(Nginx)

前言

本文基于nginx搭建WordPress,若使用apache请移步《linux成长路[4.1]——搭建WordPress(Apache)》

依赖环境

  • Nginx
  • PHP
  • vsftpd
  • Mysql

步骤

  1. 需安装php5 、php5-mysql和 php5-fpm(安装后无需额外配置)
    apt-get install php5 php5-mysql php5-fpm

  2. 安装Nginx
    apt-get install nginx

  3. 修改/etc/nginx/nginx.conf,添加server
    server {
    listen 80;

    server_name blog.leapmie.com;
    root /var/www/blog.leapmie.com;

    index index.php index.html index.htm;

    location / {
       try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    
    location ~ \.php$ {
       try_files $uri =404;
       #fastcgi_pass 127.0.0.1:9000;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       fastcgi_index index.php;
       #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }     

    }

  4. 重启nginx和php-fpm
    service nginx restart
    service php5-fpm restart

  5. 安装mysql并创建数据库、数据库用户
    参考《》

  6. 搭建ftp服务并创建ftp用户
    参考《》

  7. wget下载WordPress官网压缩包
    tar -xvf 解压文件
    把解压后的wordpress下的文件移动到/var/www/htmlxia
    mv wordpress/* /var/www/html

  8. 页面访问http://ipaddress/html/index.php,然后按页面提示安装即可

注:
若配置后访问域名页面空白页,解决办法如下:
由于nginx与PHP-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白。 简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。 为了解决这个问题,需要改动nginx默认的fastcgiparams配置文件: vi /etc/nginx/fastcgi_params 在文件的最后增加两行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;

然后重启一下服务:
service php5-fpm reload
service nginx reload

常见问题

《linux成长路[4.3]——搭建WordPress常见问题》


linux成长路[4.1]——搭建WordPress(Apache)

前言

本文基于Apache服务器搭建WordPress,若使用nginx请移步《linux成长路[4.2]——搭建WordPress(Nginx)》

依赖环境

  • Apache
  • PHP
  • vsftpd
  • Mysql

步骤

  1. 搭建Apache服务器

  2. 1 安装apache2
    apt-get installapache2 apache2-doc libapache2-mod-php5

  3. 2 重启apache2
    /etc/init.d/apache2 restart

  4. 安装php
    apt-get install php5 php5-mysql

  5. 安装mysql并创建数据库、数据库用户
    参考《》

  6. 搭建ftp服务并创建ftp用户
    参考《》

  7. wget下载WordPress官网压缩包
    tar -xvf 解压文件
    把解压后的wordpress下的文件移动到/var/www/htmlxia
    mv wordpress/* /var/www/html

  8. 页面访问http://ipaddress/html/index.php,然后按页面提示安装即可

常见问题

《linux成长路[4.3]——搭建WordPress常见问题》


linux成长路[四]——搭建WordPress博客

关于WordPress

WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。

WordPress以外

除了WordPress以外还有许多其他比较流行的博客,如typecho、hexo、zblog等。最开始我是选择WordPress的,也感受到WordPress主题的丰富和强大的插件支持,但是也因为WordPress太过丰富导致在不优化的情况下加载速度不够快速,最后我选择了更换博客。

搭建WordPress