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;

CentOS安装新版git——超简单

忘了从哪里弄来的,CentOS6安装新版git的利器:

CentOS6:

#安装Git
yum install -y epel-release
rpm -ivh https://centos6.iuscommunity.org/ius-release.rpm
yum list git2u
yum install -y git2u
git --version

CentOS7:

[html] view plain copy
<code class="language-html">#安装Git  
yum install -y epel-release  
rpm -ivh https://centos7.iuscommunity.org/ius-release.rpm  
yum list git2u  
yum install -y git2u  
git --version  
</code>  

可以说是见到过的最简单的办法了

在虚拟机中快速搭建 Ansible 跟 Ceph 环境

在上一篇文章 Vagrant 单机快速模拟集群 https://imquanquan.net/archives/Vagrant-single-machine-fast-simulation-cluster.html 中,介绍了如何在本机中,快速利用 Vagrant 虚拟机管理工具快速起四台虚拟机来模拟集群,这篇文章将利用这些虚拟机来搭建一个 Ansible 跟 Ceph 的集群环境。

虚拟机配置

未分类

以上是各虚拟机节点的配置情况。四各节点内存都是 512 M,CPU 一核,系统 Dabian 9。

安装过程

1. 改 hostname 跟 hosts 文件

改 hostname 跟 hosts 有利于识别节点还有可以让节点之间靠 hostname 来通信。

创建虚拟机的时候已经设好了 hostname,把下面一段加入每个节点的 /etc/hosts 即可:

10.1.0.101    node1
10.1.0.102    node2
10.1.0.103    node3
10.1.0.104    deploy

2. 添加用户

下一件要做的就是,让添加部署的时候要用的用户了。在每个节点都执行:

sudo useradd -d /home/test -m test
sudo echo "test ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/test
sudo chmod 0440 /etc/sudoers.d/test
sudo passwd test

还顺便添加了无密码 sudo 的权限

3. 无密码 ssh 登录

添加部署节点 deploy 对 node 的无密码 ssh 登录,以搭建 Ansible 然后可以批量对 node 执行操作。在 deploy 执行:

su test
ssh-keygen
cat /home/test/.ssh/id_rsa.pub

三下回车生成密钥对,然后拷贝 /home/test/.ssh/id_rsa.pub 文件的内容到各个 node 节点:

su test
mkdir ~/.ssh
vi ~/.ssh/authorized_keys
sudo chmod 600 ~/.ssh/authorized_keys

编辑 ~/.ssh/config 文件:

Host node1
User test
Port 22

Host node2
User test
Port 22

Host node3
User test
Port 22

安装 Ansible

以下操作无特殊说明都在 deploy 节点进行操作。

1. 从包管理工具安装

sudo apt update && sudo apt install ansible

2. 修改 Ansible 配置文件

在 /etc/ansible/hosts 文件加入:

[ceph-deploy]
localhost  ansible_connection=local


[ceph-node]
node1
node2
node3

3. 验证&&测试:

ansible all -m ping

Ceph deploy 节点安装

1. 从包管理工具安装

添加 release key,软件源。这里安装的是 jewel 版本的 ceph:

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://download.ceph.com/debian-jewel/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

更新,安装:

sudo apt-get update && sudo apt-get install ceph-deploy

Ceph 节点安装准备

1. 安装 ntp

修改时区:

ansible all -a "cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime" --sudo

建议在所有 Ceph 节点上安装 NTP 服务(特别是 Ceph Monitor 节点),并跟同一个 ntp 服务器进行时间同步,以免因时钟漂移导致故障:

ansible all -a   "apt update" --sudo
ansible all -a   "apt install ntp -y" --sudo

编辑 ntp 配置文件:

vi ntp.conf

restrict cn.pool.ntp.org
server cn.pool.ntp.org

分发,重启服务:

ansible all -m copy -a "src=/home/test/ntp.conf dest=/etc/ntp.conf" --sudo
ansible all -a "systemctl restart ntp" --sudo 

2. 安装依赖

安装 python-minimal:

ansible all -a "apt -y install python-minimal -y" --sudo

3. 开放端口

ansible all -a "iptables -A INPUT -i eth0 -p tcp -s 10.1.0.0/24 --dport 6789 -j ACCEPT" --sudo
ansible all -a "iptables -A INPUT -i eth0 -p tcp -s 10.1.0.0/24 --dport 6800:7300 -j ACCEPT" --sudo
ansible all -a "iptables-save" --sudo

ceph-mon 安装

1. 添加 mon 节点

mkdir ceph-cluster && cd ceph-cluster
ceph-deploy new node1 node2 node3

2. 修改配置文件

修改 ceph.conf 文件,添加:

# osd 节点个数
osd_pool_default_size = 3
# osd 节点最小个数
osd_pool_default_min_size = 1
# ceph 公共网络
public network = 10.1.0.0/24

2. 安装 ceph 节点

使用华中科大镜像源安装:

ansible all -a "wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -" sudo
ceph-deploy install --repo-url http://mirrors.ustc.edu.cn/ceph/debian-jewel/ node1 node2 node3

3. 初始化 mon 节点

ceph-deploy mon create-initial
ceph-deploy admin  node1 node2 node3

ceph osd 节点安装

1. 查看集群 uuid

集群的 uuid 就是这个 ceph 集群的唯一标识,后面要用:

cat ceph.conf

[global]
fsid = 88fc281e-b9d0-4de3-b662-eaf3bef46943
mon_initial_members = node1, node2, node3
mon_host = 10.1.0.101,10.1.0.102,10.1.0.103
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

osd_pool_default_size = 3
osd_pool_default_min_size = 1
public network = 10.1.0.0/24

其中 88fc281e-b9d0-4de3-b662-eaf3bef46943 就是 uuid

2. 安装 osd

ssh 到各个节点,执行以下命令:

mkdir /home/test/osd0
sudo chown ceph: /home/test/osd0/
sudo ceph-disk prepare --cluster ceph   --cluster-uuid 88fc281e-b9d0-4de3-b662-eaf3bef46943 --fs-type  ext4 /home/test/osd0/
sudo ceph-disk activate /home/test/osd0/

以上命令是在 node1 上执行的,请将 uuid 替换成自己的,–fs-type 是 ext4,请换成自己的类型。然后将 osd0 替换掉对应节点的 osd 编号。

3. 查看集群健康状况

当所有节点都安装完成,可以在任一节点执行以下命令查看集群健康状况:

ceps -s