基于 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
(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
(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
(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
(5)编译与安装
[root@localhost httpd-2.4.29]#
make -j 4 && make install
# -j 是使用cpu数量
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
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
6. 开启服务并检查端口
[root@localhost opt]#
service httpd start
netstat -antp | grep 80
7. 检查是否可以访问
[root@localhost opt]#
cat /usr/local/httpd/htdocs/index.html
二、搭建 MySQL 服务
1. 下载 MySQL 源码包
2. 编译安装 MySQL
(1)解压源码包及插件
[root@localhost opt]#
tar -xf mysql-5.7.17.tar.gz
tar -xf boost_1_59_0.tar.gz
(2)配置插件
[root@localhost opt]#
mv boost_1_59_0 /usr/local/boost
(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
(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
① 出现报错
② 解决方法
可能是内存不足导致
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
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
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
9. 修改root用户密码
# 先登录root,在修改root密码
mysql -u root
alter user 'root'@'localhost' identified by '123123'
\q
# 用新密码123123登录
mysql -u root -p
123123
三、搭建PHP服务
1. 下载 PHP 源码包
官方网址:https://www.php.net/
2. 解压 PHP 源码包
[root@localhost opt]#
tar -xf php-7.1.24.tar.gz
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
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
5. 编译与安装
[root@localhost php-7.1.24]#
make -j 4 && make install
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
9. 创建 php 页面文件
[root@localhost ~]#
rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo()
?>
10. 重启 Apache 服务
[root@localhost ~]#
systemctl restart httpd
11. 网页测试
在浏览器中输入:
本服务器地址 http://192.168.23.15/index.php
出现以下PHP页面即成功
四、安装论坛
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
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/
6. 数据库信息
数据库服务器: localhost (本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号)
数据库名字: bbs
数据库用户名: bbsuser
数据库密码: admin123
管理员账号: admin
管理员密码: admin123
四、检测 LAMP+DISCUZ 论坛是否搭建成功
用其它主机浏览器访问本地服务器的数据库
http://192.168.23.15/bbs/install
后有不知名错误,待续!