CentOS 7 直接安装 gcc 7

在一台没有安装过低版本gcc的系统里,如何安装gcc 7 ?以下是详细步骤。

使用开发工具集安装:

sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
which gcc
gcc --version

这种方法同样适用于安装gcc6,只需要将上面命令中7改成6即可。详情请参考: https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/

CentOS安装tshark抓包工具

准备在服务器上用tshark抓包,分析一下数据。直接yum install tshark却发现没有这个包。网上搜索一下,各种奇葩安装方式,又是安装apt?又是安装各种环境?我相信既然CentOS已经有了yum这么好的包管理工具,那么一定有更简单的方式。
最后只好在Google上直接用我这蹩脚的英文搜索一下。果然,一句how to install tshark on centos顺利解决了我的问题。
原来一直是自己对yum这个命令了解太少了,平时只会yum install,yum update :first_quarter_moon_with_face: 。那么到底故事如何,客官且听我细细道来。
当我试图直接安装时:

$ yum install tshark
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
没有可用软件包 tshark。
错误:无须任何处理

那么,该怎么办呢? 原来yum提供了搜索功能。

$ yum whatprovides *tshark*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
base/7/x86_64/filelists_db                                                    | 6.9 MB  00:00:00
epel/x86_64/filelists                                                         |  10 MB  00:00:00
extras/7/x86_64/filelists_db                                                  | 524 kB  00:00:00
updates/7/x86_64/filelists_db                                                 | 2.1 MB  00:00:00
1:bash-completion-extras-2.1-11.el7.noarch : Additional programmable completions for Bash
源    :epel
匹配来源:
文件名    :/usr/share/bash-completion/completions/tshark

wireshark-1.10.14-14.el7.i686 : Network traffic analyzer
源    :base
匹配来源:
文件名    :/usr/sbin/tshark
文件名    :/usr/share/wireshark/tshark.html
文件名    :/usr/share/man/man1/tshark.1.gz

wireshark-1.10.14-14.el7.x86_64 : Network traffic analyzer
源    :base
匹配来源:
文件名    :/usr/sbin/tshark
文件名    :/usr/share/wireshark/tshark.html
文件名    :/usr/share/man/man1/tshark.1.gz

我们可以看到wireshark包已经包含了tshark包。

接下来就是我们熟悉的步骤了==。

$ yum install wireshark
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 wireshark.x86_64.0.1.10.14-14.el7 将被 安装
--> 正在处理依赖关系 libsmi.so.2()(64bit),它被软件包 wireshark-1.10.14-14.el7.x86_64 需要
--> 正在处理依赖关系 libcares.so.2()(64bit),它被软件包 wireshark-1.10.14-14.el7.x86_64 需要
--> 正在检查事务
---> 软件包 c-ares.x86_64.0.1.10.0-3.el7 将被 安装
---> 软件包 libsmi.x86_64.0.0.4.8-13.el7 将被 安装
--> 解决依赖关系完成

...

已安装:
  wireshark.x86_64 0:1.10.14-14.el7

作为依赖被安装:
    c-ares.x86_64 0:1.10.0-3.el7                                                                        libsmi.x86_64 0:0.4.8-13.el7

完毕!

最后我们验证一下:

 $ tshark -v
TShark 1.10.14 (Git Rev Unknown from unknown)

Copyright 1998-2015 Gerald Combs <[email protected]> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.50.3, with libpcap, with libz 1.2.7, with POSIX
capabilities (Linux), without libnl, with SMI 0.4.8, with c-ares 1.10.0, with
Lua 5.1, without Python, with GnuTLS 3.3.26, with Gcrypt 1.5.3, with MIT
Kerberos, without GeoIP.

Running on Linux 3.10.0-693.11.1.el7.x86_64, with locale zh_CN.UTF-8, with
libpcap version 1.5.3, with libz 1.2.7.
Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

Built using gcc 4.8.5 20150623 (Red Hat 4.8.5-16).

写这边文章并不只是只是为了说明tshark怎么在centos怎么安装,更多的是有时候我们需要扩展自己的知识面,避免重复造轮子。

CentOS安装配置PHP的Memcache扩展

前面我们已经讲了怎么安装memcached对象缓存系统,光是安装了没有PHP的扩展支持,对咱们的WordPress仍然是没有任何加速作用,跟我一起来配置下PHP的Memcache扩展吧!

下载软件资源

php扩展memcache3.0.8下载地址:http://pecl.php.net/package/memcache

直接下最新版的,其实已经很久没更新了。

安装步骤

上传下载好的软件包到服务器,然后通过终端cd进入该目录。

解压压缩包

tar zxvf memcache-3.0.8.tgz

cd进入解压目录

这里有点重要,注意。找到你的PHP安装路径,确定bin目录下存在phpize文件。

用phpize生成configure配置文件,我的PHP就在/usr/local/php5.5.7/bin。

/usr/local/php5.5.7/bin/phpize

用php-config配置安装信息,注意你的php-config文件所在路径,我的在/usr/local/php5.5.7/bin/php-config

./configure -enable-memcache --with-php-config=/usr/local/php5.5.7/bin/php-config --with-zlib-dir

编译

make

安装

make install

请注意,如果你的PHP版本是7以上的,这里会安装出错,因为PHP7修改了一个文件名,这个扩展很久没更新了,没有兼容PHP7,所以这种方法安装不了。

安装成功会出现一个路径地址,我没有截图,这里用别人的图。

未分类

复制这个路径,修改php.ini文件。

修改extension_dir路径:

extension_dir = “上图生成的路径”

为PHP添加模块

extension=memcache.so

重启php-fpm,Apache直接重启Apache就好,NGINX还是都重启下吧。

在你的网站中放入一个PHP文件,里面写上

<?php
phpinfo();
?>

浏览器访问这个文件,使用Ctrl+F查找memcace,有则安装成功。

未分类

CentOS安装GoAccess快速方便的分析网站日志

GoAccess旨在成为一个基于终端的快速日志分析器,其核心思想是实时快速分析和查看Web服务器统计信息,GoAccess可分析Apache/Nginx等WEB日志,同时还支持生成HTML、JSON、CSV等数据报告。

未分类

安装GoAccess

GoAccess支持yum安装,直接执行命令yum -y install goaccess即可,不过为了拥有更大的灵活性,推荐使用下面的方法编译安装。

#安装依赖
yum -y install libmaxminddb-devel
#下载源码
wget https://tar.goaccess.io/goaccess-1.2.tar.gz
#解压
tar -xzvf goaccess-1.2.tar.gz
#进入目录
cd goaccess-1.2/
#编译安装
./configure --enable-utf8 --enable-geoip=mmdb --with-openssl --with-libmaxminddb-devel
make && make install

如果不出意外输入命令goaccess -V就可以看到对应的版本了。更多的编译参数可参考官方帮助文档:https://goaccess.io/download

未分类

运行GoAccess

最简单的做法就是直接运行goaccess 日志路径根据提示选择,如果您觉得终端的方式看起来不习惯,我们还可以生成静态的HTML报告,运行下面的命令即可:

goaccess xiaoz.me_nginx.log -a -o xxx.html --log-format=COMBINED
  • xiaoz.me_nginx.log:为日志文件具体路径
  • xxx.html:HTML报告的名字,可指定到站点目录,然后直接访问查看
  • –log-format=日志文件格式,COMBINED为标准格式

定时生成HTML报告到站点目录

每次都去手动生成报告太麻烦啦,有没有更简便的方法?写个简单的shell脚本自动生成就搞定啦,将下面的内容另存为goaccess.sh

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
export PATH
goaccess xiaoz.me_nginx.log -a -o /xiaoz.me/$(date +%Y-%m-%d).html --log-format=COMBINED
  • xiaoz.me_nginx.log:日志文件路径(请填写绝对路径)
  • /xiaoz.me/:为您站点根目录,根据自身情况修改

别忘记加上可执行权限:chmod u+x goaccess.sh,再使用crontab每小时生成一次HTML报告。

#添加计划任务
crontab -e
#添加以下内容,/root/goaccess.sh为上面脚本的绝对路径
0 * * * * /root/goaccess.sh > /dev/null
#重载crontab
service crond reload

大功告成,这样goaccess每隔1小时为我们生成一次HTML日志报告,等待一段时间访问https://domain.com/当前日期.html(日期格式如2017-07-16)就可以看到直观的HTML报告啦。

未分类

总结

goaccess还支持更多的功能,比如同时分析多个日志文件、IP查询等功能,更多使用帮助可通过goaccess -h进行查看。在之前还分享过Windows下日志分析工具《360星图》也是很不错的,并且是中文显示,看起来更加友好。

CentOS Linux解决Device eth0 does not seem to be present异常

在VMware里克隆出来的CentOS Linux。。

ifconfig…没有看到eth0.。然后重启网卡又报下面错误。

故障现象:

Shutting down loopback insterface:                                                                                                     [  OK  ]
Bringing up loopback insterface:                                                                                                          [  OK  ]
Bringing up interface eth0:  Device eth0 does not seem to be present,delaying initialization.                    [FAILED]
undefined

未分类

如上图所示

解决办法:

首先,打开/etc/udev/rules.d/70-persistent-net.rules内容如下面例子所示:

# vi /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:8f:89:9
7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:50:bd:1
7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

记录下,eth1网卡的mac地址00:0c:29:50:bd:17

接下来,打开/etc/sysconfig/network-scripts/ifcfg-eth0

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

将 DEVICE=”eth0″ 改成 DEVICE=”eth1″ ,将 HWADDR=”00:0c:29:8f:89:97″ 改成上面的mac地址 HWADDR=”00:0c:29:50:bd:17″

最后,重启网络

# service network restart或者

# /etc/init.d/network restart

正常了。

CentOS 7 安装 Python 3.7

Python 3.7 稳定版已经发布,Python 3.7 具有很多新特性,新用户推荐使用 Python 3.7,本文介绍如何在 CentOS7 系统上安装 Python 3.7,因为 CentOS 7 系统自带的 Python 版本是 Python 2.7。

CentOS 的第三方软件源中(如:IUS,SCL,EPEL)还没有 Python 3.7 的 RPM 软件包,本文先只介绍使用源码方式安装 Python 3.7。

CentOS 7 使用源文件安装 Python 3.7

1)安装依赖包

因为使用源码方式在 CentOS 7 系统中安装 Python 3.7,所以必须安装 GCC 编译器和 make 编译工具,这些软件包包含在 “Development tools” 软件组中,可以直接安装 “Development tools” 软件组:

sudo yum groupinstall "Development tools"

因为 Python 3.7 源文件使用 zlib 格式打包,所以需要安装 zlib 软件包;Python 3.7 编译安装时需要使用 zlib 的头文件和链接库,所以需要安装 zlib 的头文件和链接库 zlib-devel 软件包:

sudo yum -y install zlib zlib-devel

Python 3 有个内置模块 ctypes,它是 Python 3 的外部函数库(Foreign function library),它需要使用系统外部函数库(libffi)的头文件和链接库,所以需要安装外部函数库(libffi)头文件和链接库 libffi-devel 软件包:

sudo yum -y install libffi-devel

2)运行如下命令配置、编译、安装 Python 3.7

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar xJf Python-3.7.0.tar.xz
cd Python-3.7.0
sudo ./configure
sudo make
sudo make install

如果在编译安装时提示 zipimport.ZipImportError: can’t decompress data; zlib not available 错误,请查看关于 zlib 的解决方法。

如果在编译安装时提示 ModuleNotFoundError: No module named ‘_ctypes’ 错误,请查看关于 ctypes 的解决方法。

3)安装完成后,Python 3.7 安装在了/usr/local文件夹中,可运行文件/usr/local/bin,库文件/usr/local/lib。因为 /usr/local/bin 在 Shell 路径中,所以可以直接在 Shell 中输入如下命令 python3 运行 Python 3.7 解释器。

CentOS Docker 安装

Docker支持以下的CentOS版本:

CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本

前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

使用 yum 安装(CentOS 7下)

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本

[root@runoob ~]# uname -r 3.10.0-327.el7.x86_64

未分类

安装 Docker

Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:

[root@runoob ~]# yum -y install docker-io

未分类

安装完成。

未分类

启动 Docker 后台服务

[root@runoob ~]# service docker start

未分类

测试运行 hello-world

[root@runoob ~]#docker run hello-world

未分类

由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

使用脚本安装 Docker

1、使用 sudo 或 root 权限登录 Centos。
2、确保 yum 包更新到最新。

$ sudo yum update

3、执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com/ | sh

执行这个脚本会添加 docker.repo 源并安装 Docker。

4、启动 Docker 进程。

$ sudo service docker start

5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。

$ sudo docker run hello-world
docker ps

到此,docker 在 CentOS 系统的安装完成。

镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%dockerconfigdaemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]}

CentOS上PHP完全卸载

想把PHP卸载干净,直接用yum的remove命令是不行的,需要查看有多少rpm包,然后按照依赖顺序逐一卸载。

1. 首先查看机器上安装的所有php相关的rpm包

[root@localhost nginx]# rpm -qa | grep php

php-cli-5.3.3-22.el6.x86_64

php-pdo-5.3.3-22.el6.x86_64

php-gd-5.3.3-22.el6.x86_64

php-fpm-5.3.3-22.el6.x86_64

php-common-5.3.3-22.el6.x86_64

php-5.3.3-22.el6.x86_64

php-xml-5.3.3-22.el6.x86_64

php-pear-1.9.4-4.el6.noarch

2. 按依赖顺序进行删除

rpm -e php-fpm-5.3.3-22.el6.x86_64

rpm-e php-pdo-5.3.3-22.el6.x86_64

rpm -e php-pear-1.9.4-4.el6.noarch

rpm-e php-cli-5.3.3-22.el6.x86_64

rpm -e php-5.3.3-22.el6.x86_64

rpm-e php-xml-5.3.3-22.el6.x86_64

rpm -e php-gd-5.3.3-22.el6.x86_64

rpm-e php-common-5.3.3-22.el6.x86_64

CentOS下安装与配置JDK和Tomcat

下面以CentOS7环境,安装JDK8和Tomcat8为例,演示安装与配置过程。

一、下载JDK

从Oracle官网找到最新的JDK版本,当前最新版为Java SE Development Kit 8u92,复制下载链接,如下图所示:

未分类

shell> wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz

二、下载Tomcat

进入Tomcat官网,找到tomcat8的下载地址,如下图所示:

未分类

shell> wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.0.36/bin/apache-tomcat-8.0.36.tar.gz

三、解压JDK和Tomcat

shell> tar -zxvf jdk-8u92-linux-x64.tar.gz -C /opt
shell> tar -zxvf apache-tomcat-8.0.35.tar.gz -C /opt

未分类

四、配置JDK环境变量

vim /etc/profile.d/java.sh
# 在java.sh中加入如下内容:
JAVA_HOME=/opt/jdk1.8.0_92
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

保存并退出,执行sources /etc/profile,使环境变量生效

五、启动tomcat

shell> /opt/apache-tomcat-8.0.35/bin/startup.sh

CentOS(linux) 下MySQL8.0.11的安装

系统
CentOS 7.4

安装软件
MySQL8.0.11

  • 下载MySQL yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
  • 安装yum源
yum localinstall mysql80-community-release-el7-1.noarch.rpm
  • 更新yum源
yum clean all
yum makecache
  • 创建Mysql账户
groupadd mysql
useradd -g mysql mysql
  • 开始安装MySQL
yum install mysql-community-server
  • 启动MySQL
systemctl start mysqld
  • 查看初始化密码
cat /var/log/mysqld.log | grep password

未分类

  • 登录MySQL
mysql -u root -p
  • 修改初始化密码(密码一定要大小写字母+数字+符号,如:Aa-123456789)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';
  • 远程设置
use mysql;
update user set host='%' where user='root';
  • 允许任何主机访问数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 允许myuser用户使用mypassword密码从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
  • 允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;