搭建 LAMP+DISCUZ 论坛

发布时间 2023-06-18 22:31:53作者: m_zhuang

一、搭建 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

(6)优化服务命令

优化配置文件路径,并把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

(7)加入系统管理

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

(8)配置 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

(9)开启服务并检查端口

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

image-20230618155107245

(10)检查是否可以访问

[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. 加内存

(6)创建普通用户管理 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

(7)配置 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

(8)设置变量环境

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

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

(9)初始化数据库

参数 作用
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

(10)设置自启动

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

systemctl daemon-reload 
# 刷新识别

(11)开启服务并查看端口状态

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

image-20230618211706791

未完,待续!