CentOS 7编译安装及yum安装Python 3

最新的CentOS 7,默认的python版本仍然是python2.7,且python3也不在base仓库中。如果你的python应用程序依赖python3,在CentOS 7中有两种方法来安装Python 3。

从源码编译安装Python3

从源码编译安装python3是最通用的一种安装方法。因为你能选择安装的python3的版本,可以确切清楚安装python所需的依赖。

首先,安装所需工具:

$ sudo yum install yum-utils

然后使用yum-builddep,为python3配置一个必须的构建环境和安装所需的依赖。如下命令:

$ sudo yum-builddep python

现在从https://www.python.org/ftp/python/下载python3版本,如python3.5

$ curl -O https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz

最后,按如下步骤安装python3。默认的安装路径为/usr/local。如果需要更改到其它目录,指定编译参数–prefix=/alternative/path。

$ tar xf Python-3.5.0.tgz
$ cd Python-3.5.0
$ ./configure
$ make
$ sudo make install

执行完成后将安装python3,pip3,setuptools以及python3的库。

$ python3 --version

从EPEL yum安装python3

最新的EPEL 7仓库提供python3的安装。因此如果你使用的是CentOS7,你可以非常容易地安装python3了。执行如下命令启用EPEL仓库:

$ sudo yum install epel-release

然后使用yum安装python3.4

$ sudo yum install python34

注意这时是没有安装有pip的。要安装pip和setuptools,需要执行如下命令:

$ curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo /usr/bin/python3.4 get-pip.py

Python

Zabbix3.0监控Apache2.4服务器状态

我们需要启动mod_status来监控apache,执行如下命令:

a2enmod status

然后找到status.conf来配置mod_status,如果使用的是Debian发行版本,status.conf文件应该在/etc/apache2/mods-enabled/status.conf,配置如下:

<IfModule mod_status.c>
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the ".example.com" to allow
# access from other hosts.
#
ExtendedStatus On
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

Listen 61709
NameVirtualHost 127.0.0.1:61709
<VirtualHost 127.0.0.1:61709>
</VirtualHost>
</IfModule>

然后重启apache

/etc/init.d/apache2 restart

并添加如下行到zabbix的/etc/zabbix/zabbix_agentd.conf:

# Apache Keys
UserParameter=apache.status[*],wget -q -O /dev/null "http://localhost:61709/server-status?auto" && wget -q -O - "http://localhost:61709/server-status?auto" | awk '/$1: / {print $NF}'

现在重启zabbix agent。

/etc/init.d/zabbix-agent restart

之后就可以在zabbix看到apache的监控数据了。

Nginx使用limit_rate limit_conn限制文件下载速度

今天搜索如何在一个Nginx服务器限制下载速度,该服务器每秒有大量的mp4视频文件请求。遇到的问题是,每个用户发起大量的请求消耗了大量的服务器带宽,所以使用Nginx的limit_rate和limit_rate_after这两个指令解决此问题。

基于我自己服务器的配置,我在一个location块使用这两个指令:

location ^~ /videos/ {
    ...
    limit_rate_after 1m;
    limit_rate 150k;
    ...
}

第一个指令limit_rate_after,从下载到你指定的文件大小之后开始限速,然后第二个指令limit_rate,设置最高下载速度。

要注意的是上面的设置是限制的是每一个连接的下载速度,所以如果一个用户打开了多个连接下载,那么它的下载速度就能达到单个连接的限速乘以连接数。不过我们可以使用limit_zone和limit_conn这两个指令限制其连接数。例如:
在server块配置中:

limit_rate 128K; limit_zone one $binary_remote_addr 10m;

在location配置块中:

limit_conn one 10;

上面的配置表示每个连接允许的速率为1Mbit,最大连接数10个。

CentOS 7安装Zabbix3.0

Zabbix是开源的监控服务器性能的工具。

使用它可以搭建一个“监控性能服务器”,专门监控其它服务器的性能。

Zabbix使用MySQL/MariaDB/Oracle/IBM DB2存储数据,使用PHP做web接口。

官网上的介绍:

Zabbix is the ultimate enterprise-level software designed for real-time monitoring of millions of metrics collected from tens of thousands of servers, virtual machines and network devices.

Zabbix is Open Source and comes at no cost.

Zabbix最新发布了3.0.1版本。

下面记录了在CentOS 7上安装Zabbix的步骤,应该适用于其它基于RHEL的Linux发行版。

我的系统环境:

  • CentOS 7
  • hostname:zabbix.topspeedsnail.com
  • IP:159.203.205.23
    在安装之前,update系统:
# yum update

添加Zabbix仓库:

# yum install epel-release
# rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

安装Zabbix Server,MariaDB数据库, Web Server和PHP:

# yum install zabbix-server-mysql zabbix-web-mysql mysql mariadb-server httpd php

启动MariaDB数据库:

# systemctl start mariadb
# systemctl enable mariadb

运行MySQL安全设置脚本(mysql_secure_installation):

# mysql_secure_installation

设置MySQL root密码和其他安全参数。

现在创建一个名为zabbix_db的数据库和一个新用户my_zabbix:

# mysql -u root -p
MariaDB [(none)]> create database zabbix_db;

MariaDB [(none)]> grant all privileges on zabbix_db.* to my_zabbix@localhost identified by 'your_password';

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> exit

替换上面的your_password为你要设置的密码。
监控

把数据导入到zabbix_db数据库:

# cd /usr/share/doc/zabbix-server-mysql-3.0.1

监控

# gunzip create.sql.gz
# mysql -u root -p zabbix_db < create.sql

编辑Zabbix配置文件:

它的配置文件位于/etc/zabbix/zabbix_server.conf,配置数据库:

# vim /etc/zabbix/zabbix_server.conf

修改为如下参数:


DBHost=localhost DBName=zabbix_db DBUser=my_zabbix DBPassword=test1234

把test1234替换为你的my_zabbix用户密码。

监控

监控

编辑PHP配置文件:

# vim /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/Hong_Kong

配置防火墙:

# firewall-cmd --permanent --add-port=10050/tcp
# firewall-cmd --permanent --add-port=10051/tcp
# firewall-cmd --permanent --add-port=80/tcp

# firewall-cmd --reload 
# systemctl restart firewalld

如果你的系统没有安装firewalld,安装:

# yum install firewalld
# systemctl start firewalld

当然,你也可以使用iptables。

设置Selinux规则:

# setsebool -P httpd_can_connect_zabbix=1

启动各种服务程序:

# systemctl start zabbix-server
# systemctl enable zabbix-server

# systemctl start httpd
# systemctl enable httpd

使用浏览器访问Zabbix Web接口:

http://your_doman_or_IP/zabbix/

开始安装向导:

监控

检查需要的组件是否安装:

监控

配置数据库连接:

监控

配置Zabbix:

监控

Next:

监控

安装完成:

监控
点击Finish它会自动转向到登录界面;登录,默认用户名”admin”,密码”zabbix”:

监控

zabbix的主界面:

监控

安装完成之后Zabbix服务器并没有监控任何服务器;我们来添加一个服务器节点,让Zabbix服务器进行监控。

假设我想监控安装有Ubuntu 16.04的服务器,我需要在Ubuntu上安装zabbix客户端:

$ sudo apt-get install zabbix-agent

编辑zabbix-agent的配置文件,添加Zabbix服务器IP:

$ sudo vim /etc/zabbix/zabbix_agentd.conf

更改为:

Server=159.203.205.23
ServerActive=159.203.205.23
Hostname=zabbix.topspeedsnail.com

替换你Zabbix服务器的IP。

启动zabbix-agent:

$ sudo systemctl start zabbix-agent
$ sudo systemctl enable zabbix-agent

在Zabbix web接口中添加新节点:

Configuration —> Hosts –> Create Host:

监控

填写节点的信息。选择Templates:

监控

Monitoring —> Triggers,查看监控的节点。

CentOS7源码编译安装Nginx

Web服务器Nginx

LNMP是一组众所周知的Web网站服务器架构环境,即由Linux+Nginx+MySQL+PHP(MySQL有时也指 Mariadb)组合成一个高性能、轻量、稳定、扩展性强的Web网站服务器架构环境。

Nginx (“engine x”) 作为Web服务器软件,是一个轻量级、高性能的HTTP和反向代理服务器,负 载均衡服务器,及电子邮件IMAP/POP3/SMTP 服务器。Nginx性能稳定、功能丰富、运维简单、效率高 、并发能力强、处理静态文件速度快且消耗系统资源极少。

Nginx的版本

Nginx版本分为主线版和稳定版,主线版更新速度较快,从官网上看大约一个月更新1-2次,目前 最新主线版已更新到nginx-1.9.10,而官方宣布的最新稳定版则是nginx-1.8.1,and本文就以1.8.1 版为例演示其在CentOS7上的安装和配置过程。Nginx官方网站http://nginx.org/。

Nginx的依赖程序

  • 1、zlib:用于支持gzip模块
  • 2、pcre:用于支持rewrite模块
  • 3、openssl:用于支持ssl功能
  • 使用yum安装zlib、pcre、openssl软件包

    [root@www ~]# yum install zlib pcre pcre-devel openssl openssl-devel
    

    Nginx-1.8.1的安装

    step1:创建nginx用户

    创建一个nginx的运行用户

    [root@www ~]# useradd -s /sbin/nologin nginx
    [root@www ~]# id nginx
    uid=1000(nginx) gid=1001(nginx) groups=1001(nginx)
    

    step2:Nginx编译参数

    –user 指定启动程序所属用户
    –group 指定组
    –prefix 指定安装路径
    –sbin-path 设置nginx二进制文件的路径名
    –conf-path 指定配置文件路径
    –error-log-path 错误日志文件路径
    –http-log-path 指定访问日志文件路径
    –http-client-body-temp-path 设置存储HTTP客户端请求主体的临时文件路径
    –http-proxy-temp-path 设置存储HTTP代理临时文件的路径
    –http-fastcgi-temp-path 设置存储HTTP fastcgi的临时文件的路径
    –pid-path 设置nginx.pid文件路径
    –lock-path 设置nginx.lock文件路径
    –with-openssl 启用SSL
    –with-pcre 启用正则表达式
    –with-http_stub_status_module 安装可以监控nginx状态的模块
    –with-http_ssl_module 启用SSL支持
    –with-http_gzip_static_module 启用gzip压缩


    [root@www nginx-1.8.1]# ./configure --user=nginx --group=nginx --prefix=/opt/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-http_sub_module

    Nginx


    [root@www nginx-1.8.1]# make [root@www nginx-1.8.1]# make install

    make安装完成使用nginx -V 查看版本和编译参数


    [root@www nginx-1.8.1]# nginx -V nginx version: nginx/1.8.1 built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --user=nginx --group=nginx --prefix=/opt/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-http_sub_module

    查看ngin进程和端口号


    [root@www ~]# netstat -ntlp | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4415/nginx: master

    step3:控制nginx服务的命令

    1、启动:nginx
    2、停止:nginx -s stop
    3、退出:nginx -s quit
    4、重启:nginx -s reopen
    5、重新加载:nginx -s reload
    6、平滑启动:kill -HUP pid(kill -HUP cat /var/run/nginx.pid

    step4:创建nginx启动脚本


    #!/bin/bash # chkconfig: - 18 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings NGINX_SBIN="/usr/sbin/nginx" NGINX_CONF="/etc/nginx/nginx.conf" NGINX_PID="/var/run/nginx.pid" RETVAL=0 prog="Nginx" #Source networking configuration . /etc/sysconfig/network # Check networking is up [ ${NETWORKING} = "no" ] && exit 0 [ -x $NGINX_SBIN ] || exit 0 start() { echo -n $"Starting $prog: " touch /var/lock/subsys/nginx daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /var/lock/subsys/nginx /var/run/nginx.pid RETVAL=$? echo return $RETVAL } reload(){ echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } restart(){ stop start } configtest(){ $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage: $0 {start|stop|reload|restart|configtest}" RETVAL=1 esac exit $RETVAL

    设置开机启动


    [root@www ~]# chmod 755 /etc/init.d/nginx [root@www ~]# chkconfig --add nginx [root@www ~]# chkconfig nginx on [root@www ~]# service nginx stop Stopping nginx (via systemctl): [ OK ] [root@www ~]# service nginx start Starting nginx (via systemctl): [ OK ]

    设置防火墙规则,允许外部访问80端口


    [root@www ~]# firewall-cmd --permanent --add-port=80/tcp [root@www ~]# firewall-cmd --reload

    step5:测试访问

    在浏览器输入http://Your-IP/
    Nginx

    使用代理服务器解决升级WordPress慢的问题

    更新WordPress版本有两种方法,在后台点击自动升级或者手动下载新的版本替换旧的。为了方便,一般选择前者自动升级。不过由于自动升级使用的是国外的服务器downloads.wordpress.org,在国内自动升级wordpress的话会非常慢甚至超时失败。不过wordpress提供了可以设置代理了方法,本人在国外服务器架设了一台代理服务器,可以直接拿来用,由于代理服务器限制了只能代理wordpress.org域名,使用完后请注释掉代码,以免影响wordpress使用。

    解决方法

    打开wp-config.php,在底部增加如下代码:

    1. define(‘WP_PROXY_HOST’, ‘us.webres.wang’);
    2. define(‘WP_PROXY_PORT’, ‘31281’);

    保存之后登录wordpress后台,切换到更新,点击升级按钮开始更新。
    更新完成后请注释掉刚才加的代码,即在前面添加//,如:

    1. //define(‘WP_PROXY_HOST’, ‘us.webres.wang’);
    2. //define(‘WP_PROXY_PORT’, ‘31281’);

    下次需要升级时再删除注释。
    未分类