分類
Linux

Linux硬盤滿

如果重啟後無法進入桌面環境,很可能是硬盤滿了,此時按Ctrl+Alt+F2進入命令行模式。

#查看磁盤空間剩餘情況
df -hl
#如果確實是磁盤可用空間不足
#則查看是那個文件夾里有大文件,一般都是/tmp
cd /tmp
#以文件夾大小排序,顯示最大的15個
du -hsx * | sort -rh | head -15

釋放出200M空間就差不多可以進桌面環境了。

在頻繁使用selenium調用火狐的時候,/tmp中會出現打量類似tmpzujczqpd的文件夾,可以使用下面代碼進行刪除。

import glob,shutil
def rmFirefoxTmpFile():
    usage = shutil.disk_usage('/tmp')
    #如果磁盤可用空間小於1G則執行刪除
    if usage.free<1024*1024*1024*1:
        #火狐產生的文件夾大概長這樣
        files = glob.glob('/tmp/tmp????????')
    
        for f in files:
            #刪除最後修改時間10個小時以前的文件夾
            if time.time() - os.path.getmtime(f)>10*60*60 :
                shutil.rmtree(f,True)
            

Fedora即使硬盤滿了,也不會無法進入桌面環境,但是桌面和軟件會出現異樣。首先是一些桌面控件比如網速計恢復了默認設置,其次會發現火狐的書籤都不見了,當然也不能在文件管理器中新建文件。一旦出現上述情況,不要去修改這些出了問題的東西,而是應該去釋放硬盤空間並重啟,這樣書籤和控件配置多半都能找回來。但如果修改了,就有很大可能丟失的風險。當然了,如果有定期備份那是最安全的了。

本文更新於 2017/09/21。

分類
Linux

Fedora使用藍牙鍵盤

湊了個雙十一的熱鬧,買了套Logitech的藍牙鍵盤鼠標。藍牙相對於普通無線鍵盤鼠標的好處是不再需要接收器,方便的和手機平板等配對。我買的這個K480鍵盤可以方便的在三個設備間分享使用鍵盤,感覺還挺方便的。

正常情況下,如果Fedora沒有藍牙管理員,可以通過的dnf install blueman來安裝,安裝完畢後藍牙管理員會出現在偏好設定中,根據圖形界面的指示配對鍵盤即可。

我遇到的非正常情況下呢,就點了配對沒有反應,應該給我配對PIN碼在鍵盤上輸入的,但是沒有。於是改用命令行方式:

#進入藍牙控制,會自動列出當前設備,鍵盤的mac地址此時已經顯示出來
bluetoothctl
power on
agent on
default-agent
scan on
#我的提示不能搜索,不過沒關係,直接用第一步得到的mac地址進行配對
pair A1:B2:C3:D4:E5:F6
#此時命令行應該會告訴你配對的PIN碼,在藍牙鍵盤上輸入後按回車即可配對成功
#但是配對成功後還沒結束哦
connect A1:B2:C3:D4:E5:F6
trust A1:B2:C3:D4:E5:F6
#然後藍牙鍵盤就可以正常工作了,重啟也會自動連上的。

題外話:我記得以前看到bluetooth在繁體中文的寫作「藍芽」,現在似乎都改為統一的藍牙了,我覺得還是藍牙好。

本文更新於 2016/12/22。

分類
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