分類
Linux

Monitorix查看Centos系統負載

Monitorix安裝

Monitorix is a free, open source, lightweight system monitoring tool designed to monitor as many services and system resources as possible. 本文是在Centos上安裝Monitorix。

#先安裝依賴
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL
#3.8.1是20160810最新版
rpm -ivh http://www.monitorix.org/monitorix-3.8.1-1.noarch.rpm
#添加到開機啟動
chkconfig --level 35 monitorix on
#啟動Monitorix
service monitorix start

這時,只要訪問在本地訪問http://localhost:8080/monitorix/Monitorix即可查看系統狀態了。

Monitorix配置

Centos中Monitorix的配置文件位於/etc/monitorix/monitorix.conf,下面的設置都是在這個文件中修改。

給Monitorix設置密碼很簡單,參考這裡http://www.monitorix.org/documentation.html#4。其中提到的用戶名密碼默認保存在/var/lib/monitorix/htpasswd裡面。關於密碼加密,我是用的這個https://github.com/mikaku/Monitorix/raw/master/docs/htpasswd.pl,下載後./htpasswd.pl執行,輸入密碼即可得到加密後的密碼,把加密後的密碼放到用戶名:後面即可。

關於Monitorix配置其實還有很多可以貼,等下次安裝的時候再詳細記錄下,普通看官方文檔就好。通常檢測網卡要設置一下,一般都不是eth0。

如果nginx的代理是https,那麼需要在配置文件httpd_builtin中添加https_url = y,這樣圖片才能也走https。

nginx代理配置

在nginx增加如下配置
……
location /monitorix {
#    auth_basic "Restricted";
#    auth_basic_user_file /etc/monitorix/monitorix-users;

    include proxy_params;
    proxy_pass		http://127.0.0.1:8080/monitorix;
    allow		127.0.0.0/8;


    # since 3.5.0 version
    location ~ ^/monitorix/(.+\.png)$ {
        alias /var/lib/monitorix/www/$1;
    }
}
……

其中的proxy_params,nginx似乎沒有自帶的文件,我参考了https://www.howtoforge.com/tutorial/how-to-install-nginx-as-reverse-proxy-for-apache-on-ubuntu-16-04/,其中這麼寫:

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;

然後service nginx restart重啟nginx就可以了。

CentOS6.4安裝perl-HTTP-Server-Simple

CentOS6.4執行上面依賴包安裝後提示"No package perl-HTTP-Server-Simple available.",可參考perl-HTTP-Server-Simple-0.42-1.el6.noarch.rpm進行安裝。

本文更新於 2018/03/09。

分類
Linux

CentOS6.6體驗_HTTPS

獲取免費SSL證書

接上篇:CentOS6.6體驗_LNMP。下面將在nginx中配置Let's Encrypt頒發的免費SSL證書。安裝方式參考Certbot,文章寫的很清楚,這個方法我沒有試。

另一種安裝方式是Using Free SSL/TLS Certificates from Let’s Encrypt with NGINX,我用這個裝的,挺方便的。其中提到的文件/etc/letsencrypt/configs/my-domain.conf可以放在/etc/letsencrypt/my-domain.conf。這裡把證書生成後的nginx站點配置抄一下:

server {
    listen 443 ssl default_server;
    server_name my-domain;

    #ssl on;#有的網站配置中有寫這一句,但是這篇文章中並沒有,我也沒加,沒發現有什麼問題
    ssl_certificate /etc/letsencrypt/live/my-domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-domain/privkey.pem;

    ...
}

檢查nginx站點配置並重啟nginx

nginx -t && nginx -s reload

把http重定向到https

下面兩種方法據說第一種比第二種快,我也不知道為什麼,希望大神解答。

server {
    listen 80;
    server_name domain.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name domain.com;
    ssl on;
    # other
}
server {
    listen 80;
    server_name domain.com;
    rewrite ^(.*) https://$server_name$1 permanent;
}
server {
    listen 443 ssl;
    server_name domain.com;
    ssl on;
    # other
}

自動更新Let's Encrypt的免費SSL證書(未完成)

按照參考鏈接Using Free SSL/TLS Certificates from Let’s Encrypt with NGINX設置好定時任務後發現renew‑letsencrypt.sh並沒有執行成功。因爲腳本中第一行需要選擇1還是2,自動運行時並沒有給出。所以我還是自己手動執行一下那個腳本,也不費事。

nginx配置HSTS

HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式.

server {
    listen 443 ssl;
 
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
 
    # This 'location' block inherits the STS header
    location / {
        root /usr/share/nginx/html;
    }
 
    # Because this 'location' block contains another 'add_header' directive,
    # we must redeclare the STS header
    location /servlet {
        add_header X-Served-By "My Servlet Handler";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        proxy_pass http://localhost:8080;
    }
}

本文更新於 2016/10/28。

分類
Linux

CentOS6.6體驗_LNMP

常用命令

#檢查更新
yum check-update
#執行更新
yum update
#安裝軟件,如nano
yum install nano
#查看CentOS版本號
cat /etc/redhat-release
#查看CentOS位數
getconf LONG_BIT
#安裝編譯組件
yum install gcc gcc-c++ make openssl-devel
或者
sudo yum groupinstall 'Development Tools'

首先還是用LNMP練手

參考http://www.krizna.com/centos/install-lemp-on-centos-6/

nginx

nginx官網下載源碼自己編譯安裝也是極好的,可以參考http://www.runoob.com/linux/nginx-install-setup.html

#用rpm添加nginx官方repository
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#檢查更新
yum check-update
#安裝nginx
yum install nginx
#啓動nginx
service nginx start
#添加到開機自動啓動
chkconfig nginx on

nginx默認目錄:
Default document root directory: /usr/share/nginx/html
Default configuration file: /etc/nginx/nginx.conf
Default Virtual host config directory: /etc/nginx/conf.d/
Default Virtual host config file: /etc/nginx/conf.d/default.conf

mysql

yum install mysql mysql-server
service mysqld start
chkconfig mysqld on
#初始化mysql
/usr/bin/mysql_secure_installation

額,默認好像是5.1的,如果想安裝新版本可以從mysql官方源安裝。

rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
#默認5.7,如果要5.6,執行下面兩條命令
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql56-community
#查看現在庫里的mysql版本
yum repolist enabled | grep mysql
#安裝mysql
yum install mysql-community-server
service mysqld start
mysql_secure_installation
chkconfig mysqld on

新建用戶及數據庫可參考mysql tricks

安裝默認php5.3

#這裏默認是5.3.3,更高版本請跳過這一節往下看
yum install php-fpm php-mysql
#把php-fpm配置文件中到用戶從apache改爲nginx
nano /etc/php-fpm.d/www.conf
    #修改如下兩行
    user = nginx
    group = nginx
service php-fpm start
chkconfig php-fpm on

添加一個Virtual Host測試下,新建文件/etc/nginx/conf.d/phptest.conf,寫入下面內容,並且重啓nginx使之生效 sudo service nginx reload:

server {
    listen       8080;                          # listen port
    server_name  localhost;                     # Server name
    location / {
        root   /usr/share/nginx/html;           # Document root
        index index.php  index.html index.htm;
    }
    location ~ \.php$ {
        root           /usr/share/nginx/html;   # Document root
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

新建/usr/share/nginx/html/info.php測試下安裝是否成功:

<?php
phpinfo();
?>

升級或安裝php5.5

#rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
nano /etc/yum.repos.d/remi.repo
#修改其中[remi]和[remi-php55]兩部分中的enabled值爲1。
service httpd stop
service mysqld stop
#如果已經安裝了php要升級則執行
yum update -y
#如果是首次安裝則執行下面兩行
sudo yum install mysql-server
sudo yum install php php-mysql
service httpd start
service mysqld start
#更新下mysql
mysql_upgrade -u root -p
#php到配置文件夾/etc/php-fpm.d下會有php.conf.rpmnew,將其命名爲php.conf
#如果使用nginx,要修改user和group值爲nginx

phpmyadmin

yum install phpmyadmin

新建一個文件/etc/nginx/conf.d/phpMyAdmin.conf,內容爲

server {
    listen 8080; 
    location ~ \.php$ {
        root           /usr/share/phpMyAdmin;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location / {
        root           /usr/share/phpMyAdmin;
        index          index.php;
    }
}

還有兩點需要注意:

#修改php session到權限爲777
chmod 777 /var/lib/php/session
#mbstring missing
#去掉/etc/php.ini中mbstring前的;
#403
https://mos.meituan.com/library/17/how-to-install-phpmyadmin-on-centos6/


配置網卡相關:

#nano etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
NM_CONTROLLED=no
#如果要配置靜態ip
BOOTPROTO=static
    #並增加
IPADDR=192.168.1.42
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=4.4.4.4
#重啓網絡服務 /etc/init.d/network restart
#修改hostname
#nano /etc/sysconfig/network
HOSTNAME=www.fortytwo.com
    #並在host中增加條目
#nano /etc/hosts
192.168.1.42 www.fortytwo.com

本文更新於 2016/12/27。

分類
Linux

sar-Linux性能監測

我的CentOS沒有自帶,所以要通過yum install -y sysstat進行安裝。安裝後如果今天是14號,則執行一下sar -o 14,來創建今天的數據文件。

sar -n DEV |egrep 'em1|IFACE' 查看em1網卡網絡流量記錄(eth1)
sar -f /var/log/sa/sa03 -n DEV |egrep 'em1|IFACE' 查看本月3日em1網卡網絡流量記錄(eth1)
sar -u 查看cpu使用記錄
sar -r 查看內存使用記錄
sar -dp | egrep 'DEV|VolGroup-lv_root|VolGroup-lv_home' 查看指定硬盤的使用記錄(sdb)
sar -q 查看平均負載記錄
sar -W 查看頁面交換文件使用記錄
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

df -h 查看磁盤用量
w 查看當前用戶和最近負載

分類
Linux

VirtualBox中Ubuntu掛載新磁盤[轉]

在virtualbox中装好Ubuntu后,发现硬盘空间太小,怎样才能增加硬盘容量?那就是再建一个硬盘:

1. 添加新硬盘

设置 -> Storage -> SATA控制器->右击,选择“添加虚拟硬盘”

然后,根据需求创建合适的硬盘

2. 重启虚拟机

查看现有系统的磁盘空间

sudo fdisk -l

可看到新加的虚拟硬盘,一般名为:Disk /dev/sdb

3. 给新加的硬盘分区

fdisk /dev/sdb

键入m,可看到帮助信息

command (m for help):m

增加新分区

command (m for help):n

选择基本分区,输入:p

建一个分区

Partition number(1-4):1

回车

First cylinder (1-15908,default 1):Enter

写入并退出

command (m for help):w

4. 格式化磁盘分区

用ext4格式对/dev/sdb1进入格式化

sudo mkfs.ext4 /dev/sdb1

5. 挂载分区

创建新的挂载点

sudo mkdir /work

将新磁盘分区挂载到/work目录下

sudo mount -t ext4 /dev/sdb1 /work

查看挂载

df -h

可以看到新加的硬盘:/dev/sdb1

6. 开机自动挂载

修改文件

sudo nano /etc/fstab

在最后一行加入:

/dev/sdb1 /work ext4 errors=remount-ro 0 1

完成!

文章轉自本文出自 “凉冰” 博客,原文地址http://liangbing8612.blog.51cto.com/2633208/652333

分類
Linux

在ubuntu14上配置denyhost

昨天ss忽然變慢,一看好多條非法登陸。CentOS下的記錄文件是/var/log/secure。

#root登陸失敗次數
##ubuntu
sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
##centos
sudo grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
#無效用戶登陸失敗次數
sudo grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more

denyhosts可以防止上面這種攻擊。但是我在ubuntu14的軟件源裏沒找到(12裏有)。於是去搜索,找到http://denyhosts.sourceforge.net/這個主頁,按照說明安裝下來,竟然失敗。後來安裝了denyhost(注意:沒有s了,這是前一個的fork),很順利。下面記一下安裝過程:

#下載denyhost
cd /tmp/ && wget http://downloads.sourceforge.net/project/denyhost/denyhost-2.8/denyhosts-2.8.tar.gz
#解壓
tar xzf denyhosts*.tar.gz
cd DenyHosts*
#安裝
sudo python setup.py install
#添加到開機啓動
sudo cp /usr/local/bin/daemon-control-dist /etc/init.d/denyhosts
#修改配置文件
#將文件中"DENYHOSTS_BIN"的值爲"/usr/local/bin/denyhosts.py"
sudo nano /etc/init.d/denyhosts
#修改攔截配置文件
sudo nano /etc/denyhosts.conf
#這個文件內部註釋很清晰,按需求修改就好,不改也沒關係。
#啓動服務
sudo /etc/init.d/denyhosts start

上面命令參考自How To Install DenyHosts On Ubuntu 14.04 Server。當然,修改下ssh的默認的配置也是很好的。

sudo nano /etc/ssh/sshd_config
#Port 12345 #改爲一個5位端口号,不要超過60000
#PermitRootLogin no #禁止root用戶登陸
#重啓ssh服務
sudo /etc/init.d/ssh restart
#在/etc/sysconfig/iptables中添加下面一行,打開12345端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 12345 -j ACCEPT
#重啟iptables
service iptables restart

禁用密碼登陸ssh(使用證書)也是很好的選擇。參考:Centos6.4下使用Denyhosts

用iptables防止ssh暴力破解

#添加如下iptables規則即可防止普通ssh暴力破解
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource 
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --name DEFAULT --rsource -j DROP

時間來到 2022 年,denyhost 已經不再更新,但是我們可以使用它的繼任者——fail2ban。

#安裝 fail2ban
yum -y install fail2ban
#增加配置文件
nano /etc/fail2ban/jail.d/jail.local
#文件內容如下:
[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=ssh,port=22,protocol=tcp]
logpath  = /var/log/secure
bantime  = 600
maxretry = 3
#啓動服務
systemctl restart fail2ban
#添加到開機啓動
systemctl enable fail2ban
#查看服務狀態
fail2ban-client status sshd

本文更新於 2022/08/23。

分類
Linux 软件

nano文本編輯器

nano是一個方便易用的命令行文本編輯器,相對於vi等文本編輯器勝在學習成本低廉而且linux平臺基本自帶(甚至android的busybox都有)。用nano常用的命令就是Ctrl+O寫入文件,Ctrl+X關閉文件,Ctrl+W查找文字。其他功能也很容易找到幫助,很適合不經常用linux的用戶(vi不常用的話,命令真的忘的好快)。

nano的複製粘貼也是很方便的。常用的就是CRTL+6用來選擇,ALT+6用來複製,CTRL+U用來粘貼。複製當前行的話直接ALT+6即可。

如果想把nano設置為默認的文本編輯器,比如使用crontab -e時,可以在~/.bashrc最後添加

export EDITOR=nano
export VISUAL=nano

如果要在多個文件間複製粘貼,可以用nano -F file1以多文件模式打開。打開之後,複製完按CTRL+R開啟另一個文件,就可以粘貼進去了。文件間的切換用ALT+,和ALT+.。

本文更新於 2017/03/22。