MySQL安裝javascript
MySQL的幾個經常使用安裝包:rpm、源碼、二進制免編譯php
把下載的包保存在這個目錄裏:cd /usr/local/src 因此要先進入這個目錄下css
第一步,下載源碼包:html
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz java
第二步,解壓:mysql
tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gzlinux
第三步,把解壓的這個目錄移動到usr、local下並更名爲mysql:git
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysqlgithub
第四步,進入到這個目錄下:redis
cd /usr/local/mysql
第五步,建立一個mysql用戶:
useradd mysql
第六步,建立一個目錄:這個目錄是爲了存放mysql的數據
mkdir /data/
第七步,初始化一下讓它生成/data/mysql這個目錄:
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
[root@aaa-01 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db: Data::Dumper
缺乏軟件包須要安裝,咱們先模糊搜索一下,若是不清楚哪一個是能夠把他們都裝上,都試試。
[root@aaa-01 mysql]# yum list |grep perl |grep -i Dumper perl-Data-Dumper.x86_64 2.145-3.el7 base 安裝這個 perl-Data-Dumper-Concise.noarch 2.020-6.el7 epel perl-Data-Dumper-Names.noarch 0.03-17.el7 epel perl-XML-Dumper.noarch 0.81-17.el7 base
安裝:yum install -y perl-Data-Dumper
怎檢驗錯誤,兩種方法:要不運行echo $?
[root@aaa-01 mysql]# echo $? 0
要不看是否是有兩個OK
第七步,拷貝配置文件,配置文件在ls /support-files/my-default.cnf裏邊(模板配置文件)
把它拷貝到/etc/下,更名叫my.cnf(mysqld的配置文件就叫my.cnf固定放在etc下)
cp support-files/my-default.cnf /etc/my.cnf
第八步,拷貝啓動腳本
cp support-files/mysql.server /etc/init.d/mysqld
第九步,編輯配置文件
vi /etc/init.d/mysqld
定義basedir和datadir 在配置文件最下邊
basedir=/usr/local/mysql datadir=/data//mysql
第十步,添加到系統服務中去,讓他開機啓動:
chkconfig --add mysqld 查看一下:chkconfig --list
第十一步,啓動服務:service mysqld start 或者用:/etc/init.d/mysqld start
[root@aaa-01 mysql]# service mysqld start Starting MySQL.Logging to '/data//mysql/aaa-01.err'. . SUCCESS!
查看進程:ps aux |grep mysql
查看監聽端口:netstat -lntp(默認監聽3306端口)
停掉服務命令:service mysqld stop
也能夠用命令行的方法啓動:
可是用平時的命令停不了須要:停掉服務命令:killall mysqld
若是碰到mysqld的進程殺不死你等了一分鐘尚未殺死ps還會有進程那證實他數據量很大正在慢慢寫入到磁盤裏去這事你不能用kill -9殺死這個進程這樣可能會致使你丟失數據或者損壞你的表
mariadb安裝
cd /usr/local/src
下載二進制源碼包:wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
解壓安裝包:tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
把安裝包拷貝到usr/local目錄下來:mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
cd /usr/local/mariadb
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
vi /usr/local/mariadb/my.cnf //定義basedir和datadir 基本不用改
cp support-files/mysql.server /etc/init.d/mariadb
vim /etc/init.d/mariadb //更改啓動腳本
定義basedir=/usr/local/mariadb
datadir=/data/mariadb
conf=$basedir/my.cnf 以及啓動參數
最後在啓動腳本定義:搜 /start 大概在300行,定義一下,加上下邊的的內容:定義的是配置文件所在的路徑,目的是不和mysql產生衝突,假如說你的機器上只安裝了mariadb就不須要自定義--defaults這個參數
啓動它:/etc/init.d/mariadb start
啓動它以前先看看有沒有mysqld服務在運行ps aux |grep mysqld,由於他倆監聽的是一個端口,先把它關掉。
查看是否啓動成功:ps aux |grep mariadb
查看監聽端口:netstat -lntp 是否是3306
maridb的配置文件:/usr/local/mariadb/my.cnf
Apache安裝
Apache是一個基金會的名字,httpd纔是咱們要安裝的軟件包,早期它的名字就叫apache
Apache官網www.apache.org
第一步,下載這三個包:
下載到這個目錄下:cd /usr/local/src
wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.27.tar.gz
wget http://mirrors.hust.edu.cn/apache/apr/apr-1.5.2.tar.gz
wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.5.4.tar.gz
apr和apr-util是一個通用的函數庫,它讓httpd能夠不關心底層的操做系統平臺,能夠很方便地移植(從linux移植到windows)
第二步,解壓這三個包:
tar zxvf httpd-2.4.27.tar.gz
tar zxvf apr-util-1.5.4.tar.gz
tar zxvf apr-1.5.2.tar.gz
第三步,安裝apr:
1.先進到apr-1.5.2目錄下:cd /usr/local/src/apr-1.5.2
2.安裝apr:./configure --prefix=/usr/local/apr
3.make && make install
他下邊會有四個目錄:ls /usr/local/apr
安裝apr-util:
1.進到目錄下:cd /usr/local/src/apr-util-1.5.4
2.安裝:./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
3.make && make install
編譯httpd:
1.進到目錄下:cd /usr/local/src/httpd-2.4.27
2.安裝:./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
3.make && make install
ls /usr/local/apache2.4/modules 模塊目錄,每一個模塊都表明着一個功能
/usr/local/apache2.4/bin/httpd -M //查看阿帕奇加載的模塊
命令行啓動apache:/usr/local/apache2.4/bin/apachectl start
查看有沒有啓動:ps aux |grep hpptd
查看端口號:netstat -lntp(httpd默認監聽80端口)
安裝PHP5
PHP官網www.php.net
當前主流版本爲5.6/7.1
必須先安裝阿帕奇,由於編譯PHP的時候他會用到阿帕奇的一個工具(--with-apxs2)
第一步,進到src目錄下:cd /usr/local/src/
第二步,下載安裝包:wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
第三步,解壓:tar zxf php-5.6.30.tar.gz
第四步,進到目錄下:cd php-5.6.30
第五步,安裝編譯:./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --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
make && make install
usr/local/php/bin/php -m #查看php加載的模板都有哪些
第六步,拷貝:cp php.ini-production /usr/local/php/etc/php.ini
安裝PHP7
安裝方法跟PHP5同樣!!!
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
tar jvxf php-7.1.6.tar.bz2
cd php-7.1.6
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --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
make && make install
ls /usr/local/apache2.4/modules/libphp7.so
cp php.ini-production /usr/local/php7/etc/php.ini
PHP5跟PHP7不想用哪一個就把它註釋掉,編輯配置文件:搜索php5.so
vim /usr/local/apache2.4/conf/httpd.conf
usr/local/apache2.4/bin/apachectl -m ##查看阿帕奇加載了幾個PHP
配置http支持PHP
編輯一下httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf //修改如下4個地方
第一步,搜索ServerName 把這個服務打開,前邊的井號去掉
去掉以後他就不會在提示下面的錯誤信息了
第二步,增長一行配置,搜索:Require all denied 改爲:Require all granted
每次寫完配置文件都要執行一下這兩步!!
檢查配置文件語法是否正確,加上-t選項 /usr/local/apache2.4/bin/apachectl -t 從新加載配置文件,加上graceful /usr/local/apache2.4/bin/apachectl graceful
第三步,搜AddType加上下邊這條命令:
AddType application/x-httpd-php .php 加他的目的是爲了能讓php能解析
第四步,增長索引頁,搜索Index,加上下邊語句:
DirectoryIndex index.html index.php
第五步,寫一個腳本看看阿帕奇能不能解析PHP:
vi /usr/local/apache2.4/htdocs/1.php <?php phpinfo(); ?>
寫完在瀏覽器上訪問一下IP加1.php:192.168.232.132/1.php 只要能出下邊的頁面就證實能解析
若是不能解析那麼你就檢查一下Apache配置文件:
第一項,看看php5有沒有加載:
/usr/local/apache2.4/bin/apachectl -M
若是沒有加載php5,你就要看看他有沒有這個模塊,有沒有這個文件:
ls /usr/local/apache2.4/modules/libphp5.so
若是有文件也沒有顯示,查看配置文件裏邊有沒有加載php5:
vim /usr/local/apache2.4/conf/httpd.conf 搜索libphp5.so
在查看配置文件裏有沒有加AddType這一行:搜索AddType
AddType application/x-httpd-php .php
/usr/local/apache2.4/bin/apachectl -t //測試語法
/usr/local/apache2.4/bin/apachectl start //啓動服務
netstat -lntp
curl localhost
vim /usr/local/apache2.4/htodcs/test.php //增長以下內容
<?php echo 123; ?>
curl localhost/test.php
http的默認虛擬主機
一臺服務器能夠訪問多個網站,每一個網站都是一個虛擬主機
任何一個域名解析到這個主機臺機器,均可以訪問的虛擬主機就是默認虛擬主機
概念:域名(主機名)、DNS、解析域名、hosts
window下邊的hosts在C:\Windows\System32\drivers\etc路徑下,能夠定義一個域名指向到一個IP,例如
定義完在windows上邊ping一下它確實指向了定義的IP上,若是不指定他會指向到一個公網IP上
配置虛擬主機
編輯配置文件:vim /usr/local/apache2.4/conf/httpd.conf 搜索httpd-vhost,去掉#
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf//改成以下
<VirtualHost *:80> ServerAdmin admin@aminglinux.com #這個是要定義郵箱,要不要無所謂能夠刪掉 DocumentRoot "/data/wwwroot/abc.com" #這個定義網站的根目錄在哪裏,好比在/data/wwwroot/abc.com ServerName abc.com #網站域名(只容許寫一個) ServerAlias www.abc.com www.123.com #網站別名,好比abc能夠訪問123也能夠訪問,能夠寫多個域名 ErrorLog "logs/abc.com-error_log" #錯誤日誌 CustomLog "logs/abc.com-access_log" common #訪問日誌 </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName www.111.com ServerAlias www.exaple.com ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common
更改完配置文件建立對應的目錄:
mkdir /data/wwwroot/
mkdir /data/wwwroot/abc.com
mkdir /data/wwwroot/111.com
而後在對應的站點根目錄下建立一個好比說:index.php
vim /data/wwwroot/abc.com/index.php 給abc.com裏邊定義以下
<?php echo "abc.com";
vim /data/wwwroot/111.com/index.php 給111.com裏邊定義以下
<?php echo "111.com" </VirtualHost>
最後檢查、重啓
/usr/local/apache2.4/bin/apachectl –t /usr/local/apache2.4/bin/apachectl graceful
測試虛擬主機
mkdir -p /data/wwwroot/aming.com /data/wwwroot/www.123.com
echo "aming.com" > /data/wwwroot/aming.com/index.html //網站默認的主頁就是index.html
echo "123.com" > /data/wwwroot/123.com/index.html
curl -x127.0.0.1:80 aming.com //這樣會去訪問aming.com/index.html
curl -x127.0.0.1:80 www.123.com //訪問www.123.com
curl -x127.0.0.1:80 www.abc.com
所謂虛擬主機就是:任何一個域名解析到這個ip上他都會去訪問這個默認虛擬主機
httpd的用戶認證
假如說訪問123.com的時候有個需求,你能讓你直接訪問,須要輸入用戶名密碼,驗證經過以後呢才能訪問,這樣作的目的是爲了增長安全性
在第二個上更改由於第一個是默認虛擬主機
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那個虛擬主機編輯成以下內容
<Directory /data/wwwroot/www.111.com> //指定認證的目錄 AllowOverride AuthConfig //這個至關於打開認證的開關 AuthName "111.com user auth" //自定義認證的名字,做用不大 AuthType Basic //認證的類型,通常爲Basic,其餘類型阿銘沒用過 AuthUserFile /data/.htpasswd //指定密碼文件所在位置,這個要記住一會要生成他的密碼文件 require valid-user //指定須要認證的用戶爲所有可用用戶 </Directory>
生成他的密碼文件,-c建立密碼文件,-m指定密碼加密類型,好比說用戶叫aming,輸入兩次密碼
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming
假如說你想在建立一個用戶好比zhangsan,那就不須要-c建立密碼文件了,由於剛纔已經建立了,直接-m加用戶名就能夠/usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan
能夠查看到生成的密碼cat / /data/.htpasswd
從新加載配置-t , graceful
檢查配置文件語法是否正確,加上-t選項 /usr/local/apache2.4/bin/apachectl -t 從新加載配置文件,加上graceful /usr/local/apache2.4/bin/apachectl graceful
測試
如今虛擬機上用命令測試
不指定用戶密碼:curl -x127.0.0.1:80 www.111.com //狀態碼爲401,401表示須要用戶驗證
指定用戶密碼:curl -x127.0.0.1:80 -uaming:passwd www.111.com //狀態碼爲200
格式爲:-u指定用戶:用戶密碼 解釋:下邊的例子用戶是aming密碼是lishiming
在電腦瀏覽器上測試
先在Windows上綁定hosts,window下邊的hosts在C:\Windows\System32\drivers\etc路徑下
綁定完瀏覽器輸入111.com,輸入用戶密碼就能夠訪問到了
還能夠針對單個文件進行認證
好比說訪問123.php時再認證
<FilesMatch admin.php>
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
從新加載配置-t , 檢測graceful
檢查配置文件語法是否正確,加上-t選項 /usr/local/apache2.4/bin/apachectl -t 從新加載配置文件,加上graceful /usr/local/apache2.4/bin/apachectl graceful
測試
編寫一個123.php腳本vim /data/wwwroot/111.com/123.php 寫入:
<?php echo "123.php";
在虛擬機上:curl -x127.0.0.1:80 www.111.com -I 你發現不用輸入密碼也能夠訪問到了
而訪問123.com時則是401:curl -x127.0.0.1:80 111.com/123.php -I
輸入用戶名密碼就能夠訪問到:curl -x127.0.0.1:80 -uaming:lishiming 111.com/123.php
域名跳轉
需求,把123.com域名跳轉到www.123.com,配置以下:
<IfModule mod_rewrite.c> //須要mod_rewrite模塊支持 RewriteEngine on //打開rewrite引擎功能,打開了下邊的功能纔會生效 RewriteCond %{HTTP_HOST} !^www.111.com$ //定義rewrite的條件(何時才跳轉),當主機名(域名)不是www.111.com時知足條件,他就會跳轉 RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L] //定義rewrite規則,除去域名以外的連接或者其餘的也跳轉到111.com,當知足上面的條件時,這條規則纔會執行,R權重301表示永久重定向,L跳轉一次 </IfModule>
能夠再這增長一個測試域名
從新加載配置-t , 檢測graceful
檢查配置文件語法是否正確,加上-t選項 /usr/local/apache2.4/bin/apachectl -t 從新加載配置文件,加上graceful /usr/local/apache2.4/bin/apachectl graceful
測試
1.先檢查阿帕奇有沒有加載rewrite模塊:
/usr/local/apache2/bin/apachectl -M|grep -i rewrite
2.若無該模塊,須要編輯配置文件,搜索:rewrite,刪除前面的#
vi /usr/local/apache2.4/conf/httpd.conf
檢查配置文件語法是否正確,加上-t選項 /usr/local/apache2.4/bin/apachectl -t 從新加載配置文件,加上graceful /usr/local/apache2.4/bin/apachectl graceful
3.在查看有沒有模板:/usr/local/apache2/bin/apachectl -M|grep -i rewrite
curl -x127.0.0.1:80 2111.com //狀態碼爲301,你發現他自動跳轉到了111.com
httpd訪問日誌
訪問日誌記錄用戶的每個請求
能夠更改格式:
vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
它提供了兩個日誌的格式,默認使用的是第二種common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
把虛擬主機配置文件改爲以下: 把默認的common格式改爲combined
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
CustomLog "logs/123.com-access_log" combined
</VirtualHost>
從新加載配置文件 -t,graceful
在訪問:curl -x127.0.0.1:80 -I 123.com
查看日誌:tail /usr/local/apache2.4/logs/123.com-access_log
訪問日誌不記錄靜態文件
網站大多元素爲靜態文件,如圖片、css、js等,這些元素能夠不用記錄
把虛擬主機配置文件改爲以下:
以什麼結尾的標識符
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
CustomLog "logs/123.com-access_log" combined env=!img (只要符合這個條件的請求都不會記錄到條件裏)
從新加載配置文件 -t, graceful
測試
mkdir /data/wwwroot/www.123.com/images //建立目錄,並在這目錄下上傳一個圖片
curl -x127.0.0.1:80 -I 123.com/images/123.jpg
tail /usr/local/apache2.4/logs/123.com-access_log
訪問日誌切割
日誌一直記錄總有一天會把整個磁盤佔滿,因此有必要讓它自動切割,並刪除老的日誌文件
把虛擬主機配置文件改爲以下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
SetEnvIf Request_URI ".*\.gif$" img
SetEnvIf Request_URI ".*\.jpg$" img
SetEnvIf Request_URI ".*\.png$" img
SetEnvIf Request_URI ".*\.bmp$" img
SetEnvIf Request_URI ".*\.swf$" img
SetEnvIf Request_URI ".*\.js$" img
SetEnvIf Request_URI ".*\.css$" img
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>
從新加載配置文件 -t, graceful
測試
先訪問一下:curl -x127.0.0.1:80 111.com/123.php
查看一下生成了新的日誌文件:ls /usr/local/apache2.4/logs
靜態元素過時時間
瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏,這樣下次再訪問時就不用去遠程下載了
增長配置
<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/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
測試
查看一下expaire模塊服務是否開啓:
/usr/local/apache2.4/bin/apachectl -M |grep expaire
沒開啓須要編輯配置文件搜索:expires_module 把前邊的#去掉
vim /usr/local/apache2.4/conf/httpd.conf
從新加載一下,在查看一下服務:
/usr/local/apache2.4/bin/apachectl graceful
curl測試,看cache-control: max-age
配置防盜鏈
經過限制referer來實現防盜鏈的功能
配置文件增長以下內容
<Directory /data/wwwroot/111.com>
SetEnvIfNoCase Referer "http://aaa.com" local_ref
SetEnvIfNoCase Referer "http://askapelearn.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
curl -e "http://www.aminglinux.com/123.html" 自定義referer
訪問控制-Directory
以目錄的形式
核心配置文件內容
<Directory /data/wwwroot/www.111.com/admin/>
Order deny,allow 以這順序爲主,哪一個在前邊就先執行哪一個
Deny from all 先拒絕
Allow from 127.0.0.1 在容許
</Directory>
curl測試狀態碼爲403則被限制訪問了
訪問控制-FilesMatch
針對文件或者連接
核心配置文件內容
<Directory /data/wwwroot/www.123.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
訪問控制-禁止php解析
核心配置文件內容
<Directory /data/wwwroot/www.123.com/upload>
php_admin_flag engine off
<FilesMatch (.*)\.php(.*)>
Order allow,deny
Deny from all
</Directory>
curl測試時直接返回了php源代碼,並未解析
訪問控制-user_agent
user_agent能夠理解爲瀏覽器標識
CC是一種訪問***,它利用不少個肉雞訪問,是頗有規律的訪問,這時咱們須要用user_agent來控制。
核心配置文件內容
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] //NC:表示忽略大小寫 OR:或者
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>
curl -A "123123" 指定user_agent,模擬user_agent
php相關配置
查看php配置文件位置
/usr/local/php/bin/php -i|grep -i "loaded configuration file"可是這個不許
模擬一下,在111目錄下建立一個phpinfo
編輯:vi index.php
把這個寫進去:
<?php
phpinfo();
登陸網站:111.com/index.php查看它的配置文件,可是他並無加載,咱們須要複製一份:
先進入到他的源碼包:cd /usr/local/src/php-7.1.6/
拷貝:cp php.init-development /usr/local/php7/etc/php.ini
刷新配置:/usr/local/apache2.4/bin/apachectl graceful
找到phpinfo所在的路徑打開它進行配置
vim /usr/local/php7/etc/php.ini
搜索date.timezone定義時區
Asia/Shanghai 上海
禁掉一些安全相關的函數
搜索下邊這個:默認他是空的,把下邊這些安全安全函數粘貼進去
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,phpinfo
打開調試錯誤日誌
搜索:display_errors
把On改爲Off 這樣他就不會把錯誤信息輸出到瀏覽器中
配置一個錯誤日誌搜索:log_errors On表示開啓,
把日誌定義到一個地方,搜索error_log,好比咱們放到/tmp/php_errors.log下去,還要定義errors.log的級別,搜索:error_reporting
open_basedir安全選項
你一臺服務器上跑了不少個站點,可能會有一個站點上代碼有問題,結果站點被黑了,被人拿到了權 限,而後他會往裏***,又跑到另外一個站點,可是這時我要加一個open_basedir,他就有可能黑不了,咱們能夠給它作一個隔離,A網站目錄在A目錄下B網站在B目錄下,這樣即便A網站被黑了他也看不到B網站的目錄,也不會被牽連進來,
搜索open_basedir
定義格式:/data/wwwroot/111.com:/
若是你這個網站上跑了N多個站點,能夠再aoach的虛擬主機裏邊編輯:
打開:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
加上這個php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"
php動態擴展模塊
/usr/local/php/bin/php -m //查看模塊
下面安裝一個redis的模塊
cd /usr/local/src/
wget https://codeload.github.com/phpredis/phpredis/zip/develop
mv develop phpredis-develop.zip
unzip phpredis-develop.zip
cd phpredis-develop
/usr/local/php7/bin/phpize //生成configure文件
./configure --with-php-config=/usr/local/php7/bin/php-config
make && make install
/usr/local/php/bin/php -i |grep extension_dir //查看擴展模塊存放目錄,咱們能夠在php.ini中去自定義該路徑
vim /usr/local/php/etc/php.ini //增長一行配置(能夠放到文件最後一行)
extension = redis.so