Linux學習筆記11
Linux學習筆記11
Linux學習筆記11 linux系統日常管理 wireshark工具 Linux系統的任務計劃 RHELCentOS 7x的幾點新改變 CURL常用命令 LAMP環境搭建 安裝mysql 安裝Apache 安裝MD5驗證檔案 Apache安裝擴充模組 - mod_status 安裝php 擷取php PHP擴充模組安裝 - memcache 常用的技巧 LNMP環境搭建 安裝nginx 啟動出現錯誤Job for nginxservice failed because the control 訪問一直出現502錯誤 常用的MySQL操作 MySQL備份 MySQL恢複 NFS服務配置 CentOS 7 安裝配置 NFS 系統啟動完成之後運行指令碼 MySQL調優 MySQL調整幾個關鍵的buffer和cache和其他參數調整
wireshark工具
安裝: yum install -y wireshark
使用命令:
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
Linux系統的任務計劃
crontab
PS:可以用vim /etc/crontab查看編輯配置資訊。
選項:
>
-u :指定某個使用者,不加-u選項則為目前使用者
-e :制定計劃任務;
-l :列出計劃任務;
-r :刪除計劃任務。
例:制定計劃任務
crontab -e開啟設定檔
在彈出的輸入框中輸入56 18 6 4 3 touch c.txt
PS:該句的意思是:在4月6號(星期三)的18點56分建立一個c.txt檔案,可以用*代替時間欄位,代表任意一個,比如第一個欄位為*,則代表任意(每)一分鐘。
PS:* * * * * user-name command從左至右,依次為:分,時,日,月,周,使用者,命令列。使用者是可以省略的,省略的話,代表目前使用者。
PS:crontab -e 實際上是開啟了 /var/spool/cron/username (如果是root則開啟的是/var/spool/cron/root)這個檔案。使用的是vim編輯器,所以要儲存的話則在命令模式下輸入:wq即可。但是,千萬不要直接去編輯那個檔案,因為可能會出錯,所以一定要使用 crontab -e 來編輯。查看已經設定的任務計劃使用 crontab -l 命令,刪除計劃任務用crontab -r,也可以用crontab -e -u 使用者名稱來編輯指定使用者的計劃任務。當然查看和刪除也能指定使用者的。
設定好了所有的計劃任務後需要查看一下crond服務是否啟動: service crond status,如果是關閉狀態,則需要啟動:service crond start。
案例:
問題:
每天淩晨1點20分清除/var/log/slow.log這個檔案
每周日3點執行 “/bin/sh /usr/local/sbin/backup.sh”
每月14號4點10分執行 “/bin/sh /usr/local/sbin/backup_month.sh”
每隔8小時執行 “ntpdate time.windows.com”
每天的1點,12點,18點執行 “/bin/sh /usr/local/sbin/test.sh”
每天的9點到18點執行 “/bin/sh /usr/local/sbin/test2.sh”
答案:
20 1 * * * echo "" > /var/log/slow.log
0 3 * * 0 /bin/sh /usr/local/sbin/backup.sh
10 4 14 * * /bin/sh /usr/local/sbin/backup_month.sh
0 */8 * * * nepdate time.windows.com
0 1,12,18 * * * /bin/sh /usr/local/sbin/test.sh
0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh
安裝mysql
wget http://cdn.mysql.com/archives/mysql-5.1/mysql-5.1.30-linux-x86_64-icc-glibc23.tar.gz
Linux下安裝mysql時報錯libstdc++.so.5: cannot open shared object file: No such file or directory
使用yum install -y compat-libstdc++-33安裝支援。
安裝Apache
安裝MD5驗證檔案
yum install -y isomd5sum
Apache安裝擴充模組 - mod_status
/usr/local/apache2/bin/apachectl -l 有mod_so.c
進入模組目錄:
cd /usr/local/src/httpd-2.2.24/modules/generators/
安裝模組:
/usr/local/apache2/bin/apxs -i -a -c -n mod_status mod_status.c
vim /usr/local/apache2/conf/httpd.conf
安裝php
擷取php
進入目錄cd /usr/local/src
下載檔案wget http://cn2.php.net/distributions/php-5.5.34.tar.gz
PHP擴充模組安裝 - memcache
wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz
tar zxvf memcache-2.2.3.tgz
cd memcache-2.2.3
yum install -y autoconf
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
vim /usr/local/php/etc/php.ini
PS:這個模組安裝,在php7中會提示致命錯誤:ext/standard/php_smart_str.h:沒有那個檔案或目錄,這應該是版本相容性問題,如果要安裝建議使用老版本的PHP。
常用的技巧
查看apache編譯參數 cat /usr/local/apache2/build/config.nice
查看apache載入的模組 /usr/local/apache2/bin/apachectl -M
測試apache設定檔是否正確 /usr/local/apache2/bin/apachectl -t
更改設定檔後,重新載入/usr/local/apache2/bin/apachectl graceful
查看mysql編譯參數 cat /usr/local/mysql/bin/mysqlbug|grep configure
查看php編譯參數 /usr/local/php/bin/php -i |head
查看php載入模組 /usr/local/php/bin/php -m
查看php.ini在哪裡 /usr/local/php/bin/php -i |grep 'Configuration File'
查看extension_dir路徑 /usr/local/php/bin/php -i |grep 'extension_dir'
安裝nginx
啟動出現錯誤Job for nginx.service failed because the control
原因是Apache和nginx監聽同一個連接埠有衝突。可以選擇停掉Apache或者是更改nginx監聽連接埠。
[root@switch nginx-1.4.4]# /usr/local/apache2/bin/apachectl stop
[root@switch nginx-1.4.4]# netstat -lnp |grep httpd
[root@switch nginx-1.4.4]# /etc/init.d/nginx start
Starting nginx (via systemctl): [ 確定 ]
[root@switch nginx-1.4.4]#
PS:這裡提供的是第一種方式。
訪問一直出現502錯誤
PS:這個問題,找了許久沒解決,以後再說。
PS:後面尋找錯誤記錄檔vim /usr/local/nginx/logs/nginx_error.log找到如下錯誤
2016/04/08 19:27:18 [crit] 887#0: *1 connect() to unix:/tmp/php-fcgi.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /2.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-fcgi.sock:", host: "localhost"
核心也就connect() to unix:/tmp/php-fcgi.sock failed (13: Permission denied)這段。
然後尋找發現是/tmp/php-fcgi.sock這個檔案許可權有問題,附上修改記錄:
[root@localhost Desktop]# curl localhost/2.php
502 Bad Gateway
nginx/1.4.4
[root@localhost Desktop]# ls -lh /tmp/php-fcgi.sock
srw-rw---- 1 root root 0 4月 8 19:26 /tmp/php-fcgi.sock
[root@localhost Desktop]# chmod 777 /tmp/php-fcgi.sock
[root@localhost Desktop]# ls -lh /tmp/php-fcgi.sock
srwxrwxrwx 1 root root 0 4月 8 19:26 /tmp/php-fcgi.sock
[root@localhost Desktop]# curl localhost/2.php
ok[root@localhost Desktop]#
MySQL備份
mysqldump -u root -p'密碼' -h '主機地址' -P'連接埠號碼' --default-character=字元集 資料庫名 > /tmp/mysql.sql
PS:遠程備份需要-h``-P選項,可以指定預設字元集。
MySQL恢複
mysql -u root -p'密碼' --default-character=字元集 資料庫名
NFS服務配置
http://www.apelearn.com/study_v2/chapter20.html#nfs
CentOS 7 安裝配置 NFS
http://www.linuxidc.com/Linux/2015-05/117378.htm
系統啟動完成之後運行指令碼
vim /etc/rc.local
PS:可以將一些需要隨開機就啟動並執行命令添加到這個檔案中。
MySQL調優
架構層:做從庫,實現讀寫分離
系統層次:增加記憶體;給磁碟做raid0或者raid5以增加磁碟的讀寫速度;可以重新掛載磁碟,並加上noatime參數,這樣可以減少磁碟的i/o;
MySQL本身調優: (1) 如果未配置主從同步,可以把log-bin功能關閉,減少磁碟i/o (2) 在my.cnf中加上skip-name-resolve,這樣可以避免由於解析主機名稱延遲造成mysql執行慢 (3) 調整幾個關鍵的buffer和cache。調整的依據,主要根據資料庫的狀態來調試。
應用程式層次:查看慢查詢日誌,根據慢查詢日誌最佳化程式中的SQL語句,比如增加索引
MySQL調整幾個關鍵的buffer和cache和其他參數調整
內容: 1) key_buffer_size 首先可以根據系統的記憶體大小設定它,大概的一個參考值:1G以下記憶體設定128M;2G/256M; 4G/384M;8G/1024M;16G/2048M.這個值可以通過檢查狀態值Key_read_requests和 Key_reads,可以知道key_buffer_size設定是否合理。比例key_reads / key_read_requests應該儘可能的低,至少是1:100,1:1000更好(上述狀態值可以使用SHOW STATUS LIKE ‘key_read%’獲得)。注意:該參數值設定的過大反而會是伺服器整體效率降低! 2) table_open_cache 開啟一個表的時候,會臨時把表裡面的資料放到這部分記憶體中,一般設定成1024就夠了,它的大小我們可以通過這樣的方法來衡量: 如果你發現 open_tables等於table_cache,並且opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用SHOW STATUS LIKE ‘Open%tables’獲得)。注意,不能盲目地把table_cache設定成很大的值。如果設定得太高,可能會造成檔案描述符不足,從而造成效能不穩定或者串連失敗。 3) sort_buffer_size 查詢排序時所能使用的緩衝區大小,該參數對應的分配記憶體是每串連獨佔!如果有100個串連,那麼實際分配的總共排序緩衝區大小為100 × 4 = 400MB。所以,對於記憶體在4GB左右的伺服器推薦設定為4-8M。 4) read_buffer_size 順序讀取查詢操作所能使用的緩衝區大小。和sort_buffer_size一樣,該參數對應的分配記憶體也是每串連獨享! 5) join_buffer_size 聯集查詢操作所能使用的緩衝區大小,和sort_buffer_size一樣,該參數對應的分配記憶體也是每串連獨享! 6) myisam_sort_buffer_size 這個緩衝區主要用於修複表過程中排序索引使用的記憶體或者是建立索引時排序索引用到的記憶體大小,一般4G記憶體給64M即可。 7) query_cache_size MySQL查詢操作緩衝區的大小,通過以下做法調整:SHOW STATUS LIKE ‘Qcache%’如果Qcache_lowmem_prunes該參數記錄有多少條查詢因為記憶體不足而被移除出查詢快取。通過這個值,使用者可以適當的調整緩衝大小。如果該值非常大,則表明經常出現緩衝不夠的情況,需要增加緩衝大小;Qcache_free_memory:查詢快取的記憶體大小,通過這個參數可以很清晰的知道當前系統的查詢記憶體是否夠用,是多了,還是不夠用,我們可以根據實際情況做出調整。一般情況下4G記憶體設定64M足夠了。 8) thread_cache_size 表示可以重新利用儲存在緩衝中線程的數,參考如下值:1G —> 8 2G —> 16 3G —> 32 >4G —> 64 9) thread_concurrency 這個值設定為cpu核心數的2倍即可 10) wait_timeout 表示閒置連線逾時時間,預設是28800s,這個參數是和interactive_timeout一起使用的,也就是說要想讓該參數生效,必須同時設定interactive_timeout,建議他們兩個都設定為10 11) max_connect_errors 是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的用戶端以防止暴力破解密碼的情況。與效能並無太大關係。為了避免一些錯誤我們一般都設定比較大,比如說10000 12) max_connections 最大的串連數,根據業務請求量適當調整,設定500足夠 13) max_user_connections 是指同一個帳號能夠同時串連到mysql服務的最大串連數。設定為0表示不限制。通常我們設定為100足夠