1. 程式人生 > >LNMP的配置與優化

LNMP的配置與優化

一、LNMP的下載

LNMP一鍵安裝包是一個用Linux Shell編寫的可以為CentOS/RadHat/Fedora、Debian/Ubuntu/Raspbian/Deepin VPS或獨立主機安裝LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生產環境的Shell程式。同時提供一些實用的輔助工具如:虛擬主機管理、FTP使用者管理、Nginx、MySQL/MariaDB、PHP的升級、常用快取元件Redis、Xcache等的安裝、重置MySQL root密碼、502自動重啟、日誌切割、SSH防護DenyHosts/Fail2Ban、備份等許多實用指令碼。

官方網站為 https://www.lnmp.org/

最新穩定版本: LNMP 1.3

完整版:http://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz (478MB)

 

二、常用配置

1. 啟用PATH_INFO支援

該功能用於ThinkPHP開發

網站配置目錄 ./usr/local/nginx/conf/vhost/www.fangbei.org.conf

開啟並新增如下紅包部分

複製程式碼
server
    {
        listen 80;
        #listen [::]:80;
        server_name 
www.fangbei.org; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/www.fangbei.org; include other.conf; #error_page 404 /404.html; include enable-php.conf; location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last
; } } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /\. { deny all; } access_log off; }
複製程式碼

 

2. 禁用mysql日誌

在MySQL資料庫中,mysql-bin.000001、mysql- bin.000002等檔案是資料庫的操作日誌,例如UPDATE一個表,或者DELETE一些資料,即使該語句沒有匹配的資料,這個命令也會儲存到日誌檔案中,還包括每個語句執行的時間,也會記錄進去的。

比如如下

複製程式碼
[[email protected] /]# cd /usr/local/mysql/var/
[[email protected] var]# ll
total 29964
drwx------ 2 mysql mysql     4096 Feb 21 17:42 100893722
-rw-r----- 1 mysql root      8477 Feb 21 18:41 www.fangbei.org.err
-rw-rw---- 1 mysql mysql        5 Feb 21 18:41 www.fangbei.org.pid
-rw-rw---- 1 mysql mysql 18874368 Feb 21 18:41 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Feb 21 18:41 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Feb 21 17:08 ib_logfile1
drwx------ 2 mysql mysql     4096 Feb 21 17:08 mysql
-rw-rw---- 1 mysql mysql    27735 Feb 21 17:08 mysql-bin.000001
-rw-rw---- 1 mysql mysql  1113246 Feb 21 17:08 mysql-bin.000002
-rw-rw---- 1 mysql mysql      264 Feb 21 17:08 mysql-bin.000003
-rw-rw---- 1 mysql mysql     1119 Feb 21 17:08 mysql-bin.000004
-rw-rw---- 1 mysql mysql      126 Feb 21 17:08 mysql-bin.000005
-rw-rw---- 1 mysql mysql   127076 Feb 21 18:41 mysql-bin.000006
-rw-rw---- 1 mysql mysql      107 Feb 21 18:41 mysql-bin.000007
-rw-rw---- 1 mysql mysql      133 Feb 21 18:41 mysql-bin.index
drwx------ 2 mysql mysql     4096 Feb 21 17:08 performance_schema
[[email protected] var]# 
複製程式碼

以及

複製程式碼
[[email protected] var]# cd /root
[[email protected] ~]# ll
total 491064
drwxr-xr-x 4 mysql mysql      4096 Feb 21 16:44 databases_backup_20170221164407
drwxr-xr-x 7 root  root       4096 May 27  2016 lnmp1.3-full
-rw-r--r-- 1 root  root  500932095 Dec  4 12:32 lnmp1.3-full.tar.gz
-rw-r--r-- 1 root  root    1898084 Feb 21 17:18 lnmp-install.log
[[email protected] ~]# cd databases_backup_20170221164407/
[[email protected] databases_backup_20170221164407]# ll
total 21284
drwx------ 2 mysql mysql     4096 Feb 21 16:38 100893722
-rw-r----- 1 mysql root      4654 Feb 21 16:44 www.fangbei.org.err
-rw-rw---- 1 mysql mysql 10485760 Feb 21 16:44 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Feb 21 16:44 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Feb 21 16:02 ib_logfile1
drwx------ 2 mysql mysql     4096 Feb 21 16:02 mysql
-rw-rw---- 1 mysql mysql    19758 Feb 21 16:02 mysql-bin.000001
-rw-rw---- 1 mysql mysql   765307 Feb 21 16:02 mysql-bin.000002
-rw-rw---- 1 mysql mysql      263 Feb 21 16:02 mysql-bin.000003
-rw-rw---- 1 mysql mysql      731 Feb 21 16:02 mysql-bin.000004
-rw-rw---- 1 mysql mysql      125 Feb 21 16:02 mysql-bin.000005
-rw-rw---- 1 mysql mysql      497 Feb 21 16:44 mysql-bin.000006
-rw-rw---- 1 mysql mysql      114 Feb 21 16:11 mysql-bin.index
[[email protected] databases_backup_20170221164407]# 
複製程式碼

這些檔案的生長速度是很快的,特別佔用伺服器資源。當伺服器資源不夠充足的情況下,我們可以選擇定期刪除這些日誌檔案,或者修改配置檔案,不讓日誌生成。

編輯my.cnf 檔案,命令:vi /etc/my.cnf
註釋掉 log-bin=mysql-bin 這個屬性

複製程式碼
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

# log-bin=mysql-bin
binlog_format=mixed
server-id    = 1
expire_logs_days = 10
複製程式碼

然後刪除上述日誌檔案

最後重啟 lnmp restart

 

3. 刪除.user.ini檔案

LNMP 1.2開始PHP防跨目錄限制使用.user.ini,該檔案在網站根目錄下,可以修改open_basedir的值來設定限制目錄的訪問。
.user.ini檔案無法直接修改,而且是隱藏檔案可能在winscp下可能無法看到。

當網站被刪除的時候,.user.ini可以用以下方法刪除

[[email protected]]# chattr -i ".user.ini"
[[email protected]]# chmod 777 ".user.ini"
[[email protected]]# rm ".user.ini"