LNMP--mysql php安裝配置

weixin_50344811發表於2020-12-01

LNMP架構部署

前言
LNMP平臺就是Linux、Ngnix、MySQL、PHP的組合架構,需要Linux伺服器、MySQL資料庫、PHP解析環境
Nginx是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。Mysql是一個小型關係型資料庫管理系統。PHP是一種在伺服器端執行的嵌入HTML文件的指令碼語言。
本案例在單臺伺服器上部署LNMP環境

安裝Mysql

Mysql服務資料庫
安裝依賴包

[root@server1 ~]# yum -y install ncurses ncurses-devel bison cmake
ncurses ncurses-devel:字元終端下螢幕控制的基本庫 
bison :自動生成語法分析器程式
cmake :跨平臺的安裝編譯工具

建立執行使用者

[root@localhost ~]# useradd -s /sbin/nologin mysql

解壓縮檔案

[root@server1 ~]# tar zxvf mysql-boost-5.7.20.tar.gz 

編譯安裝

上傳mysql-boost-5.7.20.tar.gz到/opt目錄下
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxf mysql-boost-5.7.20.tar.gz
[root@localhost opt]# cd mysql-5.7.20/
[root@localhost mysql-5.7.20]# cmake \
-DMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

資料庫目錄進行許可權調整

[root@localhost local]# chown -R mysql.mysql /usr/local/mysql/

調整配置檔案

[root@localhost local]# vim /etc/my.cnf
[client]
port=3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

[mysql]
port=3306
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character_set_server=utf8
pid-file=/usr/local/mysql/mysql.pid
socket=/usr/local/mysql/mysql.sock
server-id=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

設定環境變數

[root@localhost ~]# 
echo "PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH" >> /etc/profile
[root@localhost ~]# echo "export PATH" >> /etc/profile
[root@localhost ~]# source /etc/profile

初始化資料庫

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/        ##將mysql服務啟動指令碼複製到systemd管理工具的目錄下,便於使用systemctl管理

開啟資料庫,檢查狀態

[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# netstat -ntap |grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      11260/mysqld

設定mysql密碼

[root@localhost mysql]# mysqladmin -u root -p password
Enter password:          ##初始密碼為空,直接回車
New password:           ##輸入新密碼“abc123”
Confirm new password:  ##確認新密碼“abc123”

登入資料庫

[root@localhost mysql]# mysql -u root -p   ##密碼是剛才設定的abc123

PHP解析環境的安裝

●配置網頁動靜分離,解析PHP,有兩種方法可以選擇
使用PHP的FPM模組
將訪問PHP頁面的Web請求轉交給Apache伺服器去處理
●較新版本的PHP已經自帶FPM模組,對PHP解析例項進行管理、優化解析效率
FastCGI將Http Server和動態指令碼語言分離開
Nginx專門處理靜態請求,轉發動態請求
PHP-FPM專門解析PHP動態請求
●單伺服器的LNMP架構通常使用FPM方式來解析PHP
●PHP編譯安裝步驟
1.安裝環境依賴包

[root@server1 ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel

 libjpeg libjpeg-devel :jpeg影像壓縮庫
libpng libpng-devel :png影像壓縮庫
freetype freetype-devel :字型引擎
libxml2 libxml2-devel :解析Xml程式庫
zlib zlib-devel :資料壓縮
curl curl-devel :傳輸工具
openssl openssl-devel :安全通訊

編譯安裝

[root@localhost opt]# tar xjvf php-7.1.10.tar.bz2	
[root@localhost opt]# cd php-7.1.10
[root@localhost php-7.1.10]# ./configure \
--prefix=/usr/local/php \  安裝路徑
--with-mysql-sock=/usr/local/mysql/mysql.sock \       ##連線資料庫
--with-mysqli \            呼叫mysql儲存過程       
--with-zlib \               開啟zlib函式庫
--with-curl \                呼叫curl規則
--with-gd \                  影像處理
--with-jpeg-dir \           支援jpeg格式
--with-png-dir \             支援png格式
--with-freetype-dir \       開啟字型引擎
--with-openssl \            開啟ssl套接字功能
--enable-fpm \                ##開啟php-fpm模組,使nginx能支援動態頁面
--enable-mbstring \       支援utf-8功能
--enable-xml \                支援xml檔案格式
--enable-session \          開啟會話
--enable-ftp \                  開啟ftp擴充套件
--enable-pdo \                訪問介面
--enable-tokenizer \       分詞器 
--enable-zip                    對zip檔案支援
make && make install

配置檔案編輯

[root@server1 ~]# cd php-7.1.10/
[root@server1 php-7.1.10]# ls -lh
[root@server1 php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@server1 php-7.1.10]# vi /usr/local/php/lib/php.ini   
[root@server1 php-7.1.10]# /usr/local/php/bin/php -m | wc -l

新增

mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

配置及優化FPM模組

[root@server1 php-7.1.10]# cd
[root@server1 ~]# cd /usr/local/php/etc
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# cd /usr/local/php/etc/php-fpm.d/
[root@server1 php-fpm.d]# cp www.conf.default www.conf
[root@server1 php-fpm.d]# cd /usr/local/php/etc/
[root@server1 etc]# vi php-fpm.conf
[root@server1 etc]# cd
pid = run/php-fpm.pid  #號去掉
[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini   手動啟動
[root@localhost etc]# netstat -ntap | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      9981/php-fpm: maste
[root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin/   讓/usr/local/php/bin/下生成的所有命令都連結到/usr/bin下
[root@localhost etc]# ps aux | grep -c "php-fpm"   ##檢視php-fpm程式數
4

配置Nginx支援PHP功能

[root@server1 ~]# vi /etc/nginx.conf 
[root@server1 ~]# nginx -t
[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# systemctl start nginx
修改
$document_root  (呼叫變數)

建立php網頁

[root@localhost ~]# vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
[root@localhost ~]# systemctl restart nginx
在網頁測試“http://20.0.0.14/index.php”

測試資料庫工作是否正常

[root@localhost ~]# mysql -u root -p
Enter password:
mysql> create database test;
mysql> grant all on test.* to 'testuser'@'%' identified by 'abc123';
mysql> grant all on test.* to 'bbsuser'@'localhost' identified by 'abc123';
mysql> flush privileges;
將原來的測試網頁內容更改如下:
[root@localhost ~]# vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('20.0.0.14','testuser','abc123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!!";
?>
[root@localhost ~]# systemctl restart nginx
在網頁測試“http://20.0.0.14/index.php”

在這裡插入圖片描述

部署Discuz!社群論壇Web應用

[root@localhost ~]# cd /opt
[root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip
[root@localhost opt]# cd dir_SC_UTF8
[root@localhost dir_SC_UTF8]# ls
readme  upload  utility
[root@localhost dir_SC_UTF8]# cp -r upload /usr/local/nginx/html/test
[root@localhost dir_SC_UTF8]# cd /usr/local/nginx/html/test
##賦予安裝論壇的檔案許可權##
[root@localhost test]# chown -R root:nginx ./config
[root@localhost test]# chown -R root:nginx ./data
[root@localhost test]# chown -R root:nginx ./uc_client
[root@localhost test]# chown -R root:nginx ./uc_server
[root@localhost test]# chmod -R 777 ./config
[root@localhost test]# chmod -R 777 ./data
[root@localhost test]# chmod -R 777 ./uc_client
[root@localhost test]# chmod -R 777 ./uc_server
[root@localhost test]# systemctl restart nginx

進入http://20.0.0.14/test/install/index.php來安裝論壇
安裝完畢再用http://20.0.0.14/test/index.php登入論壇
在這裡插入圖片描述
設定安裝目錄僅自己可見

[root@server1 ~]# cd /usr/local/nginx/html/bbs/
[root@server1 bbs]# ls -lh
[root@server1 bbs]# mv install/ install.lock
[root@server1 bbs]# chmod 600 install.lock/
[root@server1 bbs]# ls -lh

相關文章