CentOS7使用FirewallD管理防火墙

FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具,它拥有运行时配置和永久配置选项。CentOS 7中防火墙是一个非常的强大的功能,本文主要介绍FirewallD常用管理命令。

安装firewalld
Centos7自带FirewallD防火墙工具,如果你的系统是最小化安装的,可能就需要自己动手安装firewalld服务。

yum install firewalld firewall-config

运行和停止firewalld

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。我们使用systemctl命令来控制firewalld。

启动防火墙:

systemctl start firewalld.service

关闭防火墙:

systemctl stop firewalld.service

重启防火墙:

systemctl restart firewalld.service

开机时启动防火墙:

systemctl enable firewalld.service

开机时禁用防火墙:

systemctl disable firewalld.service

查看防火墙运行状态:

systemctl status firewalld

配置firewalld-cmd管理防火墙端口
我们使用firewalld的字符界面管理工具firewall-cmd很方便就可以管理firewalld。

显示防火墙状态:

firewall-cmd --state

显示防火墙状态:

firewall-cmd --state

添加80端口,允许访问80端口,并永久生效:

firewall-cmd --zone=public --add-port=80/tcp --permanent

添加服务,允许https访问,并永久生效:

firewall-cmd --zone=public --add-service=https --permanent

移除80端口:

firewall-cmd --zone=public --remove-port=80/tcp --permanent

重新载入使配置生效:

firewall-cmd --reload

查看开放的端口:

firewall-cmd --list-ports

当然,你也可以到/etc/firewalld/zones/目录下直接修改xml配置文件。
习惯用centos7以前版本的伙伴都喜欢用iptable来管理防火墙,设置在使用CentOS7后还把系统自带的firewalld服务弃用,转而用老版本的iptable,可我觉得firewalld很好用啊,简单又实在,好东西为什么不用呢。

CentOS 6.9/7通过yum安装指定版本的Nginx

说明:通过yum好处其实很多,环境变量不用配置,配置文件放在大家都熟悉的地方,通过rpm -ql nginx可以知道全部文件的地方等等。

Nginx(1.12.2)

一、安装和配置

1、安装

# rpm -ivh http://nginx.org/packages/centos/6/x86_64/RPMS/nginx-1.12.2-1.el6.ngx.x86_64.rpm

备注:其实根据上面这个网址(http://nginx.org/packages/)可以进去其nginx官方的的包管理列表,选择合适的系统和包

2、启动

# nginx
// 验证是否启动成功
# curl http://127.0.0.1:80
// 正常会返回html代码

3、设置开机启动服务

# chkconfig nginx on

4、服务常用操作

// 服务状态
# service nginx status
// 服务启动
# service nginx start
// 服务停止
# service nginx stop
// 服务重启
# service nginx restart

CentOS 7:

1、安装

# rpm -ivh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.12.2-1.el7_4.ngx.x86_64.rpm

2、启动

# systemctl start nginx
// 验证是否启动成功
# curl http://127.0.0.1:80
// 正常会返回html代码

3、设置开机启动服务

# systemctl enable nginx

4、服务常用操作

// 服务状态
# systemctl status nginx
// 服务启动
# systemctl start nginx
// 服务停止
# systemctl stop nginx
// 服务重启
# systemctl restart nginx

CentOS 7.x安装搭建Zabbix3.0环境

1、安装数据库mariadb

[root@node1 ~]# yum install -y mariadb mariadb-server
[root@node1 ~]# systemctl start mariadb
[root@node1 ~]# systemctl enable mariadb
[root@node1 ~]# vi /etc/my.cnf
[root@node1 ~]# cat /etc/my.cnf
[mysqld]
character-set-server=utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[root@node1 ~]#

2、下载(Choose your platform for Zabbix server)

https://www.zabbix.com/

未分类

未分类

未分类

3、Install and configure Zabbix server

(1)Install Repository with MySQL database

[root@node1 ~]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.IcrMTU: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY

(2)Install Zabbix server, frontend, agent

[root@node1 ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent
...
Installed:
  zabbix-agent.x86_64 0:3.0.16-1.el7          zabbix-server-mysql.x86_64 0:3.0.16-1.el7          zabbix-web-mysql.noarch 0:3.0.16-1.el7         

Dependency Installed:
  OpenIPMI-libs.x86_64 0:2.0.19-15.el7         OpenIPMI-modalias.x86_64 0:2.0.19-15.el7        apr.x86_64 0:1.4.8-3.el7_4.1                     
  apr-util.x86_64 0:1.5.2-6.el7                dejavu-fonts-common.noarch 0:2.33-6.el7         dejavu-sans-fonts.noarch 0:2.33-6.el7            
  fping.x86_64 0:3.10-4.el7                    httpd.x86_64 0:2.4.6-67.el7.centos.6            httpd-tools.x86_64 0:2.4.6-67.el7.centos.6       
  iksemel.x86_64 0:1.4-6.el7                   libXpm.x86_64 0:3.5.12-1.el7                    libtool-ltdl.x86_64 0:2.4.2-22.el7_3             
  libxslt.x86_64 0:1.1.28-5.el7                libzip.x86_64 0:0.10.1-8.el7                    mailcap.noarch 0:2.1.41-2.el7                    
  mariadb-libs.x86_64 1:5.5.56-2.el7           net-snmp-libs.x86_64 1:5.7.2-28.el7_4.1         php.x86_64 0:5.4.16-43.el7_4.1                   
  php-bcmath.x86_64 0:5.4.16-43.el7_4.1        php-cli.x86_64 0:5.4.16-43.el7_4.1              php-common.x86_64 0:5.4.16-43.el7_4.1            
  php-gd.x86_64 0:5.4.16-43.el7_4.1            php-ldap.x86_64 0:5.4.16-43.el7_4.1             php-mbstring.x86_64 0:5.4.16-43.el7_4.1          
  php-mysql.x86_64 0:5.4.16-43.el7_4.1         php-pdo.x86_64 0:5.4.16-43.el7_4.1              php-xml.x86_64 0:5.4.16-43.el7_4.1               
  t1lib.x86_64 0:5.1.2-14.el7                  unixODBC.x86_64 0:2.3.1-11.el7                  zabbix-web.noarch 0:3.0.16-1.el7                 

Complete!
[root@node1 ~]#

(3)Create initial database

[root@node1 ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
[root@node1 ~]# 

Import initial schema and data. You will be prompted to enter your newly created password.

[root@node1 ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: 
[root@node1 ~]# mysql -uzabbix -pzabbix
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 6
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| zabbix             |
+--------------------+
2 rows in set (0.01 sec)

MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [zabbix]> 

(4)Configure the database for Zabbix server

[root@node1 ~]# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

(5)Configure PHP for Zabbix frontend

[root@node1 ~]# vi /etc/php.ini
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
date.timezone = Asia/Shanghai

(6)Start Zabbix server and agent processes

[root@node1 ~]# systemctl restart zabbix-server zabbix-agent httpd
[root@node1 ~]# systemctl enable zabbix-server zabbix-agent httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@node1 ~]# 

4、Configure Zabbix frontend

未分类

https://www.zabbix.com/documentation/3.0/manual/installation/install#installing_frontend

http://node1/zabbix/

未分类

未分类

未分类

未分类

未分类

未分类

未分类

未分类

手把手教你CentOS 7.x下安装网络流量实时监控工具iftop的两种方法

在类Unix系统中可以使用top查看系统资源,进程,内存占用等信息,查看网络状态可以使用netstat、nmap等工具,若要查看实时的网络流量,监控TCP/IP连接,反向解析IP,显示端口信息等,则可以使用iftop,关于centos上安装iftop有两种方法,一种是直接yum安装,一种是自己编译安装,下面我们一起来看下吧!

yum方式安装比较简单,直接以下命令即可:

yum -y install iftop

一般情况下这样就可以安装好了,但是有的小伙伴会遇到以下问题:

# yum install iftop //用命令直接安装

Loaded plugins: fastestmirror  

Loading mirror speeds from cached hostfile

 * base: mirrors.skyshe.cn  

 * extras: centos.ustc.edu.cn  

 * updates: mirrors.skyshe.cn  

Setting up Install Process  

No package iftop available. //没有可用的安装包  

Error: Nothing to do //什么都没干  

出现这种情况,我们就需要自己下载iftop,然后解压,配置,编译安装了,

我们先去iftop的官网上下载,官网链接:http://www.ex-parrot.com/pdw/iftop/download/,选择最新版本(当前最新版iftop-1.0pre4.tar.gz),

开始之前,我们先安装iftop所需的依赖软件,

# yum install -y flex byacc libpcap ncurses-devel libpcap-devel //先要安装必需的软件  

接下来就可以创建目录并下载、配置、编译安装了,

# mkdir iftop  

# cd iftop/ 

# wget http://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre4.tar.gz //下载

# tar zxvf iftop-1.0pre4.tar.gz //解压

# cd iftop-1.0pre4  

# ./configure //配置  

# make && make install //编译安装  

OK,安装完成,关于iftop的使用命令,大家自行百度、谷歌一下,一搜一大把,下面以一个示例来简单说明下:

iftop -i netcard -B -n

netcard是网卡名称,可以通过ifconfig命令查看得到,- i netcard是指定网卡,-B是以byte显示网速,默认是以bit显示的,-n是直接显示IP而不是显示主机名。

CENTOS 7上PHP-FPM无法启动的问题处理

缘由:

现在自用的Linux主机系统我都是选的CentOS 7,用的PHP版本也升级到了PHP 7。在之前的主机、博客维护过程中已经出过不少问题,这次又碰到了一个问题——在主机因维护而重启后php-fpm没有正确启动导致博客无法正常访问,解决办法和之前的不太一样,所以在此记录一下,方便以后查阅、参考。

正文:

参考解答:

0、一些辅助命令

# ls -lt /etc/systemd/system/multi-user.target.wants/

# find / -type f -iname "php-fpm.conf" | xargs ls -lt
# grep -v '^;' /etc/opt/remi/php71/php-fpm.d/www.conf | grep 'listen'

# nginx -t
# grep "fastcgi_pass" /etc/nginx/nginx.conf

1、systemd的系统启动项

应该是从CentOS 7开始,Linux服务管理器开始用systemd来替换之前的SysVinit,很多命令和之前不太一样,具体的可以参考之前记录的一篇文章「Linux的systemd相关知识学习」,这里只提一点:

# systemd里面的.service文件一般是放在下面这个目录下,当不记得服务名称了,可以去目录里看看
# ls -lt /usr/lib/systemd/system/
# cat /usr/lib/systemd/system/php71-php-fpm.service

&

# 查看当前系统上现在有哪些开机启动项,如果不在的话使用enable进行添加
# ls -lt /etc/systemd/system/multi-user.target.wants/
# systemctl enable nginx
# systemctl enable php71-php-fpm
# systemctl enable mysqld

2、php-fpm启动失败的原因

● php71-php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php71-php-fpm.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2018-05-05 10:38:32 CST; 36s ago
  Process: 5500 ExecStart=/opt/remi/php71/root/usr/sbin/php-fpm --nodaemonize (code=exited, status=78)
 Main PID: 5500 (code=exited, status=78)

May 05 10:38:32 ixyzero-centos systemd[1]: Starting The PHP FastCGI Process Manager...
May 05 10:38:32 ixyzero-centos php-fpm[5500]: [02-May-2018 10:38:32] ERROR: unable to bind listening socket for address '/var/run/php-fpm/php-fpm.sock': No such file or directory (2)
May 05 10:38:32 ixyzero-centos php-fpm[5500]: [02-May-2018 10:38:32] ERROR: FPM initialization failed
May 05 10:38:32 ixyzero-centos systemd[1]: php71-php-fpm.service: main process exited, code=exited, status=78/n/a
May 05 10:38:32 ixyzero-centos systemd[1]: Failed to start The PHP FastCGI Process Manager.
May 05 10:38:32 ixyzero-centos systemd[1]: Unit php71-php-fpm.service entered failed state.
May 05 10:38:32 ixyzero-centos systemd[1]: php71-php-fpm.service failed.

即,没有 /var/run/php-fpm/php-fpm.sock 这个文件,导致无法绑定监听端口/文件,初始化失败。

之前出现这种问题,一般是以下原因之一:

  • php-fpm的配置文件里的listen.owner/group和Nginx配置文件里的user/group不匹配,导致权限不够;
  • php-fpm的配置文件里的listen和Nginx配置文件里的fastcgi_pass不匹配,导致监听和读取的不是同一个socket文件;

3、临时解决办法

但这次不是,这次的上面2个配置都是对的,但就是 /var/run/php-fpm/php-fpm.sock 这个文件不存在,解决办法也很简单,就是:

# sudo mkdir -p /var/run/php-fpm/
# sudo touch /var/run/php-fpm/php-fpm.sock

# sudo systemctl start php71-php-fpm

不过,一旦机器重启,/var/run/php-fpm/php-fpm.sock 这个文件就又没了,而且 /var/run/php-fpm/ 这个目录也没了,所以,这种手工创建目录、文件的方式只能临时生效。

4、长期解决办法

如果想要找到一个长期有效的办法,那就需要定位问题以及其背后的原因,否则问题还是会一直存在。

# 看 /var/run/ 目录权限
[zero@ixyzero-centos ~]$ ls -lt /var/ | grep "run"
lrwxrwxrwx.  1 root root   11 2月   3 2017 lock -> ../run/lock
lrwxrwxrwx.  1 root root    6 2月   3 2017 run -> ../run
[zero@ixyzero-centos ~]$
[zero@ixyzero-centos ~]$ ls -lt / | grep "run"
drwxr-xr-x  22 root root   620 5月   2 16:30 run

# 从上面的信息可以看出, /var/run 这个目录只有root才有「写」权限,而php-fpm的执行用户是和Nginx一样的低权限用户,所以无法创建 /var/run/php-fpm/ 子目录,从而也就无法创建 /var/run/php-fpm/php-fpm.sock 文件

# 目录 /var/run 有点「内存盘」的感觉,就是说它不是一直稳定存在的,而是只存在于内存中(网上有说法是这样会提高速度),当系统重启时,/var 下的目录便会消失,需要重新创建

综上,我将原先php-fpm的配置文件里的listen和Nginx配置文件里的fastcgi_pass都改成了 /var/run/php-fpm.sock ,然后将php-fpm和Nginx服务都加入系统启动项,重启系统,一切OK。

Centos 6/7 升级 PHP 5.6 到 7.1/7.2

本站使用的是 WordPress 搭建,刚开始搭建的时候吧,没啥经验,网上搜一搜,就用了 PHP 5.6 版本,然后网站速度这个慢啊,虽然用了各种方法已经很快了,但是当时搜出来的使用 PHP 7 这个方法一直没试,心里痒,这回终于升级了一下。

1. 检查当前安装的 PHP

查看当前 PHP 版本

php -v

查看当前 PHP 相关的安装包

yum list installed | grep php

2. 更换 RPM 源

#Centos 5.X:
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm

#CentOs 6.x:
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

#CentOs 7.X:
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

3. 停止相关服务

关闭 php-fpm 和 nginx 服务

service php-fpm stop
/usr/local/nginx/sbin/nginx -s stop
BashCopy

4. 删除已经安装的 PHP 相关包

yum remove php*
BashCopy

5. 安装新版本 PHP

php 7.0/7.1/7.2 分别表示为 70w/71w/72w

目前(2018-5-4)

CentOs 6.x 的 RPM 源中最高只有 7.1

CentOs 7.x 的 RPM 源中有 7.2

yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-fpm php71w-gd php71w-mbstring php71w-mysqlnd php71w-opcache php71w-pdo php71w-xml php71w-ldap php71w-mcrypt
BashCopy

6. 重新启动相关服务

service php-fpm start
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
BashCopy

7. 再次检查版本

php -v

CentOS 7.4 安装python3及虚拟环境

由于写了个爬虫脚本,需要放到服务器中运行。之前一直在Ubuntu系统中安装多Python环境,而CentOS系统的安装步骤略微有些出入,故详细记录下这几天趟过的坑。

说明

1.本文的系统命令一般会在语句前加上#号,以区分系统命令及其他内容。输入命令时,无需输入#号。

# yum install vim

2.本文系统输出的信息,会在前面加上>>号。

# which python
>> /usr/bin/python    # 系统输出的信息

3.本文的系统命令都是在root账号下执行的,假如非root账号执行,提示没有权限,可在命令前加sudo。

# yum install vim    #root账号下执行命令
# sudo yum install vim    #非root账号下执行管理员权限命令,需在命令前加`sudo`

4.安装环境

系统版本:CentOS 7.4(自带Python2.7)
安装版本:Python3.6
安装插件:virtualenv、virtualenvwrapper

一、安装Python3

由于CentOS7原本就安装了Python2,而且这个Python2不能被删除,因为有很多系统命令,比如yum都要用到。所以我们要额外安装Python3,而且系统一般允许多个版本的python同时存在。

我们先来查看python安装位置,一般是位于/usr/bin/python目录下。

# which python
>> /usr/bin/python

下面介绍安装Python3的方法:

1. 安装依赖包(切记安装)

# yum -y groupinstall "Development tools"
# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2.下载Python3安装包

大家可根据自己需求下载不同版本的Python3,我下载的是Python3.6.2

# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

3. 新建python3存放目录

# mkdir /usr/local/python3 

4. 安装Python3

解压压缩包,进入解压目录,指定安装目录,安装Python3。

# tar -xvJf  Python-3.6.2.tar.xz
# cd Python-3.6.2
# ./configure --prefix=/usr/local/python3
# make && make install

安装Python3时,会自动安装pip。假如没有,需要自己手动安装。

# yum -y install python-pip

5. 创建软链接

# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

6. 安装完成,输入python3测试

未分类

二、创建虚拟环境

virtualenv是一个可以在同一计算机中隔离多个python版本的工具。有时,两个不同的项目可能需要不同版本的python,如 python2.7 / python3.6 ,但是如果都装到一起,经常会导致问题。virtualenv能够用于创建独立的Python虚拟环境,多个Python相互独立,互不影响。
virtualenvwrapper这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。

下面介绍安装python虚拟环境的方法:

使用pip安装包前,先更新pip。

# pip3 install --upgrade pip

1. 安装virtualenv、virtualenvwrapper

# pip3 install virtualenv
# pip3 install virtualenvwrapper

2. 进入.bashrc文件中,定义virtualenvwrapper路径

使用vim编辑.bashrc文件

# vim ~/.bashrc

在文末填入以下代码并保存

VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/bin/python3    # 指定virtualenvwrapper执行的python版本
export WORKON_HOME=$HOME/.virtualenvs    # 指定虚拟环境存放目录,.virtualenvs目录名可自拟
source /usr/local/bin/virtualenvwrapper.sh    # virtualenvwrapper.sh所在目录

3. 运行.bashrc文件

# source ~/.bashrc

4. 创建虚拟环境

# mkvirtualenv py3-env

也可指定虚拟环境的python版本

# mkvirtualenv --python=/usr/bin/python3 py3-env  

5. 进入虚拟环境中,然后进入到项目所在目录,安装好相应的包(如无需要,可跳过此步)

#  pip install -r requirements.txt

虚拟环境搭建完成!

常见的virtualenvwrapper命令

  • 创建虚拟环境
# mkvirtualenv my_env
  • 切换到某个虚拟环境
# workon my_env
  • 退出当前虚拟环境
# deactivate
  • 删除某个虚拟环境
# rmvirtualenv my_env
  • 列出所有虚拟环境
# lsvirtualenv
  • 进入到虚拟环境所在的目录
# cdvirtualenv

三、异常情况

  • 假如source ~/.bashrc时,提示以下错误
# source ~/.bashrc
>> -bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory

【原因】
.bashrc文件中的virtualenvwrapper.sh所在目录错误。

【解决方案】
①查找virtualenvwrapper.sh所在目录

# find / -name "virtualenvwrapper.sh"
>> /usr/local/python3/bin/virtualenvwrapper.sh

②把.bashrc文件的virtualenvwrapper.sh目录更改为实际所在目录

source /usr/local/python3/bin/virtualenvwrapper.sh    # virtualenvwrapper.sh实际所在目录
  • 假如创建虚拟环境时,提示以下错误
# mkvirtualenv my_env
>> ERROR: virtualenvwrapper could not find virtualenv in your path

【解决方案】
①查找virtualenv所在目录

# find / -name "virtualenv"
>> /usr/local/python3/bin/virtualenv

②创建软链接

#  ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv

CentOS 7 里使用自动化运维工具Ansible

PS:开源的自动化运维部署工具,在以前的项目中应用过Puppet,研发部门也开发过一套自动化部署系统(主要基于java在web界面调用shell脚本部署),使用过程中都有各种不满意。最近尝试一个新一点的Ansible,发现非常好用。配置简单,功能强大。

一、简介与优点

1、ansible是为类Unix系统开发的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、SaltStack、chef等)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

2、Puppet、SaltStack、Chef这三个都采用C/S模式,每台被控机器都需要安装客户端,对于数量在数百台以上的机器上部署仍然有些麻烦。相比之下,Ansible无需安装服务端和客户端,只要SSH 验证即可。典型的“去中心化”思想。

3、使用简单,快速上手。以前在用Puppet之前,花了时间研究。本来使用Puppet就是想把自己从重复的事情中解放出来,结果为了简化一件事,而深入另一件复杂的事。

4、配置文件易读。Ansible 的主机定义文件使用 INI 格式,支持分组,能够指定模式;此外也能动态生成,这对管理云主机很有用。Playbook是YAML格式,比Puppet的DSL要易读易写很多。

二、安装与基本使用

1、安装:
Ansible默认不在yum的默认库中,需要启用epel库。(建议用阿里云的库,下载速度最快。)

# cd /etc/yum.repos.d/
# wget http://mirrors.aliyun.com/repo/epel-7.repo
# yum install ansible -y

2、设置用于节点鉴权的SSH密钥:
在Ansible服务端生成密钥,并且复制密钥到各个被控节点中。

# ssh-keygen
# ssh-copy-id -i [email protected]

3、为Ansible定义节点清单
节点维护清单在配置文件/etc/ansible/hosts 里面。

[16-servers]
10.36.16.12
10.36.16.15
10.36.16.16
10.36.16.17
10.36.16.18
10.36.16.19
10.36.16.20
10.36.16.21
10.36.16.22

4、基本使用:
检查16-servers节点组的连通性:

ansible 16-servers -m ping

检查16-servers节点组的内核版本:

ansible 16-servers -m shell -a "uname -a"

检查16-servers节点组的磁盘使用情况并把结果输出到本地指定文件:

ansible 16-servers -m shell -a "df -Th" > /root/df.txt

5、常用模块用法:
shell和command的区别:shell模块支持管道符和变量等特殊字符,而command不支持。

command模块(执行远程命令)

ansible 16-servers -m command -a "uname -a"

shell模块(执行远程主机的shell/python脚本)

ansible 16-servers -m shell -a "/root/xxx.py"

script模块(在远程主机执行主控端的shell/python脚本)

ansible 16-servers -m script -a "/root/xxx.py"

raw模块(类似于command模块、支持管道传递)

ansible 16-servers -m raw -a "netstat -na|grep ESTABLISHED|wc -l"

先说这些了,更详细用法请参考官方文档:

http://docs.ansible.com/

linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少

最近删除一个比较大的文件发现空间没有减少,在网上查阅资料是删除后,因为还有人使用,空间没有释放。

0. 查看剩余空间

[root@xy ~]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda3             9.7G  805M  8.4G   9% /
/dev/sda6             199G  143G   47G  76% /usr
/dev/sda2              48G  309M   45G   1% /home
/dev/sda1              99M   12M   83M  12% /boot

1. 查看删除后没有释放的程序和文件

#lsof |grep delete



mysqld     2885     mysql  139u      REG        8,6 3909479780    7634958 /usr/local/mysql/data/xxx.MYD (deleted)

mysqld     2885     mysql  140u      REG        8,6  893916160    7634977 /usr/local/mysql/data/sms_client/yyy.MYI (deleted)

mysqld     2885     mysql  141u      REG        8,6 3179710840    7634978 /usr/local/mysql/data/sms_client/zzz.MYD (deleted)

2. kill掉这个程序.

# kill -9 2885

3. 查看删除后的空间

[root@xy ~]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda3             9.7G  805M  8.4G   9% /
/dev/sda6             199G   24G  165G  13% /usr
/dev/sda2              48G  309M   45G   1% /home
/dev/sda1              99M   12M   83M  12% /boot
tmpfs                 2.0G     0  2.0G   0% /dev/shm

centos 7.1下制作google镜像站

一、首先用xshell链接vps

(有个人免费版的,到官网注册即可下载)

未分类

未分类

联网后输入命令:

ifconfig

查看本机外网ip,记录后备用:

未分类

二、下面进行配置

1.下载文件:

yum install -y gcc gcc-c++ git make
wget "http://nginx.org/download/nginx-1.7.8.tar.gz"
wget "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz"
wget "https://www.openssl.org/source/openssl-1.0.1j.tar.gz"
wget "https://www.openssl.org/source/openssl-1.0.1j.tar.gz"
wget "http://zlib.net/zlib-1.2.11.tar.gz"
git clone https://github.com/cuber/ngx_http_google_filter_module
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module

2.解压文件:

tar xzvf nginx-1.7.8.tar.gz 
tar xzvf pcre-8.38.tar.gz 
tar xzvf openssl-1.0.1j.tar.gz 
tar xzvf zlib-1.2.11.tar.gz

3.进入nginx源码文件夹:

cd nginx-1.7.8

4.设置编译选项:

./configure --prefix=/opt/nginx-1.7.8 --with-pcre=../pcre-8.38 --with-openssl=../openssl-1.0.1j --with-zlib=../zlib-1.2.11 --with-http_ssl_module --add-module=../ngx_http_google_filter_module --add-module=../ngx_http_substitutions_filter_module

5.编译、安装:

make
sudo make install

6.接下来启动, 测试安装是否成功:

/opt/nginx-1.7.8/sbin/nginx -t

未分类

7.进入conf文件编辑:

vi /opt/nginx-1.7.8/conf/nginx.conf

按a键可以进行编辑,坐下角会出现insert标志,这是linux基本的命令。按ESC后,输入:wq是保存并退出,输入:q!是不保存退出。

未分类

8.将conf文件中server部分修改如下:

server {
    listen       80;
    server_name  www.abc.com;#此处换成该vps的外网ip(前一步得到的那个),或者自己的网址
     location / {
        proxy_pass https://www.google.com;
        proxy_connect_timeout 120;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        send_timeout 600;
        proxy_redirect    off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        google on;
        google_language "zh-CN";
       }
  }

ESC后输入保存并退出文件的命令:

未分类

9.启动nginx

/opt/nginx-1.7.8/sbin/nginx -c /opt/nginx-1.7.8/conf/nginx.conf

如果此时nginx已经启动,得重新加载一次

/opt/nginx-1.7.8/sbin/nginx -s reload

至此在本地浏览器输入vps的ip地址,已经可以访问google了

未分类