源碼編譯安裝 LNMP 環境雖然便于自定義,但是對于小型伺服器來說,漫長的編譯時間讓人無法等待。如果能在 10 分鐘内搞定環境安裝,那就很好了。
1、配置yum源
CentOS 7 的 預設 yum 源裡的軟體包版本可能不是最新的,如果要安裝最新的軟體包就得配置下 yum 源。
配置 yum 源可以通過直接安裝 rpm (Red Hat Package Manager) 包,或者修改 Repository,本文講解通過安裝 rpm 方式。
1.1、安裝epel源
首先需要安裝 EPEL ( Extra Packages for Enterprise Linux ) yum 源,用以解決部分依賴包不存在的問題
[[email protected] ~]# yum -y install epel-release
1.2、安裝MySQL源
官方安裝MySQL源參考網址
https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html
安裝 rpm 包前需要導入 rpm-GPG-KEY 檔案,不然安裝過程會出錯。将 MySQL rpm-GPG-KEY 另存為 mysql_pubkey.asc 并導入
[[email protected] ~]# rpm --import mysql_pubkey.asc
導入後安裝 CentOS 7 的 MySQL rpm 包
[[email protected] ~]# rpm -Uvh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
1.3、安裝PHP源
PHP 最新的 rpm 官方yum源包位址
http://rpms.remirepo.net/
導入 PHP rpm-GPG-KEY (remi)
[[email protected] ~]# rpm --import http://rpms.remirepo.net/rpm-GPG-KEY-remi
安裝 PHP rpm (remi) 包
[[email protected] ~]# rpm -Uvh http://remi.mirrors.arminco.com/enterprise/remi-release-7.rpm
1.4、安裝 Nginx 源
官方安裝Nginx源參考網址
http://nginx.org/en/linux_packages.html
導入 Nginx rpm-GPG-KEY
[[email protected] ~]# rpm --import http://nginx.org/packages/keys/nginx_signing.key
安裝 Nginx rpm 包
[[email protected] ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/rpmS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
到目前為止,yum 源已經安裝好了 ,接着進行下一步的配置。
2、修改相關的yum源檔案
MySQL yum 源預設是啟用的 MySQL-5.6,PHP yum 源預設都沒有啟用,Nginx yum 源預設是啟用的 Nginx-1.8。定位到 /etc/yum.repos.d/,對字尾為 .repo 的檔案進行編輯,修改 enabled 為 1 以啟用。
2.1、啟用 PHP-7.0的yum源
1、修改 /etc/yum.repos.d/remi.repo,将 [remi] 和 [remi-test] 下面的 enabled=0 改為 enabled=1;
2、修改 /etc/yum.repos.d/remi-php70.repo,将 [remi-php70] 下面的 enabled=0 改為 enabled=1;
[[email protected] ~]# sed -i "/remi\/mirror/{n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi.repo
[[email protected] ~]# sed -i "/test\/mirror/{n;n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi.repo
[[email protected] ~]# sed -i "/php70\/mirror/{n;s/enabled=0/enabled=1/g}" /etc/yum.repos.d/remi-php70.repo
到這一步 yum 配置就算完成了,清除并生成 yum緩存使之生效:
[[email protected] ~]# yum clean all
[[email protected] ~]# yum makecache
3、安裝 MySQL + PHP + Nginx + phpMyAdmin
yum 源已經配置好了,現在直接安裝 MySQL + PHP + Nginx + phpMyAdmin
[[email protected] ~]# 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-* 可以根據實際使用情況選擇安裝
4、修改MySQL + PHP + Nginx + phpMyAdmin的配置檔案
安裝完成後,進行下一步的環境配置。
MySQL 配置檔案在 /etc/my.cnf.d/
PHP 配置檔案在 /etc/php-fpm.d/
Nginx 配置檔案在 /etc/nginx/
phpMyAdmin 的配置檔案在 /etc/phpMyAdmin/
4.1、配置 MySQL
MySQL 配置檔案保持預設,運作一次安全配置即可。
4.1.1、啟動 MySQL
[[email protected] ~]# systemctl start mysqld.service
4.1.2、安全配置 MySQL
設定 root 密碼、删除匿名使用者、禁止 root 遠端登入、删除 test 資料庫、重新加載權限表,一路 Y 下去
[[email protected] ~]# mysql_secure_installation
4.2、配置 PHP
PHP 預設配置檔案使用的是監聽 9000 端口進行通信,針對小型單一、沒有做負載均衡的伺服器,可以使用 unix sock 方式通信。使用 unix sock 方式需要修改 PHP 配置檔案。
#更換監聽方式
listen = /dev/shm/php-fpm-default.sock
#監聽隊列最大長度為不限
listen.backlog = -1
#指定監聽使用者和使用者組(需存在)
listen.owner = www
listen.group = www
啟動 PHP-FPM:
[[email protected] ~]# systemctl start php-fpm.service
4.3、配置 Nginx
讓伺服器預設通路顯示為 400 提示頁。
建立名為 nginx-default.conf 的配置檔案
[[email protected] ~]# touch /etc/nginx/conf.d/nginx-default.conf
編輯配置檔案
[[email protected] ~]# vim /etc/nginx/conf.d/nginx-default.conf
#将以下資訊輸入到 nginx-default.conf
server
{
listen 80 default;
return 400;
}
防火牆放行 HTTP 端口通路:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
啟動 Nginx
[[email protected] ~]# systemctl start nginx.service
這時,在浏覽器位址欄輸入目前伺服器 IP 就會看到一個 400 的提示頁面了。
4.4、綁定域名+站點目錄+儲存日志+運作 PHP的配置檔案
server
{
#監聽80端口
listen 80;
#綁定域名 default.com 和 www.default.com
server_name default.com www.default.com;
#設定首頁檔案,越前優先級越高
index index.html index.htm index.php;
#設定網頁編碼
charset utf-8;
#設定站點根目錄
root /home/wwwroot/default;
#運作 PHP
location ~ .*\.php$
{
#預設使用9000端口和PHP通信
fastcgi_pass 127.0.0.1:9000
#使用 unix sock 和PHP通信
#fastcgi_pass unix:/dev/shm/php-fpm-default.sock;
fastcgi_index index.php;
#PHP文檔根目錄
fastcgi_param DOCUMENT_ROOT /home/wwwroot/default;
#PHP 腳本目錄
fastcgi_param SCRIPT_FILENAME /home/wwwroot/default$fastcgi_script_name;
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;
}
4.5、配置 phpMyAdmin
[[email protected] ~]# 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 目錄
[[email protected] ~]# cp -a /usr/share/phpMyAdmin /home/wwwroot/default/
替換連接配接形式為目錄
[[email protected] ~]# rm -rf /home/wwwroot/default/phpMyAdmin/doc/html
[[email protected] ~]# cp -a /usr/share/doc/phpMyAdmin-*/html /home/wwwroot/default/phpMyAdmin/doc/
5、一鍵腳本
上面已經講解了如何配置和安裝,但是不能每次都這麼一步一步來吧?為了節省時間,寫了一個一鍵安裝管理腳本,可選擇安裝 Nginx 1.8/1.9、 MySQL 5.5/5.6/5.7 和 PHP 5.5/5.6/7.0
安裝
[[email protected] ~]# yum install -y unzip
[[email protected] ~]# wget https://github.com/maicong/LNMP/archive/master.zip
[[email protected] ~]# unzip master.zip
[[email protected] ~]# cd LNMP-master
[[email protected] ~]# bash lnmp.sh
輸出到指定檔案
[[email protected] ~]# bash lnmp.sh 2>&1 | tee lnmp.log
管理站點
[[email protected] ~]# service vhost (start,stop,list,add,edit,del,exit)
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 的站點
[[email protected] ~]# service vhost add domain domain.com,www.domain.com index.html,index.htm,index.php nomal.conf on
啟動辨別為 domain 的站點
[[email protected] ~]# service vhost start domain
停止辨別為 domain 的站點
[[email protected] ~]# service vhost stop domain
編輯辨別為 domain 的站點
[[email protected] ~]# service vhost edit domain
删除辨別為 domain 的站點
[[email protected] ~]# service vhost del domain
列出所有站點
[[email protected] ~]# service vhost list
備份資料
[[email protected] ~]# service vbackup (start,list,del)
start 添加
list 列出
del 删除
示例:
添加一個新的備份
[[email protected] ~]# service vbackup start
列出備份檔案
[[email protected] ~]# service vbackup list
删除一個備份
[[email protected] ~]# service vbackup del name.tar.gz