博客地址:https://m0ng0lfalcon.github.io/
Linux 環(huán)境配置
借鑒自:https://www.cnblogs.com/hangzhounec/p/9152604.html
一忿磅、Linux 的安裝
-
鏡像的準(zhǔn)備
xubuntu-18.04.2-desktop-i386.iso
開始安裝
選擇英文版的安裝
一路按默認(rèn)的進(jìn)行塘雳。
正式安裝
- 安裝完成
二、Nginx 的安裝
-
命令安裝:
sudo apt-get install nginx
-
修改 Nginx 配置文件
sudo vim /etc/nginx/sites-available/default
-
修改如下內(nèi)容
- 修改41行:
修改配置文件1.png
- 修改41行:
- 修改 56 ~ 63 行
修改配置文件2.png
-
重啟 Nginx 服務(wù)
sudo service nginx restart
-
測(cè)試 Nginx
成功.png
三、php 安裝
-
命令安裝
sudo apt-get install php7.2 php7.2-fpm php7.2-mysql
-
修改 php 配置文件
sudo vim /etc/php/7.2/fpm/pool.d/www.conf
-
修改一下內(nèi)容彤路,修改 37 行
修改配置文件.png
-
重啟php服務(wù)
sudo service php7.0-fpm start
-
測(cè)試php服務(wù)
在
/var/www
文件夾下創(chuàng)建info.php-
輸入一下代碼
<?php phpinfo(); ?>
-
在瀏覽器打開:
localhost/info.php
php配置成功.png
四、MySQL 安裝
-
命令安裝
sudo apt-get install mysql-server mysql-client
-
更新密碼:
sudo mysql use mysql; update mysql.user set authentication_string=PASSWORD('New_Password'), plugin='mysql_native_password' where user='root'; # 這一步主要是在設(shè)置新密碼的時(shí)候兵拢,順便把用戶root的plugin進(jìn)行修改介褥,修改為默認(rèn)的 mysql_native_password,然后在刷新權(quán)限設(shè)置。 flush privileges;
-
重啟 MySQL 服務(wù)
sudo service mysql restart
-
測(cè)試 MySQL
在
/var/www
文件夾下創(chuàng)建mysql.php-
輸入一下代碼:
<?php echo '<h1>Page loaded with PHP!</h1>'; $conn = mysqli_connect('localhost', 'site_admin', 'your_password'); if(!$conn){ die('<h2>Error: </h2>' . mysqli_connect_error()); }else{ echo '<h2>Successfully Connected to MySQL Database!</h2>'; } ?>
-
瀏覽器打開:
localhost/mysql.php
mysql成功鏈接.png
五曲聂、Nginx 安全加固
借鑒自:https://blog.51cto.com/purplegrape/1651656
備份
/etc/nginx/sites-available/default
-
屏蔽IP (屏蔽除中國(guó)以及美國(guó)以外的IP)
if ( $geoip_country_code !~ ^(CN|US)$ ) { return 403; }
-
封殺各種user-agent
if ($http_user_agent ~* "java|python|perl|ruby|curl|bash|echo|uname|base64|decode|md5sum|select|concat|httprequest|httpclient|nmap|scan" ) { return 403; } if ($http_user_agent ~* "" ) { return 403; }
-
封殺特定的url
特定的文件擴(kuò)展名霹购,比如.bak
location ~* \.(bak|swp|save|sh|sql|mdb|svn|git|old)$ { rewrite ^/(.*)$ $host permanent; }
知名程序,比如phpmyadmin
location /(admin|phpadmin|status) { deny all; }
-
封殺特定的http方法和行為,比如
if ($request_method !~ ^(GET|POST|HEAD)$ ) { return 405; } if ($http_range ~ "\d{9,}") { return 444; }
-
url 參數(shù)過濾敏感字,比如
if ($query_string ~* "union.*select.*\(") { rewrite ^/(.*)$ $host permanent; } if ($query_string ~* "concat.*\(") { rewrite ^/(.*)$ $host permanent; }
Windows下的環(huán)境配置
一朋腋、Nginx的安裝
借鑒自:https://www.cnblogs.com/jiangwangxiang/p/8481661.html
-
到官網(wǎng)http://nginx.org/下載最新的穩(wěn)定版本:
nginx 下載.png
- 下載之后解壓齐疙,得到如下:
-
啟動(dòng)Nginx:
- 雙擊nginx.exe運(yùn)行
- 命令行輸入
start nginx 或者 nginx.exe
-
檢查是否啟動(dòng):
瀏覽器輸入
http://localhost:80
安裝成功.png
-
關(guān)閉Nginx:
-
Nginx命令:
nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
-
taskkill命令:
taskkill /f /t /im nginx.exe
-
Nginx命令:
二、php的安裝
借鑒自:https://www.cnblogs.com/wwjchina/p/9804576.html
-
下載最新版的 php
網(wǎng)址:https://windows.php.net/download/
-
解壓:
解壓后.png
-
進(jìn)行配置 :
找到php.ini-development拷貝一份旭咽,并且重命名為php.ini
打開php.ini
搜索extension_dir配置項(xiàng)贞奋,去掉前面的分號(hào):
;
,并且把內(nèi)容改成php目錄下的ext的絕對(duì)路徑穷绵,例如:C:\Wnpm\php-7.3.7\ext
- 搜索cgi.fix_pathinfo配置項(xiàng)轿塔,同樣去掉分號(hào),設(shè)置為1
> `cgi.fix_pathinfo`是用來(lái)設(shè)置在cgi模式下PHP是否提供PATH_INFO信息仲墨。因?yàn)閚ginx默認(rèn)不會(huì)設(shè)置PATH_INFO的值勾缭,所以需要通過上面的方法來(lái)提供。
三目养、配置 Nginx + php
-
修改Nginx的配置文件
打開Nginx文件夾俩由,conf里的nginx.conf
-
修改如下內(nèi)容
配置文件1.png
下劃線部分改成自己放置網(wǎng)站的目錄
先把前面的#號(hào)給去掉,下劃線部分改成自己放置網(wǎng)站的目錄
-
在Windows下開啟Nginx&PHP服務(wù)比較麻煩癌蚁,所以我們需要用到RunHiddenConsole來(lái)隱藏運(yùn)行我們的Nginx服務(wù)跟PHP服務(wù)幻梯。
下載地址:http://www.inbeijing.org/wp-content/uploads/2015/06/RunHiddenConsole.zip
創(chuàng)建兩個(gè) bat 文件
start.bat
@echo off REM Windows 下無(wú)效 REM set PHP_FCGI_CHILDREN=5 REM 每個(gè)進(jìn)程處理的最大請(qǐng)求數(shù)兜畸,或設(shè)置為 Windows 環(huán)境變量 set PHP_FCGI_MAX_REQUESTS=1000 echo Starting PHP FastCGI... RunHiddenConsole C:\Wnpm\php-7.3.7\php-cgi.exe -b 127.0.0.1:9000 -c C:\Wnpm\php-7.3.7\php.ini echo Starting nginx... RunHiddenConsole C:\Wnpm\nginx-1.16.0\nginx.exe -p C:\Wnpm\nginx-1.16.0
stop.bat
@echo off echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul exit
-
測(cè)試php服務(wù)
在網(wǎng)站目錄下創(chuàng)建phpinfo.php文件
<?php phpinfo(); ?>
在瀏覽器打開
localhost/phpinfo.php
配置成功.png
四、安裝MySQL
借鑒自:https://www.runoob.com/mysql/mysql-install.html
-
下載MySQL
-
解壓后放到適當(dāng)?shù)奈恢美衤茫曳诺搅薔ginx跟php的同級(jí)目錄膳叨,目錄結(jié)構(gòu):
目錄結(jié)構(gòu).png
-
在mysql-8.0.17文件夾創(chuàng)建配置文件
[client] # 設(shè)置mysql客戶端默認(rèn)字符集 default-character-set=utf8 [mysqld] # 設(shè)置3306端口 port = 3306 # 設(shè)置mysql的安裝目錄 basedir=C:\\Wnpm\\mysql-8.0.17 # 設(shè)置 mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)的存放目錄,MySQL 8+ 不需要以下配置痘系,系統(tǒng)自己生成即可菲嘴,否則有可能報(bào)錯(cuò) # datadir=C:\\web\\sqldata # 允許最大連接數(shù) max_connections=20 # 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集 character-set-server=utf8 # 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎 default-storage-engine=INNODB
給Windows添加環(huán)境變量:
-
初始化數(shù)據(jù)庫(kù)
mysqld --initialize --console
得到初始化密碼
!QsgoT9)8fS2
啟動(dòng)MySQL服務(wù)
這里有一點(diǎn)要注意:管理員運(yùn)行cmd
-
登陸MySQL
mysql -h 主機(jī)名 -u 用戶名 -p
參數(shù)說(shuō)明:
- -h : 指定客戶端所要登錄的 MySQL 主機(jī)名, 登錄本機(jī)(localhost 或 127.0.0.1)該參數(shù)可以省略;
- -u : 登錄的用戶名;
- -p : 告訴服務(wù)器將會(huì)使用一個(gè)密碼來(lái)登錄, 如果所要登錄的用戶名密碼為空, 可以忽略此選項(xiàng)。
因?yàn)槭潜緳C(jī)
mysql -u root -p
用剛剛得到的密碼登陸
登陸.png
更改root的默認(rèn)密碼:
語(yǔ)法:
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
例子:mysqladmin -uroot -p123456 password 123
-
測(cè)試MySQL
測(cè)試代碼:
<?php echo '<h1>Page loaded with PHP!</h1>'; $conn = mysqli_connect('localhost', 'root', 'root'); if(!$conn){ die('<h2>Error: </h2>' . mysqli_connect_error()); }else{ echo '<h2>Successfully Connected to MySQL Database!</h2>'; } ?>
返回結(jié)果:
成功.png