m-zhuang

导航

基于 LAMP架构 搭建 Discuz 社区论坛Web应用

一、搭建 Apache 服务

1. 下载 Apache 软件源码包及插件

官网地址:http://httpd.apache.org/download.cgi

2. 编译安装 Apach

(1)解压源码包及插件

[root@localhost opt]#
tar -xf httpd-2.4.29.tar.bz2 
tar -xf apr-1.6.2.tar.gz 
tar -xf apr-util-1.6.0.tar.gz 

image-20230618131513154

(2)配置插件

将插件放到httpd目录的srclib目录下

注:httpd/srclib/目录是Apache HTTP Server 源代码中的一个重要目录,它包含了一些关键的第三方库和模块,对于 Apache服务器的开发和维护都非常重要。

[root@localhost opt]#
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

image-20230618132700309

(3)安装编译环境

① 首先配置在线yum源(阿里云)

[root@localhost yum.repos.d]#
wget http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache

②安装

编译插件 作用
gcc c 语言解释器
gcc-c++ c++ 的编译器
make 源码编译器(源码转换成二进制)
pcre pcre 是一个Perl 函数库,包含perl 兼容的正则表达式库
pcre-devel pcre 的接口开发包
expat-devel 用于支持网站解析HTML、XML文件
perl perl语言编译器
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre \
> pcre-devel \
> expat-devel \
> perl

image-20230618133857949

(4)设置安装路径和模块

cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]#
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

image-20230618135206574

(5)编译与安装

[root@localhost httpd-2.4.29]# 
make -j 4 && make install

# -j 是使用cpu数量 

image-20230618142244950

3. 优化服务命令

优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
这两条命令的实际效果是使得Apache HTTP服务器能够更好地融入到整个系统环境中,
提高了系统的可移植性、可维护性和可用性

[root@localhost opt]# 
ln -s /usr/local/httpd/conf/httpd.conf /etc
ln -s /usr/local/httpd/bin/* /usr/local/bin

[root@localhost opt]# 
vim /etc/init.d/httpd 
#!/bin/sh
# chkconfig: 35 85 21
# description:Apache is a World Wide Web server

image-20230618152236838

4. 加入系统管理

[root@localhost opt]# 
chkconfig --add httpd 

5. 配置 Apache 配置文件

httpd配置文件行 作用
52行 监听端口
197行 服务名称
221行 默认首页存放位置
255行 默认首页存放路径

检测配置文件语法:http -t 或 apache -t

[root@localhost opt]# 
vim /etc/httpd.conf 
# 第52行,监听本机80端口
 Listen 192.168.23.15:80

# 第197行,本机服务名称,如果有域名可以用域名加端口号
 ServerName 192.168.23.15:80

# 检测配置文件是否有误
httpd -t

image-20230618154241198

6. 开启服务并检查端口

[root@localhost opt]# 
service httpd start
netstat -antp | grep 80

image-20230618155107245

7. 检查是否可以访问

[root@localhost opt]# 
cat /usr/local/httpd/htdocs/index.html 

image-20230618155409228

image-20230618155724848

二、搭建 MySQL 服务

1. 下载 MySQL 源码包

官网地址:https://www.mysql.com/

2. 编译安装 MySQL

(1)解压源码包及插件

[root@localhost opt]# 
tar -xf mysql-5.7.17.tar.gz 
tar -xf boost_1_59_0.tar.gz 

image-20230618160851587

(2)配置插件

[root@localhost opt]# 
mv boost_1_59_0 /usr/local/boost

image-20230618161521283

(3)安装编译环境

编译插件 作用
gcc c 语言解释器
gcc-c++ c 语言编译器
ncurses 字符终端下图形互动功能的动态库
ncurses-devel ncurses开发包
bison 语法分析器
cmake mysql需要用cmake编译安装
[root@localhost opt]# 
yum -y install \
> gcc \
> gcc-c++ \
> ncurses \
> ncurses-devel \
> bison \
> cmake

image-20230618163305931

(4)设置安装路径及模块

模块 功能
-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_EXTRA_CHARSETS=all 指定支持其他字符集编码
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=/usr/local/boost 指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
DWITH_SYSTEMD=1 指定在编译安装一个软件时启用对 systemd 系统管理守护进程的支持
cd /opt/mysql-5.7.17
[root@localhost mysql-5.7.17]# 
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=/usr/local/boost \
> -DWITH_SYSTEMD=1

(5)编译与安装

[root@localhost mysql-5.7.17]# make -j 4 && make -j 4 install
① 出现报错

image-20230618170336867

② 解决方法

可能是内存不足导致

a. 清空缓存(一次不行,多清空几次即可)

echo 1 > /proc/sys/vm/drop_caches

/proc/sys/vm/drop_caches 是一个系统内核参数,它可以用于清除 Linux 系统的缓存页。通过修改该文件中的值,可以实现清除缓存的不同方式。具体来说,它包括以下三种值:

  • 0:什么都不做
  • 1:释放页面缓存
  • 2:释放节点和索引缓存

b. 加内存

3. 创建普通用户管理 MySQL

[root@localhost mysql-5.7.17]# 
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

image-20230618180151054

image-20230618175817259

4. 配置 MySQL 配置文件

[root@localhost mysql-5.7.17]# 
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
auto-rehash

[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

配置文件每行的含义

port = 3306

设置 MySQL 服务器使用的端口号,默认值为 3306。

default-character-set=utf8

设置 MySQL 服务器默认使用的字符集编码为 utf8。

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

指定 MySQL 使用的 Unix 套接字文件路径。

[mysql]

这个段名称表示设置的是 MySQL 客户端的选项。

port = 3306

设置 MySQL 客户端连接 MySQL 服务器使用的端口号,默认值为 3306。

default-character-set=utf8

设置 MySQL 客户端默认使用的字符集编码为 utf8。

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

指定 MySQL 客户端使用的 Unix 套接字文件路径。

auto-rehash

启用 MySQL 客户端的自动哈希表功能,可以更快地搜索和补全数据库、表名以及其他相关信息。

[mysqld]

这个段名称表示设置的是 MySQL 服务器的选项。

user = mysql

指定 MySQL 服务器的运行用户为 mysql 用户。

basedir=/usr/local/mysql

指定 MySQL 服务器的安装目录为 /usr/local/mysql。

datadir=/usr/local/mysql/data

指定 MySQL 存储数据文件的目录为 /usr/local/mysql/data。

port = 3306

同上,设置 MySQL 服务器使用的端口号,默认值为 3306。

character-set-server=utf8

设置 MySQL 服务器默认使用的字符集编码为 utf8。

pid-file = /usr/local/mysql/mysqld.pid

指定 MySQL 服务器进程 ID(PID)文件路径。

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

同上,指定 MySQL 使用的 Unix 套接字文件路径。

bind-address = 0.0.0.0

允许 MySQL 服务器监听所有的网络 IP 地址,而不仅仅是本地回环网卡地址。

skip-name-resolve

禁用 MySQL 的 DNS 解析功能,可以提高查询性能和安全性。

max_connections=2048

设置 MySQL 服务器允许的最大并发连接数为 2048。

default-storage-engine=INNODB

设置 MySQL 服务器默认使用的存储引擎为 InnoDB。

max_allowed_packet=16M

设置 MySQL 服务器接受的最大连接数据包大小,单位为字节,默认值为 4MB。

server-id = 1

设置 MySQL 服务器的唯一标识符,用于在主从复制中区分不同的服务器。

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

5. 设置变量环境

申明/宣告 MySQL 命令便于系统识别

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

6. 初始化数据库

参数 作用
initialize-insecure 生成初始化密码为空
user=mysql 指定管理用户
basedir=/usr/local/mysql 指定数据库的安装目录
datadir=/usr/local/mysql/data 指定数据库文件的存储路径
cd /usr/local/mysql/bin
[root@localhost bin]# 
./mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data

image-20230618190557698

7. 设置自启动

[root@localhost bin]# 
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system

systemctl daemon-reload 
# 刷新识别

8. 开启服务并查看端口状态

systemctl start mysqld.service 
systemctl enable mysqld.service
netstat -antp | grep 3306

image-20230618211706791

9. 修改root用户密码

# 先登录root,在修改root密码
mysql -u root
alter user 'root'@'localhost' identified by '123123'
\q

# 用新密码123123登录
mysql -u root -p
123123

image-20230618224859609

三、搭建PHP服务

1. 下载 PHP 源码包

官方网址:https://www.php.net/

2. 解压 PHP 源码包

[root@localhost opt]# 
tar -xf php-7.1.24.tar.gz 

image-20230618230057164

3. 安装GD库及GD关联程序

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

image-20230619000202354

4. 安装编译环境

[root@localhost php-7.1.24]# 
./configure \
> --prefix=/usr/local/php7 \
> --with-apxs2=/usr/local/httpd/bin/apxs \
> --with-mysql-sock=/usr/local/mysql/mysql.sock \
> --with-config-file-path=/usr/local/php7 \
> --with-mysqli \
> --with-zlib \
> --with-curl \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir \
> --with-openssl \
> --enable-mbstring \
> --enable-xml \
> --enable-session \
> --enable-ftp \
> --enable-pdo \
> --enable-tokenizer \
> --enable-zip

image-20230619000449612

5. 编译与安装

[root@localhost php-7.1.24]# 
make -j 4 && make install

image-20230619001021761

6. 配置 PHP 配置文件

配置文件 /usr/local/php7/php.ini

--939行--取消注释,修改
date.timezone = Asia/Shanghai

--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock

mysqli.default_socket 选项的作用是指定 mysqli() 函数连接 MySQL 数据库所使用的 socket 文件路径。在 PHP 中,mysqli() 是一个用于连接 MySQL 数据库并进行数据库操作的扩展函数。

[root@localhost ~]# 
cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini
vim /usr/local/php7/php.ini 

# 第939行
date.timezone = Asia/Shanghai
# 第1170行
mysqli.default_socket = /usr/local/mysql.sock

7. 优化服务命令

优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别

[root@localhost ~]# 
ln -s /usr/local/php7/bin/* /usr/local/bin/

8. 使 Apache 支持 PHP

AddType 是 Apache 服务器配置指令之一,用于告诉服务器如何处理不同类型的文件。

AddType application/x-httpd-php .php 这条指令告诉 Apache 服务器将 .php 扩展名的文件解析为 application/x-httpd-php 类型,并使用 PHP 解释器来处理这些文件。这就意味着如果您在 Web 服务器上请求一个以 .php 结尾的文件,例如 index.php,Apache 将自动使用 PHP 解释器对该文件进行解析并将结果返回给客户端浏览器。简单来说,这使得您的 PHP 脚本在 Web 服务器上可以被正确地执行。

AddType application/x-httpd-php-source .phps 则是为 .phps 扩展名的文件定义了 MIME 类型为 application/x-httpd-php-source,并指示 Apache 将其解析为纯文本格式。这通常用于在 Web 服务器上显示 PHP 代码的源代码,而不是实际执行它。如果您的 Web 服务器上启用了此选项,那么当您在浏览器中请求以 .phps 结尾的文件时,Apache 服务器会将 PHP 代码格式化后返回给浏览器显示。

LoadModule 是 Apache 服务器的一个配置指令,用于告诉 Apache 在启动时加载哪些模块。在这个指令中,php7_module 是要加载的 PHP 模块的名称,而 modules/libphp7.so 则是该模块对应的共享库文件路径。

具体来说,LoadModule php7_module modules/libphp7.so 这条指令告诉 Apache 服务器在启动时加载名为 php7_module 的 PHP 模块,并使用 modules/libphp7.so 文件作为该模块的共享库。这样,在客户端请求 PHP 页面时,Apache 就可以使用该模块来解析和执行 PHP 代码。


# 第256行
 <IfModule dir_module>
     DirectoryIndex index.html index.php
 </IfModule>

# 第393行下行添加,让Apache支持.php网页
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

# 检查156行默认支持php7的模块是否存在
LoadModule php7_module   modules/libphp7.so

image-20230619004845750

image-20230619005101095

image-20230619005321152

9. 创建 php 页面文件

[root@localhost ~]# 
rm -rf /usr/local/httpd/htdocs/index.html 
vim /usr/local/httpd/htdocs/index.php

<?php
phpinfo()
?>

image-20230619010156699

10. 重启 Apache 服务

[root@localhost ~]# 
systemctl restart httpd

11. 网页测试

在浏览器中输入:

本服务器地址 http://192.168.23.15/index.php

出现以下PHP页面即成功

image-20230619011328808

四、安装论坛

1. 创建数据库

[root@localhost ~]# 
mysql -u root -p
123123
# 创建数据库bbs
create database bbs;

# 把bbs数据库里面所有表的权限授予给bbsuser,并设置密码
grant all on bbs.* to 'bbsuer'@'%'identified by 'admin123';

# 刷新数据库
flush privileges;

# 退出mysql界面
\q

2. 解压论坛压缩包

[root@localhost opt]# 
# 解压到 /opt/dis目录下
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis

image-20230619020029858

image-20230619020201738

3. 上传站点更新包

cd /opt/dis/dir_SC_UTF8/
[root@localhost dir_SC_UTF8]# 
cp -r upload/ /usr/local/httpd/htdocs/bbs

4. 切换至论坛目录

[root@localhost dir_SC_UTF8]# 
cd /usr/local/httpd/htdocs/bbs/

[root@localhost bbs]# 

5. 更改论坛属主

[root@localhost bbs]# 
chown -R daemon config/
chown -R daemon data
chown -R daemon uc_client/
chown -R daemon uc_server/data/

image-20230619021852588

6. 数据库信息

数据库服务器: localhost (本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号)
数据库名字: bbs
数据库用户名: bbsuser
数据库密码: admin123
管理员账号: admin
管理员密码: admin123

四、检测 LAMP+DISCUZ 论坛是否搭建成功

用其它主机浏览器访问本地服务器的数据库

http://192.168.23.15/bbs/install

image-20230619022857756

image-20230619022956735

image-20230619023705235

image-20230619023757909

后有不知名错误,待续!

posted on 2023-06-18 22:29  m_zhuang  阅读(56)  评论(0编辑  收藏  举报