第一部分javascript
1. 安裝mysql
cd /usr/local/src/
免安裝編譯二進制的包
wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gzphp
tar zxvf /usr/local/src/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz 解壓
mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql 挪到mysql下並重命名爲mysqlcss
useradd -s /sbin/nologin mysql 增長一個mysql用戶不讓它登陸
mkdir -p /data/mysql 要存放mysql數據html
cd /usr/local/mysql java
chown -R mysql:mysql /data/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 初始化,要運行一些mysql必要的文件mysql表,數據庫放在/data/mysqlmysql
echo $?linux
]# ls /data/mysql
mysql test
生成了mysql庫nginx
mysql]#ls support-files/
mysql]#cp support-files/mysql.server /etc/init.d/mysqld mysql啓動的腳本====
放到這裏是爲了讓它放到系統的服務列表裏面去web
chmod 755 /etc/init.d/mysqld sql
chkconfig --add mysqld
chkconfig mysqld on
vim /etc/init.d/mysqld 須要修改一下配置文件================
加上以下內容
basedir=/usr/local/mysql mysql所在的路徑
datadir=/data/mysql 要存放mysql數據
mysql]# ls support-files/
my-huge.cnf
my-large.cnf
my-small.cnf
cp support-files/my-huge.cnf /etc/my.cnf 也能夠打開my.cnf 修改他的端口
vim /etc/my.cnf 裏面有配置
註釋下面兩行,是作主從用的,防止佔用過多資源,
#log-bin=mysql-bin
#server-id = 1
service mysqld start
或者
/etc/init.d/mysqld start mysql啓動腳本========================
ps aux |grep mysqld
netstat -lnp |grep mysql
ls /data/mysql 查看一下生成的文件
能夠查看一下錯誤日誌
2. 安裝apache
wget http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz
tar zvxf httpd-2.2.16.tar.gz
cd httpd-2.2.16
./configure --prefix=/usr/local/apache2 --with-included-apr --with-pcre --enable-mods-shared=most
prefix後面是安裝apache的目錄,apr可讓咱們在多個平臺使用apache,pcre叫正則相關的,後面是模塊
若是上面出錯就須要安裝一下gcc和apr yum install -y gcc apr
echo $?
make
make install
ls /usr/local/apache2/ 能夠查看生成的文件
啓動apache
/usr/local/apache2/bin/apachectl start
ps aux |grep httpd
【httpd-2.4版本編譯安裝方法】 http://www.aminglinux.com/bbs/thread-7283-1-1.html
2.2用到他自帶的apr,2.4要用到系統的apr
【如何指定使用worker/prefork】 http://www.lishiming.net/thread-944-1-1.html
【apache兩種工做模式】http://www.lishiming.net/thread-838-1-2.html
php必須在前面二者後面安裝
3. 安裝php
wget http://cn2.php.net/distributions/php-5.3.28.tar.gz
tar zxf php-5.3.28.tar.gz
cd php-5.3.28 安裝相關須要的包,繼續執行下面的操做
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6
若是安裝出錯就是缺乏一些庫,須要安裝一下 yum install -y libxml2-devel 好比這個,後面都跟-devel
(不肯定的時候能夠查找一下 yum list |grep bzip2)很準確
注意,最後到這裏mcrypt 這個包,你須要安裝epel的擴展源才能夠看到
否則yum list |grep mcrypt 是搜索不到mcrypt
centos6
32位epel yum源下載地址:wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
64位下載地址: www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm
rpm -ivh epel-release-6-8_32.noarch.rpm
而後就能夠搜索yum list |grep mcrypt
centos6
32位epel yum源下載地址: www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
64位下載地址: www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm
下載完後
rpm -ivh 'www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm'
yum install -y libmcrypt-devel 而後才能夠成功安裝這個
make
make install
【php5.五、5.6編譯安裝方法】http://www.aminglinux.com/bbs/thread-7284-1-1.html
=========================================================mysql,apache,php安裝完成了
4. 配置apache結合php
vim /usr/local/apache2/conf/httpd.conf apache的配置文件,裏面和不少模塊
ls /usr/local/apache2/modules/ apache模塊的路徑
/usr/local/apache2/bin/apachectl -M 查看靜態動態的模塊
裏面的share(動態)是經過LocadModule控制的
靜態的模塊就是把這些靜態模塊塞到了咱們的執行文件
ls /usr/local/apache2/bin/httpd 裏,把他們變成一個模塊,能夠理解是內核模塊
apache配置文件最後的那個模塊LoadModule php5_module modules/libphp5.so
是上面的./configure --with-apxs2=/usr/local/apache2/bin/apxs
這裏完成的操做
====================================
/usr/local/apache2/bin/apachectl -l 只查看靜態的內核模塊
core.c
http_core.c
mod_so.c
prefork.c 這個是默認的mpm模式,有三種模式,經常使用的有prefork,worker,event 簡單的區別是prefork使用的是 子進程S給咱們的客戶端提供服務。而worker是由進程和線程來提供服務,進程和線程的區別,進程是互相獨立的,兩個或者多個進程相互不受影響,線程直接是互相共享進程的資源的。prefork使用的內存多一點,worker少一點,worker支持的併發多一點,event是worker的升級版,支持的併發還要多一點,和worker差很少
(上面是apaceh默認編譯的公共模式,2.0 2.2 默認的是prefork模式,2.4默認是event)
他的模式能夠改
httpd-2.2.16]# ./configure --help |grep mpm
--with-mpm=MPM Choose the process model for Apache to use.
MPM={beos|event|worker|prefork|mpmt_os2}
===================================================
/usr/local/apache2/bin/apachectl -t 改了配置文件後,檢測語法也沒有錯誤,而後再重啓=============
vim /usr/local/apache2/conf/httpd.conf
找到
<Directory />
將裏面的Deny改成Allow 要否則訪問不了
Allow from all
</Directory>
將這裏打開
DocumentRoot "/usr/local/apache2/htdocs"
找到:
#ServerName www.example.com:80
打開
ServerName localhost:80
找到:
AddType application/x-gzip .gz .tgz
在該行下面添加:
AddType application/x-httpd-php .php
找到:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
將該行改成:
<IfModule dir_module>
DirectoryIndex index.html index.php 顯示默認的主頁
</IfModule>
/usr/local/apache2/bin/apachectl -t 檢測一下
/usr/local/apache2/bin/apachectl restart 重啓apache================
/usr/local/apache2/bin/apachectl graceful 加載配置文件,這個也能夠
5. 測試解析php
直接訪問 192.168.11.190
vim /usr/local/apache2/htdocs/1.php 這個路徑是放php文件的地方============
寫入:
<?php
echo "hello world!";
?>
保存後,繼續測試:
192.168.11.190/1.php
或者 curl -x192.168.3.129:80 lshfoids.com/1.php 或者index.html
<?php
phpinfo(); 看php的配置文件
?>
加載一下他的配置文件
ls /usr/local/php/etc
cd /usr/local/src/php-5.3.28
ls
php.ini-production 複製這個文件
cp php.ini-production /usr/local/php/etc/php.ini
/usr/local/apache2/bin/apachectl restart 重啓一下,而後就能夠顯示出來了
================
有時候沒有web頁面,怎麼經過命令行去檢驗和測試php
cd /usr/loacl/php/
/usr/local/php/bin/php -m 能夠列出他全部加載的模塊
其實apache用的是這個文件 /usr/local/apache2/modules/libphp5.so = /usr/local/php/bin/php
libphp5.so是apache調用的模塊,/bin/php是一個執行文件,其實他們是一個東西,能實現同樣的功能
/usr/local/php/bin/php -i |less 至關於phpinfo()和他看到的同樣,
若是進入到bin下,直接 ./bin/php -i |less
搜索php的配置文件
/usr/local/php/bin/php -i |grep -i 'Configuration File' 查一下他的路徑
若是有提示,就改一下他的時間就能夠了
vim /usr/local/php/etc/php.ini
date.timezone = 'Asia/Chongqing'
/usr/local/php/etc/php.ini php的配置文件=========
/usr/local/php/bin/php -v 看他的版本
查看./configure 的時候都加了什麼選項 查看php的
./bin/php -i |head
查看apache編譯過的選項
cat /usr/local/apache2/build/config.nice
mysql編譯參數:
# cat /usr/local/mysql/bin/mysqlbug|grep configure
ldd 是查詢這個文件都依賴於哪些庫
ldd /usr/local/apache2/modules/libphp5.so
==============查看nginx,apache,php,mysql的編譯參數
nginx編譯參數:
#/usr/local/nginx/sbin/nginx -V
二、apache編譯參數:
# cat /usr/local/apache/build/config.nice
三、php編譯參數:
# /usr/local/php/bin/php -i |grep configure
四、mysql編譯參數:
# cat /usr/local/mysql/bin/mysqlbug|grep configure
================================================================================================
第二部分--apache的配置
1. 下載discuz!
mkdir /data/www
cd /data/www
mv /root/Discuz_X3.2_SC_GBK.zip .
wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
unzip Discuz_X3.2_SC_GBK.zip
rm -rf readme/ utility/ 刪除這兩個目錄
mv upload/* .
rm -rf upload
mv Discuz_X3.2_SC_GBK.zip /root/
echo $PATH
ln -s /usr/local/apache2/bin/apachectl /usr/bin/ 作一個軟鏈接,或者加入到系統環境變量中去 /etc/rc.local=========
apachectl -t
apachectl restart
2. 配置第一個虛擬主機
vim /usr/local/apache2/conf/httpd.conf
打開下面這行
#Include conf/extra/httpd-vhosts.conf
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
加入以下配置:
<VirtualHost *:80>
DocumentRoot "/data/www"
ServerName www.123.com #自定義的
</VirtualHost>
apachectl -t
apachectl graceful 將配置文件從新加載
curl -x127.0.0.1:80 www.111.com 什麼都沒有輸出,測試成功了
curl -x127.0.0.1:80 www.111.com -I 檢測狀態碼302,下面顯示是install
按下ctrl+r 就是搜索命令歷史,輸入命令自動就找到了====
安裝discuz
測試一下,在本地hosts加入 192.168.3.129 www.111.com 能夠ping一下
在瀏覽器打開www.111.com 顯示discuz的安裝頁面
贊成安裝會提示目錄不可寫,須要改一下所屬主組
看apache是屬於哪一個用戶的ps aux |grep httpd
chown -R daemon data config uc_server/data uc_client/data
這時刷新一下安裝頁面就能夠了
===============加入環境變量================
PATH=$PATH:/usr/local/mysql/bin
或者
vim /etc/profile.d/
vim /etc/profile.d/path.sh
裏面加入
export PATH=$PATH:/usr/local/mysql/bin
而後
source /etc/profile
echo $PATH
而後輸入mysql就能夠進入到mysql的命令行了
3. 而後配置mysql,給Discuz!增長一個帳戶
]#mysqladmin -uroot password '123456'
]#mysql -uroot -p123456 這樣子登錄mysql
給mysql root帳戶設置密碼,而後命令行進入mysql,建立新的庫,並建立一個新的賬號對該庫有全部權限
> create database discuz;
> grant all on discuz.* to 'aming'@'localhost' identified by 'aming123';
> quit
.*是全部的表,all是全部的權限
驗證登錄數據庫用戶
mysql -uaming -paming123
繼續安裝Discuz!
安裝成功
=================
5. 爲某個虛擬主機配置用戶認證,打開www.111.com/admin.php 須要認證(給後臺管理中心配置用戶驗證)
http://www.lishiming.net/thread-554-1-1.html
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
虛擬主機配置文件中,找到虛擬配置的地方,<VirtualHost>
在裏面加入
<Directory /data/www>
AllowOverride AuthConfig
</Directory>
保存後,而後
建立apache的驗證用戶
/usr/local/apache2/bin/htpasswd -c /data/.htpasswd aming #/data/.htpasswd是密碼文件
cat /data/.htpasswd
#第一次建立用戶要用到-c 參數 第2次添加用戶,就不用-c參數
增長第二個用戶的時候,就不要加-c了,由於-c是建立的意思,若是加上會把這個文件重寫。
/usr/local/apache2/bin/htpasswd /data/.htpasswd abiao 第二次建立用戶
m 是用md5加密,若是你想修改密碼,能夠以下
/usr/local/apache2/bin/htpasswd -m /data/.htpasswd test2
重啓apache,便可。
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf而後繼續在虛擬配置文件中加入
<Directory /data/www/admin.php>
AllowOverride AuthConfig #將要進行用戶認證
AuthName "自定義的" #認證的名字
AuthType Basic
AuthUserFile /data/.htpasswd # 這裏的/data/.htpasswd你能夠隨便寫一個路徑或名字,沒有限制
require valid-user #須要這些可用的用戶
</Directory >
apachectl -t
apachectl graceful
6. 配置域名跳轉
http://www.lishiming.net/thread-603-1-1.html
在虛擬配置文件中加入
ServerAlias www.222.com
而後在本地電腦hosts中解析一下就能夠訪問了,結論:咱們的網站,任何一個域名綁定到你的ip,均可以訪問你的虛擬主機
<VirtualHost *:80>
DocumentRoot "/data/www"
ServerName www.111.com
ServerAlias www.222.com
<IfModule mod_rewrite.c>
#需求:要把訪問域名 www.222.com 的域名轉發到 www.111.com 上
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.222.com$
RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L]
</IfModule>
</VirtualHost>
curl -xlocalhost:80 www.111.com -I
測試 curl -xlocalhost:80 www.222.com/1212 -I
若是是多個域名重定向到一個域名
DocumentRoot "/data/www"
ServerName www.111.com
ServerAlias www.222.com 888.com 666.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.222.com [OR]
RewriteCond %{HTTP_HOST} ^888.com [OR]
RewriteCond %{HTTP_HOST} ^666.com$
RewriteRule ^(.*)$ http://www.111.com/$1 [R=301,L]
</IfModule>
==========
ss -an |grep -ci esta
7. 配置apache的訪問日誌
首先打開
vim /usr/local/apache2/conf/httpd.conf 主配置文件
找到下面這行,複製粘貼在下面,根據需求改一下
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
改成
LogFormat "%h %u \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" biao
而後在虛擬主機配置文件中打開vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
下面的
CustomLog "/tmp/apache2.log" biao
而後訪問查看一下日誌 tail -f /tmp/apache2.log
================================
去掉圖片日誌
在虛擬主機配置#ErrorLog "logs/dummy-host.example.com-error_log"下面加入
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
而後把CustomLog "/tmp/apache2.log" biao
改爲
CustomLog "/tmp/apache2.log" biao env=!image-request
日誌切割
在虛擬主機配置改這裏
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /tmp/access_%Y%m%d.log 86400" biao env=!image-request
訪問測試
www]# ls /tmp/
access_20150701.log
參考資料:
使apache的日誌文件裏不記錄圖片文件 http://www.lishiming.net/thread-561-1-1.html
apache 日誌中記錄代理IP以及真實客戶端IP http://www.lishiming.net/thread-960-1-1.html
apache只記錄指定URI的日誌 http://www.lishiming.net/thread-981-1-1.html
apache日誌記錄客戶端請求的域名 http://www.lishiming.net/thread-1037-1-1.html
apache 日誌切割問題 http://www.lishiming.net/thread-566-1-1.html
8. 配置靜態文件緩存
http://www.lishiming.net/thread-912-1-1.html
按下f12 能夠看到那些靜態文件
下次訪問就不用從服務器裏面取,就是保存在瀏覽器上,訪問用到直接拿出來用
在虛擬主機配置改這裏加入
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
按下f12 刷新一下,能夠看到文件有304 說明這個文件緩存過的。
查看圖片的過時緩存
curl -I 'http://www.111.com/static/image/common/logo.png'
Cache-Control: max-age=86400
86400/3600/24=1天,這個能夠設置
=============================================================================================
第三部分php配置和mysql配置
9. 配置防盜鏈
http://www.lishiming.net/thread-71-1-1.html
防止別人的網站,放你網站圖片的連接,
位置通常狀況下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加
SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
SetEnvIfNoCase Referer "^http://ccvita.com" local_refSetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
還一種寫法,是用正則的,這種寫法在各個版本的apache比較通用。
寫法是
SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
10. 訪問控制
apache的order allow deny
http://www.lishiming.net/thread-832-1-1.html
apache限制某個目錄下的php文件沒有執行權限 http://www.lishiming.net/thread-1000-1-1.html
apache 針對訪問uri 限制ip http://www.lishiming.net/thread-5365-1-1.html
幾種限制ip的方法 http://www.lishiming.net/thread-6519-1-1.html
11. apache rewrite相關,後面講到
apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
apache 限制某些目錄不能訪問經過rewrite實現 http://www.lishiming.net/thread-3587-1-1.html
apache rewrite 出現死循環 http://www.lishiming.net/thread-1043-1-1.html
一. php配置
查看配置文件的路徑 /usr/local/php/bin/php -i |grep -i config
vi /usr/locall/php/etc/php.ini
查找/disable_function
1. 配置disable_function
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close
禁止這些函數,禁止黑客用這些黑客訪問
2. 配置error_log
display_error=off 這裏若是是on 有助於咱們去排錯和調試========
log_errors=on
error_log=/usr/local/php/logs/php_errors.log 這裏寫絕對路徑,建立logs目錄,權限777
error_reporting = E_ALL & ~E_NOTICE 錯誤級別
查看網站出錯的狀態碼
curl -I -x127.0.0.1:80 http://www.111.com/forum.php
錯誤級別參考 http://www.aminglinux.com/bbs/thread-6973-1-1.html
3. 配置open_basedir 限定訪問目錄
open_basedir = /data/www1:/tmp 在php.ini裏面配置,一種方法,指定到別的目錄去,就訪問不了了
php_admin_value open_basedir "/data/www1:/tmp" 在虛擬主機配置,二種方法,
> /usr/local/php_errors.log 清空日誌的意思
4. 安裝php的擴展模塊(memcache)
http://www.aminglinux.com/bbs/thread-45-1-1.html
源碼包的模塊
cd /usr/local/src/php-5.3.28/ext/
若是想要用哪些模塊,就進入到模塊 執行這個命令
ext]# cd ftp
[root@Centos6 ftp]#/usr/local/php/bin/phpize
須要安裝autoconf yum install autoconf
而後再執行一下命令/usr/local/php/bin/phpize
ls
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install 這時告訴你這個動態模塊在哪裏
ls + 模塊路徑
出現 ftp.so
/usr/local/php/bin/php -i |grep -i extension_dir
vi /usr/local/php/etc/php.ini 配置加上ftp模塊,須要手動加
進去加上 extension=ftp.so extension這裏說明是一個動態加載
而後 /usr/local/php/bin/php -m |grep ftp 就多了ftp這個模塊了
二. mysql配置
mysql調優: http://www.aminglinux.com/bbs/thread-5758-1-1.html
/etc/my.cnf 已經拷貝了這個模板
[mysqld]
socket = /tmp/mysql.sock # 爲MySQL客戶程序與服務器之間的本地通訊指定一個套接字文件(Linux下默認是/var/lib/mysql/mysql.sock文件)等我寫完後你再讀
port = 3306 # 指定MsSQL偵聽的端口
key_buffer = 384M # key_buffer是用於索引塊的緩衝區大小,增長它可獲得更好處理的索引(對全部讀和多重寫)。索引被全部的線程共享,key_buffer的大小視內存大小而定。
table_cache = 512 # 爲全部線程打開表的數量。增長該值能增長mysqld要求的文件描述符的數量。能夠避免頻繁的打開數據表產生的開銷
sort_buffer_size = 2M # 每一個須要進行排序的線程分配該大小的一個緩衝區。增長這值加速ORDER BY或GROUP BY操做。
注意:該參數對應的分配內存是每鏈接獨佔!若是有100個鏈接,那麼實際分配的總共排序緩衝區大小爲100×6=600MB
read_buffer_size = 2M # 讀查詢操做所能使用的緩衝區大小。和sort_buffer_size同樣,該參數對應的分配內存也是每鏈接獨享。=====
query_cache_size = 32M # 指定MySQL查詢結果緩衝區的大小
read_rnd_buffer_size = 8M # 改參數在使用行指針排序以後,隨機讀用的。
myisam_sort_buffer_size =64M # MyISAM表發生變化時從新排序所需的緩衝
thread_concurrency = 8 # 最大併發線程數,取值爲服務器邏輯CPU數量×2,若是CPU支持H.T超線程,再×2
thread_cache = 8 # #緩存可重用的線程數
skip-locking # 避免MySQL的外部鎖定,減小出錯概率加強穩定性。 wait_timeout = 8 # 表示空閒的鏈接超時時間,默認是28800s,這個參數是和interactive_timeout一塊兒使用的,也就是說要想讓wait_timeout 生效,必須同時設置interactive_timeout
interactive_timeout = 8
long_query_time = 1 ##慢查詢日誌的超時時間
log_slow_queries = /path/to/slow_queries ## 慢查詢日誌路徑,必須配合上面的參數一同使用
============
查看key_reads / key_read_requests 這兩的值
登陸mysql
SHOW STATUS LIKE 'key_read%';
--------
show varables like 'table%'
apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
打開虛擬主機配置文件
判斷是用什麼搜索引擎
有些user_agent 不是咱們想要的,能夠經過rewrite功能針對 %{HTTP_USER_AGENT} 來rewirete到404頁,從而達到限制某些user_agent的請求。
配置以下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
RewriteCond %{REQUEST_URI} !^/404*
RewriteRule .* /404.html
</IfModule>
測試curl -xlocalhost:80 www.111.com -I 跳到了404
curl -A "sfjslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 這個就不是404了
curl -A "botslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 這個是404 由於包含了bot
請注意,你的404.html千萬別再跳轉到其餘頁面了,不然頗有可能就會死循環了。
其實rewrite到404.html 並非很好的辦法,而apache的rewrite功能有一項就是forbidden ,那就是 F
配置以下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
RewriteRule .* - [F]
</IfModule>
======================
apache 限制某些目錄不能訪問經過rewrite實現 http://www.lishiming.net/thread-3587-1-1.html
deny allow確定是能夠實現的,可是這個必須指定準確的目錄,若是有不少個目錄,可是都包含某個名字,好比
bbs.1.com/1/tmp/123.html
bbs.1.com/2/tmp/123.html
bbs.1.com/3/1/2/tmp/123.html
……
若是有不少,須要逐一去定義Directory 模塊,這顯然很麻煩,使用rewrite模塊的 REQUEST_URI 就能夠很容易實現。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/data/* [NC] #data這個目錄下的都訪問不了
RewriteRule .* - [F]
</IfModule>
訪問一下網站,看到不少東西沒有出來,按下12,會看到有的文件是403就是限制了這個目錄下面的文件了
======================
apache rewrite 出現死循環 http://www.lishiming.net/thread-1043-1-1.html
個人一條規則
RewriteRule ^.* /beian.html [R,L]
複製代碼
使用curl測試,沒有問題,可是使用瀏覽器訪問時,出現了無限循環。
原本訪問的是 www.111.com 結果變成了 www.111.com/111/111/111/.....
雖然在最後加了 [L] 依然無論用,可能apache仍是不夠智能,一直知足條件就一直去匹配,一直去跳轉。最後沒招了只能再加一個條件。
RewriteCond %{REQUEST_URI} !^/beian.html [NC]
RewriteRule ^.* /beian.html [R,L]
這樣就再也不循環了。
==================================================================================================
第四部分 -- mysql相關
1. 忘記root密碼
http://www.lishiming.net/thread-252-1-1.html
進入mysql
which mysql
/usr/local/mysql/bin/mysql 沒有設置密碼以前能夠這樣子打開mysql
登陸/usr/local/mysql/bin/mysql -uroot -p123456
若是忘記root密碼或其餘用戶密碼,不要急,按下面操做便可。
1. 編輯mysql主配置文件 my.cnf
vim /etc/my.cnf
在[mysqld]字段下添加參數
skip-grant 不須要受權
2. 重啓數據庫服務
service mysqld restart
3. 這樣就能夠進入數據庫不用受權了
mysql -uroot
4. 修改相應用戶密碼
use mysql;
update user set password=password('aminglinux') where user='root';
flush privileges;
5. 修改/etc/my.cnf 去掉 skip-grant , 重啓mysql服務
重啓
/etc/init.d/mysqld restart
登陸/usr/local/mysql/bin/mysql -uroot -paminglinux
看user表
use mysql;
select * from user\G;
=============
2.
skip-name-resolve(禁止解析域名)
skip-innodb (是mysql的引擎)
vim /etc/my.cnf 在配置裏面加上上面兩個,而後在/data/mysql 有幾個文件會消失
3. 配置慢查詢日誌
#log_slow_queries = /path/to/slow_queries
#long_query_time = 1
查看配置文件,默認在下面文件找
vim /etc/init.d/mysqld 進去查找conf=/etc/my.cnf
4. innodb與myisam 經常使用mysql引擎,總結一下
http://www.lishiming.net/thread-97-1-1.html
5. mysql配置調優
http://www.lishiming.net/thread-5758-1-1.html
6. mysql經常使用操做
mysql -uroot -paminglinux
或者 mysql -uroot -h127.0.0.1 -paminglinux
mysql -uroot -h192.168.11.190 -P3306 -paminglinux
mysql -uroot -S /tmp/mysql.sock -paminglinux 能夠用sock去通信,只能夠在本地用
查看都有哪些庫 show databases;
調用系統的命令 system ls
查看某個庫的表 use db; show tables;
查看錶的字段結構 desc tb;
查看建表語句 show create table tb\G; \G顯示比較有規則一點
當前是哪一個用戶 select user();
當前庫 select database();
建立庫 create database db1; mysql -uroot -paminglinux -e "create database discuz2"
建立表 create table t1 (`id` int(4), `name` char(40));
insert into t1 values(1, 'aming');
insert into t1 (`id`) values(2); 插入單個字段
select * from t1;
查看數據庫版本 select version();
查看mysql狀態 show status;
修改mysql參數 show variables like 'max_connect%'; set global max_connect_errors = 1000;
查看mysql隊列 show processlist; ===============
grant all on *.* to 'root'@'10.0.2.100' identified by '123456'; *.*表明全部的庫和表都受權
建立普通用戶並受權 grant all on *.* to user1 identified by '123456';
grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';
flush privileges; 刷新一下磁盤
grant all on db1.* to 'user3'@'%' identified by '231222';
更改密碼 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;
查詢 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like '10.0.%';
更新 update db1.t1 set name='aaa' where id=1;
刪除表字段 delete from t1 where id=3;
清空表的數據 truncate table db1.t1;
刪除表 drop table db1.t1;
刪除數據庫 drop database db1;
修復表 repair table tb1 [use frm];
show processlist ; 看看任務都有哪些 show full processlist ;
show variables like '%timeout%';
在配置文件裏面加上,兩個必須同時用從能夠
interactive_timeout = 10
wait_timeout=10
若是更改mysql的配置文件my.conf 就須要重啓mysql,如今不須要重啓就能夠生效的方法(不是全局,全局須要寫入到配置文件裏面)
set global interactive_timeout = 10;
把重啓的服務放到系統的環境 /etc/rc.local 下面,就能夠開機自動生效=========
/usr/local/apache2/bin/apachectl start
查看帖子內容的表
select * from pre_forum_post\G;
搜索帖子
select * from pre_forum_post where subject like '%sjs%';
7. mysql備份與恢復
備份數據庫 mysqldump -uroot -paminglinux db >1.sql
恢復 mysql -uroot -paminglinux db <1.sql
mysql -uroot -paminglinux -e "create database discuz2"
備份時指定字符集 mysqldump -uroot -paminglinux --default-character-set=utf8 db >1.sql
只備份表結構 mysqldump -uroot -paminglinux --default-character-set=utf8 -d db >1.sql
恢復指定字符集 mysql -uroot -paminglinux --default-character-set=utf8 db < 1.sql
只備份一個表 mysqldump -uroot -paminglinux db tb1 > 2.sql
8. 一臺mysql服務器啓動多個端口
http://www.lishiming.net/thread-63-1-1.html
http://www.aminglinux.com/bbs/forum.php?mod=viewthread&tid=6509&highlight=phpmyadmin
安裝mysqlamin 管理平臺