1. 程式人生 > 實用技巧 >centos7 搭建LNMP平臺

centos7 搭建LNMP平臺

目錄

安裝PHP
安裝Nginx
安裝MySQL

以前寫的過時了,重新發一篇新的。

回到頂部
安裝PHP

下載官網:https://www.php.net/downloads.php

為了方便,我存了現成的

百度網盤:https://pan.baidu.com/s/1LlLDsoL6d9Yej0lA5Osqzg  提取碼:sxif

還有更省事的:file.fengyumeng.com/php-7.2.20.tar.gz

直接下載

wget file.fengyumeng.com/php-7.2.20.tar.gz

解壓

tar -zxvf php-7.2.20.tar.gz

移走

mv php-7.2.20 /usr/local/

安裝一些必要依賴

yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel

別急,還有一批

複製程式碼
yum -y install gcc
yum -y install gcc-c++
yum -y install libxslt-devel*
yum -y install mod_ssl
yum -y install libtool-ltdl*
yum -y install perl*
yum -y install autoconf
複製程式碼

切目錄

cd /usr/local/php-7.2.20/

配置

./configure --prefix=/usr/local/php7 --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-jpeg-dir --with-freetype-dir --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --without-pear --disable-phar

編譯

make

編譯出錯請檢視這篇部落格,一般都找得到答案

http://www.cnblogs.com/sweetXiaoma/p/5855732.html

安裝

make install

新增環境變數

vim /etc/profile

在最後一行下面加入

PATH=$PATH:/usr/local/php7/bin
export PATH

立即生效

source /etc/profile

檢視PHP版本

php -v

生成必要檔案

cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/php-fpm /usr/local/php7/etc/php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

編輯php.ini

vim /usr/local/php7/etc/php.ini

以下引數僅供參考

複製程式碼
date.timezone = PRC //設定時區
file_uploads = On //是否允許上傳
upload_tmp_dir = /tmp //上傳臨時目錄
max_file_uploads = 20 //單個請求最多上傳數量
upload_max_filesize = 10M //允許上傳檔案大小
post_max_size = 20M //允許post傳輸最大值(這個必須比upload_max_filezise大)
memory_limit = 128M //設定指令碼最大使用記憶體
error_reporting=E_ALL //輸出錯誤資訊
error_log = /var/log/php.log //錯誤日誌路徑
複製程式碼

建立日誌檔案

touch /var/log/php.log
chmod 755 /var/log/php.log

接下來是nginx。

回到頂部
安裝Nginx
下載地址

http://nginx.org/en/download.html

Mainline version 開發版
Stable version 穩定版
Legacy versions 歷史版

滑鼠移動到你要選擇的版本超連結上點右鍵 複製連結地址

切目錄

cd /usr/local/

下載

wget https://nginx.org/download/nginx-1.16.0.tar.gz

解壓

tar -zxvf nginx-1.16.0.tar.gz

進去

cd nginx-1.16.0

配置

./configure --with-http_stub_status_module --with-http_ssl_module

安裝

make && make install

開啟配置檔案

vim /usr/local/nginx/conf/nginx.conf

這一段都是包在server{}之中 如要配置多個域名 則複製貼上多個server{}程式碼塊

重寫url隱藏index.php

把下面這一段開啟註釋 並將其中的/scripts 修改為 $document_root

複製程式碼
server {
listen 80;
server_name www.abc.com abc.com;
root /var/www/abc;
location / {
if (!-e $request_filename) {
rewrite ^/index.php(.)$ /index.php?s=$1 last;
rewrite ^(.
)$ /index.php?s=$1 last;
}
index index.html index.htm index.php;
}
location ~ .php$ {
root /var/www/abc;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
複製程式碼
儲存退出

配置php-fpm

vim /usr/local/php7/etc/php-fpm.d/www.conf

把裡面的user group 兩行 改為nobody 或者是系統中存在的使用者

user = nobody
group = nobody

啟動php-fpm,載入php.ini

/usr/local/php7/sbin/php-fpm -c /usr/local/php7/etc/php.ini

注意 如果修改了php.ini則每次需要殺掉php-fpm程序再重新啟動php-fpm,PHP的解析執行靠的是這傢伙,不靠nginx。

ps -ef | grep php-fpm
kill -9 上一條命令查到的PID

編寫服務指令碼

vim /etc/init.d/nginx

貼上以下程式碼

複製程式碼

!/bin/bash

nginx Startup script for the Nginx HTTP Server

it is v.0.0.2 version.

chkconfig: - 85 15

description: Nginx is a high-performance web and proxy server.

It has a lot of features, but it's not for everyone.

processname: nginx

pidfile: /usr/local/nginx/logs/nginx.pid

config: /usr/local/nginx/conf/nginx.conf

nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"

Source function library.

. /etc/rc.d/init.d/functions

Source networking configuration.

. /etc/sysconfig/network

Check that networking is up.

[ "${NETWORKING}" = "no" ] && exit 0
[ -x $nginxd ] || exit 0

Start nginx daemons functions.

start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}

Stop nginx daemons functions.

stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}

reload nginx service functions.

reload() {
echo -n $"Reloading $prog: "
#kill -HUP cat ${nginx_pid}
killproc $nginxd -HUP
RETVAL=$?
echo
}

See how we were called.

case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
複製程式碼

設定許可權

chmod 755 /etc/init.d/nginx

加入開啟自啟

vi /etc/rc.local

在末尾新增一行

/usr/local/nginx/sbin/nginx

服務命令啟動

/etc/init.d/nginx start

加入開機啟動

chkconfig nginx on

然後你就可以使用以下服務命令了

systemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl reload nginx
systemctl restart nginx

回到頂部
安裝MySQL
安裝mysql源

yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

安裝mysql

yum install mysql-community-server

啟動mysql

systemctl start mysqld

獲取初始密碼

grep 'temporary password' /var/log/mysqld.log
得到這行A temporary password is generated for root@localhost: Jqqskhz1Wr (root@localhost:後面就是預設密碼 只需複製 下一步輸入密碼的時候貼上即可)

進入mysql

mysql -uroot -p

第一時間修改密碼

SET PASSWORD = PASSWORD('123456//ZZZjjj');
密碼必須複雜 需包含大小寫特殊符號,否則無法修改成功

開放遠端連線

use mysql;
update user set host = '%' where user = 'root';
百分號相當於*號,意思是全部放行,也可改為IP地址則只允許此IP連線,也可以設定為192.168.%.%或者192.168.0.1/9代表允許一個ip段進行連線,也可以多加幾條資料設定不同ip允許連線。

MySQL許可權分配

create user 'myqiutian'@'%' IDENTIFIED BY '*********';
建立一個使用者為myqiutian,因為用的%所以任何IP都可以登入,但登入後卻無法看到資料庫,新增使用者所有許可權預設關閉。

懶人專用語句

grant all on . to myqiutian;
設定該使用者所有資料庫所有表擁有所有許可權

如果你真的是懶人,下面的就不用看了,直接跳到最後一個命令 重新整理許可權 ,執行完就可以下班了。

grant select on A資料庫.* to myqiutian;
授權myqiutian這個使用者可以檢視A資料庫裡的所有表,但是僅限於A資料庫,也僅限於檢視。

grant insert on A資料庫.user to myqiutian;
授權myqiutian這個使用者可以對A資料庫裡的user表進行insert操作,但僅限於user表,也僅限於select和insert操作。

撤銷許可權

revoke insert on A資料庫.user from myqiutian;
注意:撤銷許可權之前最好用show grants for myqiutian;這條sql查一下該使用者有哪些許可權,增加的什麼許可權就撤什麼許可權,你增加的insert就不能撤銷all。

MySQL許可權工作流程:
--------->使用者連線MySQL
--------->查詢user表 核對賬號密碼 檢查host欄位 是否允許你的ip進行連線
--------->查詢user表 其他許可權欄位 值若為Y 代表使用者對所有資料庫所有表所有欄位都擁有該許可權 若有值為N 則往下走
--------->查詢db表 庫許可權控制表 獲取該使用者對哪些庫擁有哪些許可權 這張表裡一條記錄代表一個庫
--------->查詢tables_priv表 獲取該使用者的表控制權限 同樣 如果db表中該使用者對A資料庫擁有insert許可權 那麼不管tables_priv表中如何設定 都不會影響該使用者的isnert許可權,如果tables_priv表中的單表許可權不為all,則繼續往下走
--------->查詢columns_priv表 欄位控制 可以設定對錶欄位的控制權限

四張表依次為 user db tables_priv columns_priv

注意:
如果user表中全為Y,那麼不會查詢下面的表。
user表中的select為N時,可以在db表中指定哪些庫可以被使用者看到。
但是無論是表控制還是欄位控制,上級許可權表(user表除外)的select欄位必須為Y。
而其他許可權如果上級表給出了設定,那麼不會採用下級表的設定。

重新整理許可權,使許可權立即生效

flush privileges;

別忘了這裡有一個配置檔案cat /etc/my.cnf 可以檢視儲存的資料與log的位置。

轉自:https://www.cnblogs.com/fengyumeng/p/11149035.html