1. 程式人生 > 其它 >Linux--編譯安裝LNMP架構

Linux--編譯安裝LNMP架構

編譯安裝LNMP

http://nginx.org/en/download.html/nginx-1.20.2.tar.gz

https://github.com/thkukuk/rpcsvc-proto/releases/rpcsvc-proto-1.4.tar.gz

http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-boost-5.7.34.tar.gz

https://www.php.net/downloads.php/php-7.4.27.tar.gz

https://gitee.com/3dming/DiscuzL/attach_files/Discuz_X3.4_SC_UTF8_20211124.zip

http://mirror.centos.org/centos-7/7/cloud/x86_64/openstack-queens/Packages/o/oniguruma-6.7.0-1.el7.x86_64.rpm

http://mirror.centos.org/centos-7/7/cloud/x86_64/openstack-queens/Packages/o/oniguruma-devel-6.7.0-1.el7.x86_64.rpm

先刷個初始化指令碼

[root@localhost ~]# sh initalize.sh

一、LNMP架構的編譯安裝

1. 安裝nginx服務

(1)關閉防火牆

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@localhost ~]# setenforce 0

setenforce: SELinux is disabled

(2)安裝依賴包

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make

(3)建立執行使用者

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

(4)編譯安裝

[root@localhost ~]# cd /opt

[root@localhost opt]# tar zxvf nginx-1.20.2.tar.gz -C /opt

[root@localhost opt]# cd nginx-1.20.2/

[root@localhost nginx-1.20.2]# ./configure \

> --prefix=/usr/local/nginx \

> --user=nginx \

> --group=nginx \

> --with-http_stub_status_module

[root@localhost nginx-1.20.2]# make -j 2 && make install

要先把紅色的包下好,網站已給

(5)優化路徑

[root@localhost nginx-1.20.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

(6)新增nginx系統服務

[root@localhost nginx-1.20.2]# vim /lib/systemd/system/nginx.service

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

[root@localhost nginx-1.20.2]# chmod 754 /lib/systemd/system/nginx.service

[root@localhost nginx-1.20.2]# systemctl start nginx.service

[root@localhost nginx-1.20.2]# systemctl enable nginx.service

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

2. 安裝mysql服務

(1)安裝mysql環境依賴包

[root@localhost nginx-1.20.2]# yum install -y \

ncurses-devel \

perl-Data-Dumper \

git \

bison \

openssl-devel \

libtirpc-devel \

cmake

(2)建立執行使用者

[root@localhost nginx-1.20.2]# useradd -M -s /sbin/nologin mysql

(3)編譯安裝

[root@localhost nginx-1.20.2]# cd /opt

[root@localhost opt]# tar zxvf mysql-boost-5.7.34.tar.gz

[root@localhost opt]# cd /opt/mysql-5.7.34/

[root@localhost mysql-5.7.34]# cmake \

-DCMAKE_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_EXTRA_CHARSETS=all \

-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 mysql-5.7.34]# make -j 2 && make install

(4)修改mysql配置檔案

[root@localhost mysql-5.7.34]# vim /etc/my.cnf

#刪除全部內容後編輯

[client]

port = 3306

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/mysqld.pid

socket=/usr/local/mysql/mysql.sock

bind-address = 0.0.0.0

skip-name-resolve

max_connections=2048

default-storage-engine=INNODB

max_allowed_packet=16M

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

(5)更改mysql安裝目錄和配置檔案的屬主陣列

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

[root@localhost mysql-5.7.34]# chown mysql:mysql /etc/my.cnf

(6)設定路徑環境變數

[root@localhost mysql-5.7.34]#

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile

[root@localhost mysql-5.7.34]# source /etc/profile

(7)初始化資料庫

[root@localhost mysql-5.7.34]# cd /usr/local/mysql/bin/

[root@localhost bin]# ./mysqld \

> --initialize-insecure \

> --user=mysql \

> --basedir=/usr/local/mysql \

> --datadir=/usr/local/mysql/data

(8)新增mysqld系統服務

[root@localhost bin]#

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

[root@localhost bin]# systemctl daemon-reload

[root@localhost bin]# systemctl start mysqld.service

[root@localhost bin]# systemctl enable mysqld

Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.

(9)修改mysql的登入密碼

[root@localhost bin]# mysqladmin -u root -p password "abc123"

Enter password:

mysqladmin: [Warning] Using a password on the command line interface can be insecure.

Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

(10)授權遠端登入

[root@localhost bin]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.7.34 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';

Query OK, 0 rows affected, 1 warning (0.00 sec)

3. 安裝配置php解析環境

(1)安裝環境依賴包

[root@localhost bin]# yum -y install gd \

> libjpeg libjpeg-devel \

> libpng libpng-devel \

> freetype freetype-devel \

> libxml2 libxml2-devel \

> zlib zlib-devel \

> curl curl-devel \

> openssl openssl-devel

> sqlite-devel

https://blog.csdn.net/Kangshuo2471781030/article/details/107241779

rpm -ivh oniguruma-*

(2)編譯安裝,以下的截圖是8.0

[root@localhost bin]# cd /opt

[root@localhost opt]# tar jxvf php-7.4.27.tar.bz2

[root@localhost opt]# cd php-7.4.27

[root@localhost php-7.4.27]# ./configure \

> --prefix=/usr/local/php \

> --with-mysql-sock=/usr/local/mysql/mysql.sock \

> --with-mysqli \

> --with-zlib \

> --with-curl \

> --with-gd \

> --with-jpeg-dir \

> --with-png-dir \

> --with-freetype-dir \

> --with-openssl \

> --enable-fpm \

> --enable-mbstring \

> --enable-xml \

> --enable-session \

> --enable-ftp \

> --enable-pdo \

> --enable-tokenizer \

> --enable-zip

[root@localhost php-7.4.27]# make -j 2 && make install

(3)路徑優化

[root@localhost php-7.4.27]# ln -s /usr/local/php/bin/* /usr/local/bin/

[root@localhost php-7.4.27]# ln -s /usr/local/php/sbin/* /usr/local/sbin/

(4)調整php配置檔案

php有三個配置檔案,分別是:

主配置檔案php.ini

程序服務配置檔案php-fpm.conf

擴充套件配置檔案www.conf

1.調整主配置檔案

[root@localhost php-7.4.27]# cp /opt/php-7.4.27/

php.ini-development /usr/local/php/php.ini

#在測試環境時使用php.ini-development檔案,而在生產環境時使用php.ini-production檔案

[root@localhost php-7.4.27]# vim /usr/local/php/lib/php.ini

#1170行,修改

mysqli.default_socket = /usr/local/mysql/mysql.sock

#939行,取消註釋,修改

date.timezone = Asia/Shanghai

[root@localhost php-7.4.27]# php -m #驗證安裝的模組

[PHP Modules]

Core

ctype

curl

date

dom

fileinfo

filter

ftp

gd

hash

iconv

json

libxml

mbstring

mysqli

mysqlnd

openssl

pcre

PDO

pdo_sqlite

Phar

posix

Reflection

session

SimpleXML

SPL

sqlite3

standard

tokenizer

xml

xmlreader

xmlwriter

zip

zlib

[Zend Modules]

1171行

966行

2.調整程序服務配置檔案

[root@localhost php-7.4.27]# cd /usr/local/php/etc/

[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

[root@localhost etc]# vim php-fpm.conf

#17行,刪除註釋符號";"

pid = run/php-fpm.pid

17行

3.調整擴充套件配置檔案

[root@localhost etc]# cd /usr/local/php/etc/php-fpm.d/

[root@localhost php-fpm.d]# cp www.conf.default www.conf

(5)啟動php-fpm

PHP-FPM(FastCGI Process Manager:FastCGI 程序管理器)是一個 PHPFastCGI 管理器, 由於Nginx伺服器不能處理動態頁面,需要由 Nginx 把動態請求交給 php-fpm 程序進行解析。

[root@localhost php-fpm.d]#

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

[root@localhost php-fpm.d]# netstat -anpt | grep 9000

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 33883/php-fpm: mast

[root@localhost php-fpm.d]# cd /opt/php-7.4.27/sapi/fpm

[root@localhost fpm]# cp php-fpm.service /usr/lib/systemd/system/php-fpm.service

[root@localhost fpm]# systemctl restart php-fpm.service

(6)配置nginx支援php解析

[root@localhost fpm]# vim /usr/local/nginx/conf/nginx.conf

#65行-71行,取消註釋,修改第69行,將/scripts 修改為nginx的工作目錄

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

include fastcgi_params;

}

[root@localhost fpm]# systemctl restart nginx.service

(7)驗證php測試頁

[root@localhost fpm]# vim /usr/local/nginx/html/index.php

<?php

phpinfo();

?>

(8)驗證資料庫工作是否正常

[root@localhost fpm]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 6

Server version: 5.7.34 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE bbs;

Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.03 sec)

mysql> quit

Bye

[root@localhost fpm]# vim /usr/local/nginx/html/index.php

<?php

$link=mysqli_connect('192.168.122.10','bbsuser','admin123');

if($link) echo "<h1>Success!!</h1>";

else echo "Fail!!";

?>

因為論壇3.4暫不支援php.8.0,所以降級7.0

OK了,其餘操作不需要再做了,只需重啟服務即可

4.部署Discuz!社群論壇web應用

(1)解壓論壇軟體

[root@localhost fpm]# cd /opt

[root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis

(2)新建web目錄

[root@localhost opt]# cd /opt/dis/dir_SC_UTF8/

[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs/

(3)調整論壇目錄的許可權

[root@localhost dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/

[root@localhost bbs]# chmod -R 777 ./{config,data,uc_server,uc_client}

(4)安裝bbs

如果伺服器地址為127.0.0.1或其他地址,需要授權

如果想重新安裝論壇,請執行

rm -rf /usr/local/nginx/html/bbs/data/install.lock

(5)訪問

使用者訪問頁面:http://IP地址/bbs/index.php

管理訪問頁面:http://IP地址/bbs/admin.php

配置並安裝phpMydmin

mysql -u root -p

CREATE DATABASE myadm;

GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';

GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';

flush privileges;

unzip phpMyAdmin-4.9.7-all-languages.zip -d /opt/

mv phpMyAdmin-4.9.7-all-languages /usr/local/httpd/htdocs/myadm

cd /usr/local/httpd/htdocs/myadm

cp config.sample.inc.php config.inc.php

vi config.inc.php

$cfg['Servers'][$i]['host'] = '127.0.0.1'; //把localhost 改成IP 32行

http://192.168.10.2/myadm