1.1 文檔目的
本文目的提高自己文檔的寫作能力及排版能力,加強上課所講的內容得以鍛鍊也方便自己以後查閱特寫此文檔。
1.2 文檔內容
Linux工作以及學習中的FAQ彙總!
1.3 磁盤分區問題彙總
1.3.1 分區完後當我們在執行partprobe通知內核分區變化時會提示以下錯誤信息?
[root@c66-moban ~]# partprobe
Warning: WARNING: the kernel failed tore-read the partition table on /dev/sda (Device or resource busy). As a result, it may not reflect all of yourchanges until after reboot.
提示所設備正在忙,其實說的是系統本身現在使用的設備也就是/dev/sda你只要在執行partprobe命令時後面加上你的告知內核的設備名字就可以了!例如我們要將/dev/sdb然後執行下面的命令即可就不會報上面的錯誤!
[root@c66-moban ~]# partprobe /dev/sdb
1.4 NFS服務問題彙總
1.4.1 客戶端掛載時端口無法映射?
報錯信息如下:此錯誤原因是服務端的防火牆服務沒有關閉
[root@NFSClient ~]# showmount -e192.168.88.115
clnt_create: RPC: Port mapper failure -Unable to receive: errno 113 (No route to host)
1.4.2 clnt_create:RPC: Program not registered(出現此問題的原因是因爲nfs服務先啓動的而RPC服務後啓動的,NFS服務是向rpcbind服務註冊的,所以rpcbind服務需要先啓動否則nfs沒地方註冊?
先啓動rpcbind服務/etc/init.d/rpcbind start(服務端)
在次啓動nfs服務/etc/init.d/nfs start
1.4.3 在執行mount -t nfs 192.168.88.115:/data /mnt這個命令時提示以下錯誤信息mount.nfs: access deniedby server whilemounting192.168.88.115:/data? mount.nfs: requested NFSversion or transport protocol is not supported??
發生此問題的原因檢查服務端/etc/exportfs目錄下的IP地址是否對
在客戶端掛載的時候有可能是因爲你寫的IP地址錯誤造成的
還有以個原因是你在客戶端掛載的時候把服務端共享的目錄名字寫錯了,(此問題的原因跟權限一點關係都沒有切記%97都是以上提的那3點原因)
1.4.4 如果卸載的時候提示:umount /mnt: device isbusy?
需要退出自動掛載目錄在進行卸載,或者是NFS Server 宕機了需要強制卸載用umount -lf /mnt
1.4.5 如果客戶端沒有安裝nfs-utils時當你掛載的時候會提示以下錯誤信息?
[root@NFSClient ~]# mount –t nfs 192.168.88.115:/data /mnt
Mount: wrong fs type,bad option, badsuperblock on 192.168.88.115:/data/
Missing codepange or helper program,orother error
(for serveralfilesystems(e.g.nfs,cifs))you might need a
/sbin/mount.<type>helper program)
In some cases useful info is found insyslog-try dmesg tial or so
解決辦法安裝nfs-utils服務不用啓動它然後解決了
[root@NFSClient ~]# yum –y installnfs-utils
1.5 SSH服務問題彙總
1.5.1 遠程連接或傳送文件慢的原因?
在服務端更改/etc/ssh/sshd_config文件中的配置內容如下:
122 UseDNS no
81 GSSAPIAuthentication no
Ssh -v [email protected]可以查看慢的細節
1.6 vi編輯器問題彙總
1.6.1 vi編輯文件的時候提示以下錯誤?
[root@Rsync-Server-B ~]# vim/etc/rsyncd.conf
E325: ATTENTION
Found a swap file by the name"/etc/.rsyncd.conf.swp"
owned by: root dated: Mon Feb 2 23:51:19 2015
file name: /etc/rsyncd.conf
原因是因爲第一次編輯/etc/rsyncd.conf配置文件時沒有正常保存退出當你在次編輯這個文件時會提示上面的錯誤:
解決辦法:
刪除/etc/目錄下生成的那個臨時文件在重新編輯/etc/rsyncd.conf文件就OK了!
[root@Rsync-Server-B ~]# rm –rf /etc/.rsyncd.conf.swp
1.7 Rsync服務問題彙總
1.7.1 客戶端只授權密碼但是沒有給密碼文件權限錯誤?
這個是授權密碼到/etc/rsync.password文件中但是沒有給密碼權限
[root@Rsync-Server-B ~]# echo"oldboy">/etc/rsync.password
[root@Rsync-Server-B ~]#rsync -avz/data/ [email protected]::oldboy --password-file=/etc/rsync.password
password file must not beother-accessible
continuing without password file
Password:
@ERROR: auth failed on module oldboy
rsync error: error startingclient-server protocol (code 5) at main.c(1503) [sender=3.0.6]
解決辦法:
給密碼文件授權
[root@Rsync-Server-B ~]# chmod 600/etc/rsync.password
1.7.2 服務端防火牆沒有關閉導致的錯誤?
[root@Rsync-Server-B ~]#rsync -avz /data/[email protected]::oldboy --password-file=/etc/rsync.password
解決辦法:
在服務端關閉防火牆
[root@Rsync-Server-A ~]#/etc/init.d/iptables stop
1.7.3 服務端的path = /oldboy/的目錄沒有創建擋在客戶端推送文件的時候報錯信息:
解決辦法:
在服務端創建oldboy目錄
[root@Rsync-Server-A ~]# mkdir /oldboy
1.7.4 服務端path = /oldboy/的目錄沒有修改屬組和屬主報錯信息如下:
解決辦法:
給/oldboy目錄修改rsync服務對應的用戶我們這裏rsync服務對應的用戶就是rsync,在服務端操作
[root@Rsync-Server-A ~]# chownrsync.rsync /oldboy/
1.7.5 服務端的Rsync服務沒有開啓報錯信息?
解決辦法:
客戶端用telnet檢查rsync的端口是否可以連接提示失敗我們可以確定是rsync服務本身的原因,在服務端開啓rsync服務即可
[root@Rsync-Client-B ~]# telnet10.0.0.128 873
Trying 10.0.0.128...
telnet: connect to address 10.0.0.128:Connection refused
[root@Rsync-Server-A ~]# rsync --daemon
1.7.6 Rsync客戶端向服務端推送文件時報如下錯誤信息:
@ERROR: chdir failed
rsync error: error startingclient-server protocol (code 5) at main.c(1503) [sender=3.0.6]
錯誤原因:模塊名字和創建目錄的名字不一樣所以導致客戶端推送時報以下錯誤信息錯誤的名字
正確的名字
1.7.7 客戶端向服務端推送文件時提示如下錯誤?
@ERROR: auth failed on module gong
rsync error: error starting client-serverprotocol (code 5) at main.c(1503) [sender=3.0.6]
解決辦法:
原因是因爲在rsync.password文件中同時存在兩個密碼導致無法知道到底是哪個,刪除沒用的密碼即可!
[root@Rsync-Client-B data]# cat/etc/rsync.password
oldboy
jing
1.7.8 在客戶端向服務端推送文件時提示如下錯誤?
sending incremental file list
ERROR: module is read only
rsync error: syntax or usage error (code1) at main.c(866) [receiver=3.0.6]
rsync: read error: Connection reset bypeer (104)
rsync error: error in rsync protocoldata stream (code 12) at io.c(759) [sender=3.0.6]
解決辦法:
在服務端的/etc/rsyncd.conf目錄中添加read only = false,原因是在服務端的這個配置文件裏面沒有給可寫權限導致的。
1.8 計劃任務crontab保存時如下錯誤信息
"/tmp/crontab.xg7Add" 5L, 127Cwritten
crontab: installing new crontab
"/tmp/crontab.xg7Add":4: badhour
errors in crontab file, can't install.
Do you want to retry the same edit?
原因是因爲在寫計劃任務時時間格式不對導致的
#############
00 99 00 999999
1.9 Nginx服務問題彙總
1.9.1 啓動Nginx服務時如下錯誤
[root@Rsync-Server nginx-1.6.2]#/application/nginx/sbin/nginx
/application/nginx/sbin/nginx: errorwhile loading shared libraries: libpcre.so.1: cannot open shared object file:No such file or directory
解決辦法查找libpcre.so.1所在路徑將路徑添加到/etc/ld.so.conf中
[root@Rsync-Server nginx-1.6.2]# find /-name "libpcre.so.1"
/usr/local/lib/libpcre.so.1
[root@Nginx-Server nginx-1.6.2]# cat/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib/
[root@Rsync-Server nginx-1.6.2]#ldconfig
1.9.2 啓動Nginx服務時如下錯誤
[root@Nginx-Server nginx-1.6.2]#/application/nginx/sbin/nginx
nginx: [emerg]getpwnam("nginx") failed
沒有創建用戶導致的報錯,創建完nginx用戶即可解決該問題
[root@Nginx-Server nginx-1.6.2]# useraddnginx -s /sbin/nologin -M
1.9.3 安裝pcre時執行make時提示如下錯誤
解決辦法:
安裝gcc
[root@Nginx-Server ~]# yum -y installgcc-c++
1.9.4 啓動Nginx服務時提示
[root@Nginx-Server nginx-1.6.2]# /application/nginx/sbin/nginx-s reload
nginx: [error] open() "/application/nginx-1.6.2/logs/nginx.pid"failed (2: No such file or directory)
原因是Nginx服務本身沒有啓動解決辦法如下:
[root@Nginx-Server conf]#/application/nginx/sbin/nginx
[[email protected]]#/application/nginx/sbin/nginx -s reload
1.9.5 Nginx訪問網站提示如下錯誤
這個錯誤是因爲自己配置失誤造成的在這裏我特意記錄下導致錯誤的原因
[root@c66-moban ~]# cd/application/nginx/conf/
[root@c66-moban conf]# vim nginx.conf
以下這個是配置錯誤的選項因爲在html後面沒有添加blog.etiantian.org網站的根目錄所以導致錯誤
正確配置如下
[root@c66-moban ~]# cd/application/nginx/html/blog
[root@c66-moban blog]# ls
index.html
[root@c66-moban ~]# cd/application/nginx/conf/
[root@c66-moban conf]# vim nginx.conf
檢查語法
[root@c66-moban conf]#/application/nginx/sbin/nginx –t
重新啓動Nginx服務
[root@c66-moban conf]#/application/nginx/sbin/nginx -s reload
驗證結果
1.9.6 安裝Discuz論壇時提示502錯誤?
故障原因:
php-fpm沒有啓動導致此問題.
解決辦法:
[root@Nginx_Web02 ~]#/application/php/sbin/php-fpm
1.10 虛擬機問題
1.10.1 虛擬機開機啓動後提示如下錯誤
解決辦法:
筆記本是聯想T420開機按F1進入
BIOS然後按照下邊操作
F10保存退出重新啓動即可!
1.10.2 在VMware中打開已經存在的虛擬機沒有反映
故障原因:
用services.msc查看發現VMware Workstation Server這個服務沒有啓動造成的
解決辦法:
一個很幼稚的問題但是從來沒有想過這的原因,啓動VMware Workstation Server服務即可!
1.10.3 克隆的虛擬機克隆完後啓動網卡時提示device eth0 does not seemto be present delaying initialization?
故障原因:
因爲克隆的機器MAC地址導致的
解決辦法:
之前的解決辦法是將rm -rf /etc/udev/rules.d/70-persistent-net.rules文件刪除即可,今次刪除此文件後重新啓動主機開機後再次重啓網卡還是報錯,後來發現這個文件根本沒有刪除,登陸到70-persistent-net.rules文件中查看發現該配置文件中的MAC地址與eth0配置文件中的MAC地址不一致.
沒修改之前的eth0網卡MAC地址
修改之後的eth0網卡的MAC地址,將MAC地址修改與70-persistent-net.rules文件中的eth0網卡中的MAC地址一樣後刪除70-persistent-net.rules,重新啓動虛擬機即可解決!
1.11 Mysql數據庫服務問題彙總
1.11.1 初始化數據庫在tmp目錄下無權創建
解決辦法:
1.11.2 初始化數據庫mysql無法解析
解決辦法:修改主機名的解析和uname -n一樣
1.11.3 啓動mysql數據庫報如下錯誤信息:
[root@Mysql support-files]#/etc/init.d/mysqld start
Starting MySQL ERROR! Couldn't findMySQL manager (@bindir@/mysqlmanager) or server (@bindir@/mysqld_safe)
解決辦法:
[root@Mysql support-files]# vim/etc/init.d/mysqld
46 basedir=/application/mysql/
47 datadir=/application/mysql/data
1.11.4 直接輸入mysql進入數據庫提示找不到命令
[root@Mysql support-files]# mysql
-bash: mysql: command not found
第一種解決辦法輸入mysql數據庫的全路徑
[root@Mysql support-files]#/application/mysql/bin/mysql
第二種解決辦法將mysql路徑加入到PATH路徑下面
[root@Mysql support-files]# vim/etc/profile
PATH="/application/mysql/bin/:$PATH"
alias grep='grep --color=auto'
讓配置文件立即生效
[root@Mysql support-files]# ./etc/profile
[root@Mysql support-files]# source/etc/profile
1.11.5 啓動Mysql數據庫時報錯如下
[root@zibbix ~]# /etc/init.d/mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file(/var/lib/mysql/zibbix.pid).
解決辦法:
[root@zibbix ~]# cp /application/mysql/support-files/my-small.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
[root@zibbix ~]# /etc/init.d/mysqld start Starting MySQL.. SUCCES
1.11.6 安裝好mysql數據庫後無法進入數據庫
[root@Mysql ~]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server throughsocket '/tmp/mysql.sock' (2)
解決辦法:
1、Mysql數據庫服務沒有啓動
2、cp /application/mysql/support-files/my-small.cnf /etc/my.cnf
1.11.7 創建數據庫無法創建
[root@Web ~]# mysql –uroot –p12156
在數據庫裏邊創建數據庫的時候報錯
mysql> create database hdwiki;
ERROR 1006 (HY000): Can't create database 'hdwiki' (errno: 13)
解決辦法:
數據庫目錄的屬主和屬組的權限是nginx不是mysql服務的用戶所以會報以上的錯誤信息,將數據庫的目錄屬主改爲mysql服務用戶就OK了!
[root@Web ~]# ls -dl/application/mysql/data/
drwxr-xr-x. 8 nginx nginx 4096 Feb 1200:38 /application/mysql/data/
[root@Web ~]# chown -R mysql.mysql/application/mysql/data/
1.11.8 安裝完mysql執行mysql進入數據時候報錯
ERROR 2002 (HY000): Can't connect to local MySQLserver through socket '/application/mysql-5.5.32/tmp/mysql.sock' (2)
錯誤原因:
由於初始化數據庫沒有初始化好.
解決辦法:
刪除mysql/data下文件
[root@Mysql ~]# rm –rf /application/mysql/data
停止mysql數據庫服務
[root@Mysql ~]# killall mysqld
重新初始化數據庫
[root@Mysql ~]# /application/mysql/scripts/mysql_install_db--basedir=/application/mysql --datadir=/application/mysql/data --user=mysql
啓動mysql即可登錄
[root@Mysql ~]# /etc/init.d/mysqld start
1.11.9 編譯安裝Mysql數據庫5.5.32執行cmake報錯如下
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readlineNaNake:83 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package nameis libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readlineNaNake:118 (FIND_CURSES)
cmake/readlineNaNake:214 (MYSQL_USE_BUNDLED_READLINE)
CMakeLists.txt:269 (MYSQL_CHECK_READLINE)
-- Configuring incomplete, errors occurred!
故障原因:
缺少curses導致的
解決辦法:
[root@Mysql ~]# yum installncurses-devel –y
網上別人遇到同樣的問題安裝了ncurses還是沒有解決,查找到ncurses庫目錄,然後用-D參數定義宏,指定頭文件和庫的所在目錄.(本人安裝了ncurses就OK了只是在網上看到了順便把此錯誤記錄下)
cmake . -DCURSES_LIBRARY=/usr/lib64/-DCURSES_INCLUDE_PATH=/usr/include/
http://www.wudiweb.com/tech/693914
1.12 PHP服務問題彙總
1.12.1編譯安裝php報錯信息如下
問題一:
configure: error: Cannot find OpenSSL's<evp.h>
解決辦法:
[root@LAMP php-5.3.27]# yum -y install openssl-devel–y
問題二:
解決辦法:
[root@LAMP php-5.3.27]# yum -y installlibxslt-devel
1.12.2 編譯安裝php報錯信息如下
make: ***[ext/fileinfo/libmagic/apprentice.lo] Error 1
解決辦法:
在編譯安裝php執行./configure加上選項:--disable-fileinfo原因是虛擬機內存給的小造成的我們可以把虛擬機的內存給大點即可!
1.12.3 編譯安裝php執行make報錯如下
[root@Mysql php-5.3.27]# make
/home/oldboy/tools/php-5.3.27/sapi/cli/php:error while loading shared libraries: libmysqlclient.so.18: cannot open sharedobject file: No such file or directory
make: *** [ext/phar/phar.php] Error 127
解決辦法:
[root@Mysql php-5.3.27]# find / -name"libmysqlclient.so.18"
/application/mysql-5.5.32/lib/libmysqlclient.so.18
[root@Mysql php-5.3.27]# echo"/application/mysql-5.5.32/lib/" >>/etc/ld.so.conf
[root@Mysql php-5.3.27]# ldconfig
1.12.4 編譯安裝php執行make報錯如下
[root@Mysql php-5.3.27]# make
Generating phar.phar
chmod: cannot access `ext/phar/phar.phar': No such file or directory
make: [ext/phar/phar.phar] Error 1 (ignored)
Build complete.
Don't forget to run 'make test'
解決辦法:
[root@Mysql php-5.3.27]# mkdir -pext/phar/phar.phar
1.12.5 編譯安裝PHP報錯如下
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] Error 1
缺少libtool-ltdl庫
解決辦法:
yum install -y libtool-ltdl-devel
1.12.6 訪問php頁面提示下載
原因是在nginx的主配置文件網站下面沒有添加fastcgi所以它沒辦法接下php文件.
解決辦法:
[root@LAMP ]# /application/nginx/sbin/nginx–t
[root@LAMP ]# /application/nginx/sbin/nginx–s reload
1.12.7 訪問php頁面提示提示找不到
解決辦法:
[root@LAMP ]# /application/nginx/sbin/nginx–t
[root@LAMP ]# /application/nginx/sbin/nginx–s reload
1.13 phpMyadmin問題彙總
1.13.1 登錄phpmyadmin窗口時提示時提示 #2002無法登錄 MySQL服務器,原因是我的數據庫不再本機裏邊所以配置文件裏邊默認還是寫的localhost,所以無法連接數據庫!
解決辦法:
[root@LAMP ~]# cd/data0/www/phpmyadmin/libraries/
[root@LAMP libraries]# vimconfig.default.php
125 $cfg['Servers'][$i]['host'] ='localhost';
改爲
125 $cfg['Servers'][$i]['host'] ='172.16.1.4';
1.13.2 登錄phpmyadmin窗口時提示phpMyAdmin錯誤缺少mysqli 擴展,請檢查 PHP配置錯誤。
解決辦法:
[root@LAMP ~]# cd/data0/www/phpmyadmin/libraries/
[root@LAMP libraries]# vimconfig.default.php
195 $cfg['Servers'][$i]['extension'] ='mysqli';
改爲
195 $cfg['Servers'][$i]['extension'] ='mysql';
1.13.3 在登錄phpmyadmin時提示錯誤,原因是因爲認證方法設置的是cookie所以需要設置數據庫密碼,否則登錄會提示錯誤。
解決辦法:
245 $cfg['Servers'][$i]['auth_type'] ='cookie'; 如果這裏設置的是cookie
102 $cfg['blowfish_secret'] = '12156'; 這裏必須寫一個數據庫密碼否則報錯
1.13.4 在等陸phpmyadmin窗口時提示1045錯誤無法登錄
原因是數據庫密碼錯誤導致的.
1.13.5 登錄phpmyadmin後提示
缺少 mcrypt 擴展,請檢查 PHP 配置。
1.14 期中架構問題彙總
1.14.1 用keepalived軟件做高可用時,主備兩端同時都產生了同一個VIP(也就是一個虛擬IP)如何解決?
(1)、導致裂腦發生的原因
1、高可用服務器之間心跳鏈路故障,導致無法相互檢查心跳
2、高可用服務器上開啓了防火牆,阻擋了心跳檢測
3、高可用服務器上網卡地址等信息配置不正常,導致發送心跳失敗
4、其他服務配置不當等原因,如心跳方式不同,心跳廣播衝突,軟件BUG等
(2)、防止裂腦一些方案
1、加冗餘線路
2、檢測到裂腦時,強行關閉心跳檢測(遠程關閉主節點,控制電源的電路fence)
3、做好腦裂的監控報警
4、報警後,備節點在接管時設置比較長的時間去接管,給運維人員足夠的時間去處理(人爲處理)
5、啓動磁盤鎖,正在服務的一方鎖住磁盤,裂腦發生時,讓對方完全搶不走"共享磁盤資源"
磁盤鎖存在的問題:
使用鎖磁盤會有死鎖的問題,如果佔用共享磁盤的一方不主動"解鎖"另一方就永遠得不到共享磁盤,假如服務器節點突然死機或崩潰,就不可能執行解鎖命令,備節點也就無法接管資源和服務了,有人在HA中設計了智能鎖,正在提供服務的一方只在發現心跳全部斷開時纔會啓用磁盤鎖,平時就不上鎖
在lamp上面做好了Apache,mysql是做到make install,php的測試頁是成功的,在另一臺服務器上做了mysql分離,能登陸在測試mysql連接時顯示mysql_error,測試頁的連接主機改成了分離mysql的IP但是在WEA發表東西,WEB上也是有的?
1、數據庫上對應用戶的授權,是否允許此WEB連接
grant select,insert,update,delete,alter,create onbbs.* to bbs@'10.0.0.%' identified by '12156';
2、從此WEB服務器的命令遠程連接數據庫測試看是否可以連接,mysql -ubbs -p12156 -h 10.0.0.8
3、web支持PHP解析,有沒有php連接mysql的庫
Mysql user表裏的用戶刪不掉問題
主機名大寫或特殊符號,一般drop user ‘用戶’@‘主機名’無法刪除的。
解決辦法:
delete from mysql.user where user='' andhost='MySQL';
flush privileges;
drop database mysql後如何恢復?
1、有備份直接備份恢復
2、重新初始化數據庫
3、如果正式環境,去一個新的服務器初始化數據庫(版本相同)然後把數據庫倒出來,恢復到正式庫,然後手工重新授權web連接的賬號
1.15 安裝Zabbix監控問題彙總
1.15.1 安裝zabbix報錯
yum安裝的php解決辦法:
[root@zabbix etc]# yum install -yphp-bcmath
編譯安裝的報錯解決辦法:
[root@zibbix ~]# find / -name bcmath
[root@zabbix etc]# cd /application/tools/php-5.3.27/ext/bcmath
[root@zibbix ~]# find / -name phpize
/application/php5.3.27/bin/phpize
[root@zabbix bcmath]# /application/php5.3.27/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@zabbix bcmath]#
[root@zabbix bcmath]# ./configure--with-php-config=/application/php/bin/php-config
make && make install
1.15.2 安裝zabbix報錯PHP gettext offPHPgettext extension missing (PHP configuration parameter --with-gettext).Translations will not be available?
PHP中的getText的用法(getText是一系列的工具和庫函數,幫助程序員和翻譯人員開發多語言軟件的), 從而實現PHP的i18n. 原來當時裝php時沒有裝gettest的擴展,沒辦法,重新補上.
一、PHP編譯時沒有加--with-gettext選項
解決方法:
此次安裝是動態安裝php的gettext擴展模塊在php的源文件中,進入ext/gettext
cd ext/gettext
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install
二、系統缺少gettext-devel工具庫,或者已經編譯安裝了gettext但是在編譯php時沒找到
vi /usr/local/php/etc/php.ini
找到extensions選項,添加如下項:
extension = "gettext.so"這裏記得一定要加上擴展庫的路徑哦
Installing shared extensions:/application/php-5.6.5/lib/php/extensions/no-debug-non-zts-20131226/
如果沒有報錯,則make,再make install ,然後它告訴你一個目錄
你把該目錄下的bcmath.so拷貝到你php.ini中的extension_dir指向的目錄中,如果被註釋了把註釋取消指定一個目錄修改php.ini,在最後添加一句extension=bcmath.so。
1.15.3 Zabbix 如何從英文改成中文
[root@zibbix ~]# cd/application/nginx-1.6.2/html/zabbix/include/
[root@zibbix include]# vimlocales.inc.php
1.15.4 裝完Zabbix後發現字符亂碼
解決辦法:
在windows系統找到一個字體放到桌面上傳到Zabbix服務器的目錄
[root@zibbix ~]# cd/application/nginx/html/zabbix/fonts/
我上傳的字體名字是simkai.ttf改爲DejaVuSans.ttf就OK了!
[root@zibbix fonts]# mv simkai.ttfDejaVuSans.ttf
1.15.5 安裝zabbix報如下錯誤
如果出現提示文件zabbix.conf.php無法創建,則是zabbix目錄無法寫入到/application/nginx-1.6.2/html/zabbix/conf/zabbix.conf.php原因是這個目錄的權限不是nginx.nginx
解決方法一:
點擊downloadconfiguration file將下載的zabbix.conf.php文件上傳到/application/nginx-1.6.2/html/zabbix/conf/zabbix.conf.php
解決方法二:
chown -R nginx.nginx/application/nginx-1.6.2/html/zabbix/conf/zabbix.conf.php
1.16 安裝ImageMagicg問題彙總
1.16.1 安裝ImageMagicg時執行make時報錯信息如下
錯誤原因:
虛擬機內存給小了
See<http://bugzilla.redhat.com/bugzilla> for instructions.
make[1]: ***[wand/wand_libMagickWand_la-convert.lo] Error 1
make[1]: Leaving directory`/home/oldboy/tools/ImageMagick-6.5.1-2'
make: *** [all] Error 2
解決辦法:
虛擬機內存給的400M太小了,將內存設置成512問題得以解決
1.17 Mysql數據庫多實例問題彙總
1.17.1 用自定義腳本停止mysql數據庫服務提示以下錯誤
[root@Mysql ~]# /data/3307/mysql stop
Stoping MySQL...
/application/mysql/bin/mysqladmin: connect toserver at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
錯誤原因:
因爲在/data/3307/mysql這個腳本中的數據庫用戶密碼和自己設置mysql數據庫用戶的密碼不相符造成的,3307數據庫用戶的密碼應該爲oldboy3307,但是我這裏忘記改密碼還是oldboy所以導致停止數據庫失敗。
解決辦法:
[root@Mysql ~]# cat /data/3307/mysql
#!/bin/sh
port=3307
mysql_user="root"
mysql_pwd="oldboy" 修改爲oldboy3307即可
1.18 Mysql主從同步問題彙總
1.18.1 從庫上面執行show slave status時提示1007錯誤
mysql> show slave status;
故障原因:
是從庫裏邊有一個butongbu數據庫存在
解決辦法一:
mysql> stop slave;
mysql> set globalsql_slave_skip_counter =1; 跳過1個指針
mysql> start slave;
解決辦法二:
[root@MySQL ~]# vim /data/3306/my.cnf
57 elave-skip-errors = 1032,1062,1007
[root@MySQL ~]# /data/3306/mysql start
1.18.2 從庫上面執行show slave status時提示1045錯誤
故障原因
從客戶端在向chage master to裏邊寫主服務端授權的rep用戶密碼時候輸入錯誤了.
解決辦法:
重新在從服務端的數據庫中執行
1.18.3 Mysql連接慢解決辦法
多實例的配置文件位置(根據自己的路徑來配置)
[root@MySQL ~]# cat /data/3306/my.cnf
[mysqld]
skip-name-resolve
單實例的配置文件路徑
[root@MySQL ~]# cat /etc/my.cnf
[mysqld]
skip-name-resolve
1.18.4 做雙向主從的時候show slave status\G提示1593錯誤
故障原因:
雙向主從在同一臺服務器上面用的是多實例數據庫做的實驗一臺mysql數據庫的端口是3306,另一臺是3307,在3306數據庫上設置chage master to的時候忘記把MASTER_PORT=3307,端口添加了所以導致了1593錯誤.
解決辦法:
登錄3306數據庫重新添加chage master to信息如下:
1.18.5 雙主從複製的時候發現兩端的數據同步
故障原因
是其中的一個數據庫的slave沒有開啓
解決方法
Start slave 將其開啓
1.18.6 做雙向主從的時候show slave status\G提示1263錯誤
故障原因
MASTER_LOG_FILE= ‘ mysql-bin.000001 ’ mysql前面和000001後面多了兩個空格
解決方法
MASTER_LOG_FILE= ‘ mysql-bin.000001 ’去掉mysql前面和000001空格即可!
同樣的錯誤1236Gotfatal error 1236 from master when reading data from binary log: 'Binary log isnot open'
故障原因:
主庫上log-bin沒有開啓
解決辦法:
[root@Mysql_01~]# egrep "log-bin"/etc/my.cnf
#log-bin=mysql-bin
將log-bin這項打開在從庫上從新show slave status\G查看OK了!
1.18.7 主庫show master status沒有結果
故障原因
主庫的binlog功能沒有開啓或生效
解決方法
[root@MySQL ~]# egrep"server-id|log-bin" /data/3306/my.cnf
log-bin = /data/3306/mysql-bin
server-id = 1
正常結果
1.18.8 備份mysql數據庫時提示mysqldump: Got error:1556: You can't use locks with log tables. when using LOCK TABLES
[root@MySQL ~]# mysqldump -uroot -poldboy3306 -S/data/3306/mysql.sock -A -B >3306backup.sql
mysqldump: Got error: 1556: You can'tuse locks with log tables. when using LOCK TABLES
[root@MySQL ~]# which mysqldump
/usr/bin/mysqldump
故障原因
Mysql的安裝路徑爲/application/mysql,查看mysqldump的路徑應該是/application/mysql/bin纔對但現在的路徑是rpm包安裝的mysql命令路徑.
在/etc/profile文件中,mysql的命令所在路徑,放到了/etc/profile的結尾,因此當執行mysqldump命令時,優先找到了rmp包自帶的/usr/bin/mysqldump命令從而導致了1556錯誤.
解決辦法
我們把mysql的命令路徑放到PATH變量的最前面
[root@MySQL ~]# tail -1 /etc/profile
export PATH=/application/mysql/bin/:$PATH
[root@MySQL ~]# which mysqldump
/application/mysql/bin/mysqldump
同樣錯誤的解決方法網址如下:
http://blog.chinaunix.net/uid-21757535-id-86425.html
1.18.9 MySQL無法啓動mysqld_safe mysqld frompid file /data/3306/mysqld.pid ended
故障原因:
mysql啓動腳本權限問題,這個啓動腳本是我們自己寫的屬主默認是root.
解決方法:
1、先把mysql入手
[root@MySQL ~]# cd /data/3306
[root@MySQL 3306]# cat my.cnf
以下是mysql日誌存放路徑
[mysqld_safe]
log-error=/data/3306/mysql_oldboy3306.err
pid-file=/data/3306/mysqld.pid
清空之前的日誌文件
[root@MySQL 3306]#>mysql_oldboy3306.err
重新啓動mysql服務查看當前的報錯日誌信息
[root@leo 3306]# cat mysql_oldboy3306.err
150321 17:36:26 mysqld_safe Starting mysqld daemon with databasesfrom /data/3306/data
150321 17:36:26 [Note] Plugin 'FEDERATED' is disabled.
150321 17:36:26 InnoDB: The InnoDB memory heap is disabled
150321 17:36:26 InnoDB: Mutexes and rw_locks use GCC atomic
150321 17:36:26 InnoDB: Completed initialization of buffer pool
InnoDB: The error means mysqld does not have the access rights t
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
150321 17:36:26 mysqld_safe mysqld from pid file/data/3306/mysqld.pid ended
2、然後將mysql這個腳本的屬主改爲mysql
[root@MySQL 3306]# chown -R mysql*
1.18.10 主從複製時候報錯如下?
mysql> change master to master_host='192.168.20.112', master_user='rep',master_password='123456', master_log_file='mysql-bin.000010',master_log_pos=107;
ERROR 1201 (HY000): Could not initialize master info structure; moreerror messages can be found in the MySQL error log
故障原因:
出現這個問題的原因是之前曾做過主從複製.
解決辦法:
mysql> stop slave;
mysql> reset slave;
mysql> change master to master_host='192.168.20.112', master_user='rep',master_password='123456',master_log_file='mysql-bin.000010',master_log_pos=107;
1.19 Memcached服務問題彙總
1.19.1 Memcached服務啓動時報錯
[root@Memcached memcached-1.4.13]# memcached -m 16m -p 11211 -d -uroot -c 8192
memcached: error while loading shared libraries: libevent-1.4.so.2:cannot open shared object file: No such file or directory
解決辦法:
[root@C66-MoBan memcached-1.4.13]#find / -name libevent-1.4.so.2
/usr/local/lib/libevent-1.4.so.2
[root@C66-MoBan memcached-1.4.13]# echo "/usr/local/lib">> /etc/ld.so.conf
[root@C66-MoBan memcached-1.4.13]#ldconfig
1.20 Centos系統問題彙總
1.20.1 Centos系統啓動提示Kernel panic - notsyncing: Attempted to kill init
故障原因:
剛裝好的系統什麼都沒有配置,好像跟Selinux有關係,具體什麼原因不太清楚
解決辦法:
系統開機在此界面按e鍵
做完以上操作系統可以正常啓動了,但是上面的設置只是臨時關閉了selinux服務,要想避免下次啓動再次出現相同的情況我們需要在進入系統後修改配置文件讓它永久生效.
方法一永久生效:
[root@C66-MoBan ~]# cat/etc/sysconfig/selinux
SELINUX=disabled
方法二臨時生效:
[root@C66-MoBan ~]# setenforce 0
查看selinux狀態
[root@C66-MoBan ~]# getenforce
Permissive
[root@C66-MoBan ~]# sestatus
1.20.2 當從 root 用戶切到普通用戶時,執行 ifconfig 會提示提示:c58會遇到c64沒有此問題 [oldboy@student ~]$ifconfig-bash: ifconfig: command not found?
1、命令敲錯
2、命令沒有在路徑裏面,不在環境變量裏面臨時解決辦法
[root@oldboy ~]# export PATH
原因:這是因爲普通用戶oldboy系統環境變量PATH路徑問題導致的。ifconfig命令是超級用戶的管理命令,因此Centos5默認情況下,其命令路徑/sbin不在當前普通用戶的全局環境變量路徑裏面。
方法一:執行絕對路徑
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@oldboy ~]# which ifconfig
/sbin/ifconfig
[chuji001@oldboy ~]$ /sbin/ifconfig eth0
eth0 Linkencap:Ethernet HWaddr00:0C:29:41:FC:0F
inetaddr:10.0.0.120 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe41:fc0f/64Scope:Link
UP BROADCAST RUNNINGMULTICAST MTU:1500 Metric:1
RX packets:5148 errors:0dropped:0 overruns:0 frame:0
TX packets:1508 errors:0dropped:0 overruns:0 carrier:0
collisions:0txqueuelen:1000
RX bytes:452215 (441.6KiB) TX bytes:177559 (173.3 KiB)
方法二:把ifconfig的命令路徑添加到PATH變量裏
[zhangsan@localhost ~]$ export PATH=$PATH:$HOME/bin:/sbin
方法三:永久解決辦法
[zhangsan@oldboy ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr
/bin:/root/bin
[zhangsan@oldboy ~]$export PATH
紅色加粗的爲我們修改的內容
這個PATH變量內容就是root下的PATH路徑,很多root有權執行的系統命令在/sbin,/usr/sbin下,從安全性考慮,在普通用戶下默認的PATH環境變量中,默認情況並未加入/sbin,/usr/sbin的路徑配置。
使修改生效
[yinyonghong@localhost ~]$ source.bash_profile
[yinyonghong@localhost ~]$ echo$PATH 查看現在的命令變量路徑
1.20.3 當切換一個普通用戶時提示
[root@c66-moban ~]# su - oldboy
-bash-4.1$
-bash-4.1$
故障原因:
oldboy用戶的環境變量不存在導致的此問題.
解決辦法:
將skel目錄下的內容重新複製一份到oldboy用戶的家目錄即可,但是需要注意的是最好不要在root下去拷這樣屬主和屬組是root用戶到時候還得修改屬主和屬組。
[root@Rsync~]# cd /etc/skel/
[root@Rsyncskel]# ls -al
total20
drwxr-xr-x. 2 root root 4096 Mar 28 23:04 .
drwxr-xr-x.82 root root 4096 Apr 29 18:44 ..
-rw-r--r--. 1 root root 18 Oct 16 2014 .bash_logout
-rw-r--r--. 1 root root 176 Oct 16 2014 .bash_profile
-rw-r--r--. 1 root root 124 Oct 16 2014 .bashrc
[root@Rsyncskel]# cp -a .bash* /home/oldboy/
當你拷貝完後查看oldboy用戶目錄下的內容屬主和屬組是root需要通過chown來修改
[root@Rsyncskel]# chown -R oldboy.oldboy /home/oldboy/
[root@Rsync~]# su - oldboy
[oldboy@Rsync~]$
1.21 LVS環境部署
1.21.1 安裝ipvsadm執行make報錯如下
故障原因:
ipvsadm1.26適用於kernel2.6.28及之後的內核版本,不適合本文的Centos6.6 64如果符合系統環境後,同樣需要安裝依懶包yum install libnl* popt*
[root@LVS ipvsadm-1.26]# make
libipvs.c:1072: error: too many arguments to function 鈥榠pvs_nl_send_message鈥? make[1]: *** [libipvs.o] Error 1
make[1]: Leaving directory `/home/oldboy/tools/ipvsadm-1.26/libipvs'
make: *** [libs] Error 2
解決辦法:
[[email protected]]# yum -y install libnl* popt*
[root@LVS ipvsadm-1.26]# make
1.21.2 果需要LVS和Keepalived結合使用時需要做一個link
[root@LVS tools]# ln -s /usr/src/kernels/2.6.32-504.el6.x86_64//usr/src/linux
如果沒有/usr/src/kernels/2.6.32-504.el6.x86_64/
解決辦法:
[root@LVS ~]# yum -y install dernel-devel
1.21.3 安裝keepalived時執行./configure報錯如下
報錯內容:
configure: error: Popt libraries isrequired
解決辦法:
[root@LVS keepalived-1.1.19]# yum -yinstall popt*
1.21.4 Keepalived服務安裝完後一直無法獲取VIP地址
配置完keeplived服務時用ip addr查看VIP時發現一直無法獲取IP地址,自己的粗心造成的,這不算什麼錯誤但是我想告訴大家的是如果當你目錄名字寫錯的話會導致keepalived服務無法得到VIP地址.
目錄名字本應該是keepalived,因爲自己的粗心將keepalived敲成keeplived造成無法獲取VIP地址
[root@LB-01 keepalived-1.2.16]# mkdir /etc/keeplived
[root@LVS ~]# /bin/cp/usr/local/etc/keepalived/keepalived.conf /etc/keeplived/
解決辦法:
重新創建目錄或者直接將keeplived改名爲keepalived
[[email protected]]# mkdir /etc/keepalived
1.21.5 LVS配置完成後發現在LVS本機上可以訪問Apache(Real Server) WEB服務,但是在瀏覽器上訪問的時候去無法訪問
故障原因:
是因爲沒有在Apache(Real Server)WEB服務的LO上面配置VIP地址所以導致網站無法訪問.
當我們客戶端去訪問網站的時候首先需要經過LVS,然後LVS會將客戶的請求拋給Real Server服務器,在LVS服務器向後拋的時候他會把原IP和目的IP以及MAC地址進行封裝後拋給Real Server,當Real Server接到包後一解包發現找到IP地址不是它自己所以會將該包丟棄然後造成網站無法訪問.
解決辦法:
特別提示:在Apache(RealServer)服務器上配置VIP地址,而不是在LVS服務器上配置.
[root@Apache1 ~]# ifconfiglo:0 10.0.0.100/32 up
1.21.6 在Nginx服務的主配置文件中Server標籤的時候當你寫一個不是它本身的IP地址後,當你啓動Nginx服務時會報錯
[root@LVS1 ~]# cat/application/nginx/conf/nginx.conf
server {
listen 10.0.0.130:80;
server_name www.etiantian.org;
location / {
root html;
index index.html index.htm;
proxy_pass http://web_pools;
}
}
該服務器現在的IP地址是10.0.0.16,10.0.0.130根本不存在當我們啓動Nginx服務時報錯.
[root@LVS1 ~]#/application/nginx/sbin/nginx
nginx: [emerg] bind() to 10.0.0.130:80failed (99: Cannot assign requested address)
解決辦法:
[root@LVS1~]# vim /etc/sysctl.conf 文件末尾添加下面一行內容
net.ipv4.ip_nonlocal_bind = 1
[root@LVS1 ~]# sysctl -p
1.12.7 安裝Keepalived時執行./configure報如下錯誤
checking for openssl/ssl.h... no
configure: error:
!!! OpenSSL is not properly installed onyour system. !!!
!!! Can not include OpenSSL headersfiles. !!!
1.21.8 Keepalived服務導致裂腦問題
實驗環境:
LVS_DR_01和LVS_DR_02兩臺機器, LVS_DR_01主機爲Keepalived主, LVS_DR_02主機爲從.主從上面的都有VIP地址.
故障原因:(主從Keepalived上面的id不相同)
Keepalived主上面的配置
Keepalived從上面的配置
解決辦法:
修改主和從的Keepalived的id必須相同否則會導致裂腦.