LNMP及论坛搭建

一、LNMP

1.1 LNMP概述

LNMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LNMP是一个缩写词,具体包括Linux操作系统、nginx网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。

1.2 各组件作用

L:Linux,作为LNMP架构的基础,是另外三个组件的运行平台

N:nginx,提供前端页面,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容

M:MySQL,数据库,是开源关系型的数据库,主要用来保存用户的账号信息

P:PHP,开发动态页面的编程语言,解析动态页面,起到中间件(nginx和数据库之间)的作用

二、LNMP的安装

Matlab 复制代码
systemctl stop firewalld
setenforce 0

安装Nginx服务

参考上一篇Nginx网站服务博客

安装MySQL服务

1、安装Mysql环境依赖包

Matlab 复制代码
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

2、创建运行用户

Matlab 复制代码
useradd -M -s /sbin/nologin  mysql

3、编译安装

Matlab 复制代码
cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz

cd /opt/mysql-5.7.20/
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

make -j 4 && make install
echo 1 > /proc/sys/vm/drop_caches
Matlab 复制代码
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件

4、修改mysql 配置文件

Matlab 复制代码
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安装目录和配置文件的属主属组

Matlab 复制代码
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

6、设置路径环境变量

Matlab 复制代码
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
source /etc/profile

7、初始化数据库

Matlab 复制代码
cd /usr/local/mysql/bin/

./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

8、添加mysqld系统服务

Matlab 复制代码
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld

9、修改mysql 的登录密码

Matlab 复制代码
mysqladmin -u root -p password "123456"

10、授权远程登录

Matlab 复制代码
mysql -u root -p123456

grant all privileges on *.* to 'root'@'%' identified by '123456';   
#授予root用户可以在所有终端远程登录,使用的密码是123456,并对所有数据库和所有表有操作权限
flush privileges; 
#刷新权限

安装配置 PHP 解析环境

1、安装环境依赖包

Matlab 复制代码
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

2、编译安装

Matlab 复制代码
cd /opt
tar jxvf php-7.1.10.tar.bz2

cd php-7.1.10
./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

make -j 4 && make install

3、路径优化

Matlab 复制代码
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

4、调整PHP配置文件

php有三个配置文件:

php.ini 主配置文件

php-fpm.conf 进程服务配置文件

www.conf 扩展配置文件

调整主配置文件:

Matlab 复制代码
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini	
vim /usr/local/php/lib/php.ini

--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

php -m  #验证安装的模块

调整进程服务配置文件:

Matlab 复制代码
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf

--17行--去掉";"注释
pid = run/php-fpm.pid

调整扩展配置文件:

Matlab 复制代码
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

5、启动php-fpm

Matlab 复制代码
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
netstat -antp | grep 9000

6、配置 Nginx 支持 PHP 解析

Matlab 复制代码
cd /usr/local/nginx/conf/
vim nginx.conf

--65行--取消注释,修改
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;	
#将 /scripts 修改为nginx的工作目录
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  
#$document_root 代表当前请求在root指令中指定的值
	include        fastcgi_params;
}

systemctl restart nginx.service

7、验证PHP 测试页

Matlab 复制代码
vim /usr/local/nginx/html/index.php

<?php
phpinfo();
?>

浏览器访问http://20.0.0.61/index.php

8、验证数据库工作是否正常

Matlab 复制代码
mysql -u root -p 

CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

vim /usr/local/nginx/html/index.php   

<?php
$link=mysqli_connect('20.0.0.61','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

浏览器访问http://20.0.0.61/index.php

部署 Discuz!社区论坛 Web 应用

1、解压论坛压缩包

Matlab 复制代码
cd /opt
unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/

2、调整论坛目录的权限

Matlab 复制代码
cd /usr/local/nginx/html/bbs/
chown -R nginx ./config/
chown -R nginx ./data/
chown -R nginx ./uc_client/
chown -R nginx ./uc_server/
或
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/ 

3、浏览器访问验证

Matlab 复制代码
论坛页面访问
http://20.0.0.61/bbs/install/index.php
-------------------------------------------------------------------------------------------
数据库服务器:localhost  
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123
-------------------------------------------------------------------------------------------
访问论坛页面
http://20.0.0.61/bbs/index.php
http://20.0.0.61/bbs/admin.php
相关推荐
Fcy6485 小时前
Linux下 数据链路层详解(从以太网到ARP协议)
linux·mac·以太网·数据链路层·arp
集智飞行5 小时前
解决mavros2 ros2版本cpu占用高的问题
java·服务器·前端
Java后端的Ai之路6 小时前
昇腾NPU显存管理避坑指南:从npu-smi输出精准识别空闲卡的底层逻辑与实战
服务器·网络·数据库·npu·大模型服务
YH行业报告分析6 小时前
2026电缆铺设设备市场:自动化敷设与电网升级驱动增长
运维·自动化
ajassi20007 小时前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
linux 进程信号(下)
linux·运维·服务器
skywalk81637 小时前
在FreeBSD系统的linux仿真环境下安装和使用kiro 这个亚马逊的AI agent
linux·人工智能·freebsd·kiro
Mikko77 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋7 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm8 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase