源碼編譯安裝 LNMP 環境雖然便於自定義,可是對於小型服務器來講,漫長的編譯時間讓人沒法等待。若是能在 10 分鐘後內搞定環境安裝,再好很少了。php
那麼如何在 10 分鐘內快速安裝完 LNMP 環境呢,答案是 使用 YUM 安裝。css
官網給出的解釋html
yum is a software package manager that installs, updates, and removes packages on RPM-based systems. It automatically computes dependencies and figures out what things should occur to install packages. yum makes it easier to maintain groups of machines without having to manually update each one using rpm.mysql
Features include:linux
- Support for multiple repositories
- Simple configuration
- Dependency calculation
- Fast operation
- RPM-consistent behavior
- Package group support, including multiple-repository groups
- Simple interface
其中有兩條解釋很明顯,Simple configuration —— 簡單配置,Fast operation —— 快速操做。nginx
基於 YUM 的這種特性,那麼就能夠簡單粗暴的安裝 LNMP 環境了。git
配置 YUM 源github
CentOS 7 的 默認 YUM 源裏的軟件包版本可能不是最新的,若是要安裝最新的軟件包就得配置下 YUM 源。sql
配置 YUM 源能夠經過直接安裝 RPM (Red Hat Package Manager) 包,或者修改 Repository,本文講解經過安裝 RPM 方式。數據庫
首先須要安裝 EPEL ( Extra Packages for Enterprise Linux ) YUM 源,用以解決部分依賴包不存在的問題:
yum install -y epel-release
接着是 MySQL YUM 源,MySQL 官網給出了配置教程,由於本文章講解的是 CentOS 7,咱們只須要安裝對應的 RPM 包就好了。
安裝 RPM 包前須要導入 RPM-GPG-KEY 文件,否則安裝過程會出錯。
將 MySQL RPM-GPG-KEY 另存爲 mysql_pubkey.asc
並導入 :
rpm --import mysql_pubkey.asc
導入後安裝 CentOS 7 的 MySQL RPM 包:
rpm -Uvh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
而後是 PHP YUM 源,PHP 最新的 RPM 包,可使用 Remi's RPM repository。
rpm --import http://rpms.remirepo.net/RPM-GPG-KEY-remi
安裝 PHP RPM (remi) 包:
rpm -Uvh http://remi.mirrors.arminco.com/enterprise/remi-release-7.rpm
最後是 Nginx YUM 源,Nginx 官網也給出了配置教程。
rpm --import http://nginx.org/packages/keys/nginx_signing.key
安裝 Nginx RPM 包:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
到目前爲止,YUM 源已經安裝好了 ,接着進行下一步的配置。
MySQL YUM 源默認是啓用的 MySQL-5.6,PHP YUM 源默認都沒有啓用,Nginx YUM 源默認是啓用的 Nginx-1.8。
定位到 /etc/yum.repos.d/
,對 後綴爲 .repo
的文件進行編輯,修改 enabled
爲 1
以啓用。
啓用 PHP-7.0 :
一、修改 /etc/yum.repos.d/remi.repo,將 [remi] 和 [remi-test] 下面的 enabled=0 改成 enabled=1;
二、修改 /etc/yum.repos.d/remi-php70.repo,將 [remi-php70] 下面的 enabled=0 改成 enabled=1;
sed -i "/remi\/mirror/{n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi.repo sed -i "/test\/mirror/{n;n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi.repo sed -i "/php70\/mirror/{n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi-php70.repo
到這一步 YUM 配置就算完成了,清除並生成 YUM 緩存使之生效:
yum clean all yum makecache
安裝 MySQL + PHP + Nginx + phpMyAdmin
YUM 源已經配置好了,如今直接安裝 MySQL + PHP + Nginx + phpMyAdmin:
yum install -y mysql-community-server nginx php php-bcmath php-fpm php-gd php-json php-mbstring php-mcrypt php-mysqlnd php-opcache php-pdo php-pdo_dblib php-pgsql php-recode php-snmp php-soap php-xml php-pecl-zip phpMyAdmin
注:上面安裝的 php-*
能夠根據實際使用狀況選擇安裝
安裝完成後,進行下一步的環境配置,MySQL 配置文件在 /etc/my.cnf.d/
,PHP 配置文件在 /etc/php-fpm.d/
,Nginx 配置文件在 /etc/nginx/
,phpMyAdmin 的配置文件在 /etc/phpMyAdmin/
。
配置 MySQL
MySQL 配置文件保持默認,運行一次安全配置便可。
啓動 MySQL:
systemctl start mysqld.service
安全配置 MySQL:
設置 root 密碼、刪除匿名用戶、禁止 root 遠程登陸、刪除 test 數據庫、從新加載權限表,一路 Y
下去
mysql_secure_installation
配置 PHP
PHP 默認配置文件使用的是監聽 9000 端口進行通訊,針對小型單1、沒有作負債均衡的服務器,可使用 unix sock 方式通訊。
使用 unix sock 方式須要修改 PHP 配置文件:
#更換監聽方式 listen = /dev/shm/php-fpm-default.sock #監聽隊列最大長度爲不限 listen.backlog = -1 #指定監聽用戶和用戶組(需存在) listen.owner = www listen.group = www
啓動 PHP-FPM:
systemctl start php-fpm.service
配置 Nginx
讓服務器默認訪問顯示爲 400 提示頁。
#新建名爲 nginx-default.conf 的配置文件 touch /etc/nginx/conf.d/nginx-default.conf #編輯配置文件 vi /etc/nginx/conf.d/nginx-default.conf
將如下信息輸入到 nginx-default.conf
server { listen 80 default; return 400; }
按下 Esc
,輸入 :x
保存並退出。
防火牆放行 HTTP 端口訪問:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --reload
啓動 Nginx:
systemctl start nginx.service
這時,在瀏覽器地址欄輸入當前服務器 IP 就會看到一個 400 的提示頁面了。
進階!綁定域名+站點目錄+保存日誌+運行 PHP的配置文件:
server { listen 80; #監聽80端口 server_name default.com www.default.com; #綁定域名 default.com 和 www.default.com index index.html index.htm index.php; #設置首頁文件,越前優先級越高 charset utf-8; #設置網頁編碼 root /home/wwwroot/default; #設置站點根目錄 #運行 PHP location ~ .*\.php$ { fastcgi_pass 127.0.0.1:9000 #默認使用9000端口和PHP通訊 #fastcgi_pass unix:/dev/shm/php-fpm-default.sock; #使用 unix sock 和PHP通訊 fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /home/wwwroot/default; #PHP 文檔根目錄 fastcgi_param SCRIPT_FILENAME /home/wwwroot/default$fastcgi_script_name; #PHP 腳本目錄 include fastcgi_params; try_files $uri = 404; } #設置文件過時時間 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$ { expires 30d; } #設置文件過時時間 location ~ .*\.(js|css)$ { expires 12h; } #設置文件訪問權限 location ~* /templates(/.*)\.(bak|html|htm|ini|old|php|tpl)$ { allow 127.0.0.1; deny all; } #設置文件訪問權限 location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ { deny all; } #保存日誌 access_log /var/log/nginx/default-access.log main; error_log /var/log/nginx/default-error.log crit; }
配置 phpMyAdmin
# 編輯配置文件 vi etc/phpMyAdmin/config.inc.php
修改如下內容:
$cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['port'] = '3306'; $cfg['Servers'][$i]['socket'] = '/var/lib/mysql/mysql.sock'; $cfg['Servers'][$i]['connect_type'] = 'socket'; $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['UploadDir'] = '/tmp'; $cfg['SaveDir'] = '/tmp';
若是Nginx使用的是上面的進階代碼,那麼把 phpMyAdmin
的目錄 複製到 /home/wwwroot/default/phpMyAdmin/
下面,就可經過 http://default.com/phpMyAdmin
訪問了:
#複製 phpMyAdmin 目錄 cp -a /usr/share/phpMyAdmin /home/wwwroot/default/ #替換鏈接形式爲目錄 rm -rf /home/wwwroot/default/phpMyAdmin/doc/html cp -a /usr/share/doc/phpMyAdmin-<span class="pl-k">*</span>/html /home/wwwroot/default/phpMyAdmin/doc/
上面已經講解了如何配置和安裝,可是不能每次都這麼一步一步來吧?爲了節省時間,麥蔥寫了一個一鍵安裝管理腳本,可選擇安裝 Nginx 1.8/1.9
、 MySQL 5.5/5.6/5.7
和 PHP 5.5/5.6/7.0
。
安裝
yum install -y unzip wget https://github.com/maicong/LNMP/archive/master.zip unzip master.zip cd LNMP-master bash lnmp.sh # 輸出到指定文件 # bash lnmp.sh 2>&1 | tee lnmp.log
管理站點
service vhost (start,stop,list,add,edit,del,exit) <domain> <server_name> <index_name> <rewrite_file> <host_subdirectory>
start
啓動stop
中止list
列出add
添加edit
編輯del
刪除exit
什麼都不作domain
domain.com,www.domain.com
index.html,index.htm,index.php
/etc/nginx/rewrite/
例如:nomal.conf
on
或者 off
示例:
#添加一個標識爲 domain 的站點 service vhost add domain domain.com,www.domain.com index.html,index.htm,index.php nomal.conf on #啓動標識爲 domain 的站點 service vhost start domain #中止標識爲 domain 的站點 service vhost stop domain #編輯標識爲 domain 的站點 service vhost edit domain #刪除標識爲 domain 的站點 service vhost del domain #列出全部站點 service vhost list
備份數據
service vbackup (start,list,del) <delete name.tar.gz>
start
添加list
列出del
刪除示例:
#添加一個新的備份 service vbackup start #列出備份文件 service vbackup list #刪除一個備份 service vbackup del name.tar.gz