分类目录归档:Linux

linux 测网速的方法

很多时候我们需要测试Linux服务器的上行和下行速度。

1 下载脚本  wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py

2 赋予脚本执行权限  chmod +x speedtest-cli

3 执行脚本  ./speedtest-cli

使用虚拟机 VirtualBox 管理工具vagrant

在项目开发中需要使用lamp、lnmp等各种环境各类型软件,安装维护等等各种不方便,使用vagrant和virtualbox来管理虚拟机可以在开发环境、测试环境或个人计算机都可以方便的安装不同的虚拟机。同时可灵活配置ip,端口转发,共享目录等,还可以打包配置好的系统分发使用。

vagrant 下载地址:https://www.vagrantup.com/downloads.html

virtualbox下载地址:https://www.virtualbox.org/wiki/Downloads

可以根据自己的系统下载合适的版本,可以在vagrant官网查看版本兼容,都是外网,需要耐心等待下载会比较慢。box系统文件也需要在vagrant官网下载或其他途径,请自行百度。准备完成即可安装两款软件。安装完成【需要重启改变环境变量】后按照以下配置:

vagrant 常用的命令:

vagrant box list     查看box列表

vagrant box  add   box名称  .box系统文件 # 添加box

vagrant box remove box名称    #移除box

vagrant init box名称    #初始化一个虚拟机

vagrant  up                    #在虚拟机目录开启虚拟机

vagrant ssh                  #登录到虚拟机  windows下使用xshell

vagrant halt               #关闭虚拟机

vagrant reload         #重新启动虚拟机

vagrant destroy  虚拟机名称         #销毁虚拟机

vagrant suspend       #挂起虚拟机

更多命令 : https://www.vagrantup.com/docs/boxes.html

添加虚拟机的步骤如下:

1. 添加.box为后缀的系统文件到vagrant 的安装目录,   输入 vagrant add box 系统名称 (系统的名称) .box系统文件的位置

使用vagrant box list 查看系统中添加成功的box,添加成功后就可以初始化虚拟机。

2. 新建虚拟机目录安装 ,然后切换到虚拟机安装目录,输入命令 vagrant init 系统名称 (初始化虚拟机)

3. 输入命令vagrant up 启动虚拟机,启动虚拟机时先手动启动VirtualBox,才能启动虚拟机。

4.配置虚拟机配置文件:在初始化虚拟机后可以在虚拟机安装目录下看到生成Vagrantfile文件,可以编辑改文件后重启虚拟机生效。

5.配置文件配置项说明:

config.vm.box = “ubuntu1604”  #box名称 系统初始化名称 

config.vm.hostname = ‘ubuntu’   #虚拟机内部主机名称

config.vm.network “forwarded_port”, guest:80,host:8080 #端口转发 、本地端口转发至虚拟机

config.vm.network “private_network”,  ip:”192.168.1.1″  #设置静态的私有ip,主机可访问

config.vm.network “public_network”,  ip:”192.168.1.10″ #设置静态的公有ip,局域网可访问

config.vm.synced_folder "../project", "/src/website"  #共享目录
#设置了同步目录需要修改apache或nginx配置【关闭后实时同步】 
#nginx  配置 :sendfile off;
#apache 配置 : EnableSendfile off; 默认是关闭的。不需要更改

config.vm.provider “virtualbox” do |vb|

vb.name = ‘ubuntu1604’   #虚拟机名称

vb.cpus = 2    #虚拟机cpu数量

vb.memory = ‘1024’   #虚拟机内存M

#vb.gui = true    #此配置可以在出错时在界面查看错误位置

end

6. 打包分发配置好的虚拟机

打包命令:  vagrant package  [–output ubuntu.box【打包box文件】] [–base 设置虚拟机名称]

分发可以通过文件拷贝.box文件即可 ,安装初始化如上所述。

 

使用Haproxy实现反向代理

反向理软件很多,原理都是大同小异,可以使用Apache、Nginx、Haproxy等等。

Haproxy是一款功能强大、灵活好用反向代理软件,提供了高可用、负载均衡、后端服务器代理的功能,它在7层负载均衡方面的功能很强大(支持cookie track, header rewrite等等),支持双机热备,支持虚拟主机,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入;同时还提供直观的监控页面,可以清晰实时的监控服务集群的运行状况。

当用户并发请求达到一定的数量时,使用Haproxy进行负载均衡有明显的优势;而且Haproxy还可以根据用户的cookies,根据调度算法,将用户一直定向分配到以前访问过的后端服务器上;为了提高网站访问速度,一般在Haproxy的后端都要配置缓存服务器,可以是静态页面内容的缓存,也可以是动态网页内容的缓存,生产环境中有必要添加Mysql的缓存。
用户访问网站域名时,DNS解析到IP和主机头发送到外网接口Haproxy服务器上,Haproxy将请求直接转发(tcp)至后方服务器,或者先分析用户请求,然后以客户端身份向后端服务器发出同样的请求(http),获得后方服务器返回的内容后重新封装,响应给客户端,此时Haproxy如同代理商处理请求和响应请求。

配置文件安装目录:/etc/haproxy/haproxy.conf
Haproxy的配置文件分为四个部分:
全局配置:
global:  全局配置段
代理配置:
default: 默认配置—–>所有在backend、frontend、linsten中相同内容可以在此定义;
frontend:前段配置—–>定义前端套接字,接受客户端请求;
backend: 后端配置—–>定义后端分配规则,与后端服务器交互;
listen:  绑定配置—–>直接将指定的客户端与后端特定服务器绑定到一起;
通常没有特别需求,不需要手动调试配置文件里面的选项,大部分默认值就可以满足我们的需求;而且官方文档介绍说很多选项都建议使用默认。

简单配置如下:

global #全局配置
#运行配置
log /dev/log local0 #记录日志 记录位置 等级
log /dev/log local1 notice
chroot /var/lib/haproxy #修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot()操作,可以提升haproxy的安全级别
#不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限

stats socket /run/haproxy/admin.sock mode 660 level admin #用户访问统计数据的接口
stats timeout 30s

user haproxy #指定身份运行 同uid
group haproxy #指定组运行 同gid
daemon #让haproxy以守护进程的方式工作于后台

#性能配置
maxconn 65535 #设定每个haproxy进程所接受的最大并发连接数

#ssl证书配置
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private

# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
#代理配置
defaults #用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一                      #个“defaults”所重新设定
log global
mode http
option httplog #启用记录HTTP请求、会话状态和计时器的功能
option dontlognull
option httpclose
option forwardfor #允许在发往服务器的请求首部中插入“X-Forwarded-For”首部
timeout connect 5000 #定义haproxy将客户端请求转发至后端服务器所等待的超时时长

timeout client 50000 #客户端非活动状态的超时时长
timeout server 50000 #客户端与服务器端建立连接后,等待服务器端的超时时长
#errorfile 在用户请求不存在的页面时,返回一个页面文件给客户端而非由haproxy生成      #的错误代码;可用于所有段中 http状态码 响应文件位置
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

#监听设置
listen admin_status
bind 10.2.5.110:8888 #绑定监听地址和端口
mode http #运行协议
stats refresh 5s #统计界面的刷新周期
stats uri /admin?stats # 自定义统计页面的URL
stats realm number #设置密码提示
stats auth root:123456!zxc #进入统计页面的账号密码
stats auth admin:12345678
stats admin if TRUE #启用统计报告页面的管理级别功能
listen site_status
bind 10.2.5.110:18000 #绑定监听地址和端口
mode http
monitor-uri /site_status #进入查看运行情况

frontend http_80_in # frontend 用于定义一系列监听的套接字,这些套接字可接受客户端#请求并与之建立连接
bind 116.204.64.61:80 #绑定的公网ip和端口 域名A记录指向ip
mode http
option forwardfor #允许在发往服务器的请求首部中插入“X-Forwarded-For”首部

#ACL用于实现基于请求报文的首部、响应报文的内容或其它的环境状态信息来做出转发决#策、简单的说就是根据主机头匹配响应数据
######ACL Ctrl###########
acl s1 hdr(host) -i www.jinfeijie.com #acl定义 这句配置的意思就是查看报文中的首部不区 #分大小写是否满足后面的字符串value

use_backend svr_mcc_web if s1 #如果有匹配的acl,则转发给backend处理,否则跳转到default_backend
default_backend svr_mcc_web #未匹配到acl 时使用的后端

#backend 配置
backend svr_mcc_web
mode http
cookie SERVERID # 允许向cookie中插入SERVERID,服务器的SERVERID在后端使用#cookie关键字定义
#option httpchk get /work.html #开启对后端服务器的健康检查,通过检查work.html文件#来判断服务器的健康状况
server web_mcc 10.2.5.68:80 cookie 1 check inter 3000 rise 3 fall 3 #定义后端服务器地址#和端口和服务器的cookieid,并对服务器进行检查间隔为3000毫秒,连续3次成功认为是  #有效的,连续3次失败则认为检查失败,服务器宕机

 

 

 

Linux Ubuntu 安装配置 Nginx

  1. 使用sudo apt-get  install  nginx 命令安装Nginx,
  2. 安装 fastcgi 公共网关接口【进程池】: 使用sudo apt-get install  php5-cgi  php5-fpm  命令安装;
  3. nginx 常用命令
    1.   pkill -9 nginx #杀进程,不建议使用
    2. 获取nginx进程号[使用ps命令查看进程或查看/var/log/nginx/nginx.pid文件]    kill -USR2  cat /var/log/nginx/nginx.pid   详情:http://nginx.org/en/docs/control.html
    3. 在nginx安装目录使用nginx -t 测试配置文件语法是否正确
    4. 在nginx安装目录使用nginx -s reload 加载最新配置文件
    5. 在nginx安装目录使用nginx -s stop 立即停止
    6. 在nginx安装目录使用nginx -s quit 优雅的停止  [会在响应完当前请求后停止]
    7. 在nginx安装目录使用nginx -s reopen  重新打开日志,日志备份后,需要执行此命令,重新打开文件,否则会在备份文件继续执行此操作
  4. 修改nginx 配置 在/etc/nginx/sites-avaitnglable/default文件 :

server {    //默认主机段
listen 80 default_server;         //默认端口为80
listen [::]:80 default_server ipv6only=on; //如果开启了ip6则监听ip6的80端口

root /usr/share/nginx/html;   //网站目录路径
index index.html index.htm;    //默认加载的文件名称
server_name localhost;        //服务器名称

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;  //如果文件不存在
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}

location ~ \.php$ {  //如果文件是php文件
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; #cgi监听的端口
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_index index.php;
}

}

4.nginx.conf文件主要是全局配置段

worker_processes 1; #工作进程使用1个 一般与服务器配置相关,cpu数量*核心数

事件

events{

worker_connections  1024;  #单个进程最大的连接数,与网卡配置对应

}

虚拟主机段在 conf.d 中配置,文件必须是*.conf结尾文件

server

{

listen 80;

server_name www.wenjunting.com;

root  /var/www;  #程序目录

index  index.php index.html;  #默认入口文件

 

location / {
if  ( -f  $request_filename )
{
break;   //请求的文件存在直接跳出
}
if  ( !-e  $request_filename )
{
rewrite ^/(.*)$ /index.php/$1 last;  //文件不存在,重写在index.php并把字符串作为请求参数
break;
}
}

location ~\.php$ {

fastcgi_pass 127.0.0.1:9000;  #cgi监听的端口

fastcgi_index index.php

fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;

include  fastcgi_params;

try_files $uri = 404;

}

}

5. php cgi 设置端口监听

在 /etc/php5/fpm/pool.d/www.conf 文件中查找 listen = /var/run/php5-fpm.sock;

默认为socket监听,修改为端口监听:

listen = 127.0.0.1:9000

6.重启php5-fpm/nginx;

sudo /etc/init.d/php5-fpm restart

sudo /etc/init.d/nginx restart

 

ubuntu 阿里云更新源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
sudo vim /etc/apt/sources.list #修改
sudo apt-get update #更新列表

 

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe mult