天天看點

linux搭建lnnp_CentOS7快速安裝搭建LNMP環境

源碼編譯安裝 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

linux搭建lnnp_CentOS7快速安裝搭建LNMP環境