LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构

LAMP架构是一种常见的用于构建动态网站的技术栈

组成功能
Linux(操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序
Apache(Web服务器)接收和处理客户端请求,并将静态和动态内容发送给客户端
MySQL(数据库)存储和检索应用程序的数据
PHP(编程语言)用于动态生成网页内容

1.LAMP各组件的作用

1.linux提供了可靠的操作系统环境

2.Apache负责处理客户端的请求

3.MySQL负责存储和检索数据

4.PHP负责处理业务逻辑并生成网页内容

3.LAMP工作过程

静态资源:

当客户端请求的是静态资源时,web服务器会直接把静态资源返回给客户端

动态资源:

当客户端请求的是动态资源时,httpd的PHP模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源由web服务器返回到客户端

4.CGI和fastcgi

CGI(通用网关接口)和FastCGI(快速公共网关接口)都是用于将Web服务器与后端应用程序(如PHP、Python等)进行交互的协议/接口

特点CGIFastCGI
运行方式每个请求启动新的进程复用进程处理多个请求
性能每个请求需要加载代码多个请求共享同一份代码
资源消耗每个请求都需要消耗大量资源多个请求间资源共享
扩展性难以扩展更容易实现扩展性
缓存能力依赖于服务器配置有较好的缓存能力
安全性比较低更高
适用场景适用于小型或低流量应用适用于高流量或复杂应用

二、搭建Discuz论坛的过程

在构建LAMP平台时,各组件的安装顺序为linux > Apache > MySQL > PHP

编译安装Apache httpd服务 > 编译安装MySQL > 编译安装PHP > 搭建LAMP平台

三、编译安装Apache httpd

1.关闭防火墙和selinux

2.安装依赖环境

yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre  zlib-devel  zlib

gcc                #c语言编译器

gcc-c++         #c编译器

make             #源代码编译器

pcre               #pcre函数库

pcre-devel     #pcre接口开发包

expat-devel   #用于支持网站解析HTML、XML文件

perl                #perl语言编译器

3.解压软件包

cd  /opt

tar xf apr-1.6.2.tar.gz

tar xf apr-util-1.6.0.tar.gz

tar xf httpd-2.4.29.tar.bz2

4.移动apr包和apr-util包到安装目录,并切换到httpd-2.4.29目录中

mv apr-1.6.2  httpd-2.4.29/srclib/apr

mv apr-util-1.6.0  httpd-2.4.29/srclib/apr-util

cd  httpd-2.4.29 

5.编译安装

检测编译环境:

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

--prefix=/usr/local/httpd   #指定httpd的安装目录

--enable-so                     #启用动态加载模块支持,使httpd具备进一步扩展功能的能力

--enable-rewrite              #启用网页地址的重写功能,用于网站优化、防盗链及目录迁移维护

--enable-charset-lite       #启用字符集支持,以便支持使用各种字符集编码的页面

--enable-cgi                    #启用CGI(通用网关接口)脚本程序支持,便于网站外部扩展应用访问的能力

编译安装:

make  -j2  &&  make  install

6.建立软连接并放入etc目录下,将启动文件放入/usr/local/bin目录下可以直接使用

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
#将文件拷入/etc/init.d/httpd


ln -s /usr/local/httpd/conf/httpd.conf /etc/
#建立配置文件软连接放入etc目录下

ln -s /usr/local/httpd/bin/* /usr/local/bin/
#将启动文件放入/usr/local/bin/目录下可以直接使用

7.添加httpd系统服务

#创建httpd.service

vim /lib/systemd/system/httpd.service

内容:

[Unit]
Description=The Apache HTTP Server    
After=network.target 
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP ${MAINPID}
ExecStop=/bin/kill -WINCH ${MAINPID}

[Install]
WantedBy=multi-user.target

8.启动httpd.service

systemctl  daemon-reload

systemctl  start  httpd.service

netstat  -ntap  |grep  80

四、编译安装mysql

1.安装依赖包添加mysql用户

yum install -y ncurses-devel autoconf cmake

ncurses            #字符终端下图形互动功能的动态库

ncurses-devel  #ncurses开发包

bison                #语法分析器

cmake              #mysql需要用到的cmake编译安装包

2.新建用户

useradd -s /sbin/nologin  mysql

3.解压软件包并切换到编译目录,并编译安装

#上传mysql-boost-5.7.20.tar.gz到opt目录下

cd /opt       

tar xf mysql-boost-5.7.20.tar.gz   #解压

cd /opt/mysql-5.7.20                    #切换到编译目录

4.编译安装配置选项

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_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

指定安装文件的安装路径时常用的选项:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql         指定安装路径 
-DMYSQL_DATADIR=/data/mysql                     数据安装路径 
-DSYSCONFDIR=/etc                               配置文件的安装路径

由于MySQL支持很多的存储引擎而默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1          安装INNOBASE存储引擎 
-DWITH_ARCHIVE_STORAGE_ENGINE=1           安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1         安装BLACKHOLE存储引擎 
-DWITH_FEDERATED_STORAGE_ENGINE=1         安装FEDERATED存储引擎

若要明确指定不编译某存储引擎,可以使用类似如下的选项:

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1

不启用或不编译EXAMPLE存储引擎 :

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1        
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 
 -DWITHOUT_PARTITION_STORAGE_ENGINE=1

如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1 
 -DWITH_SSL=system           表示使用系统上的自带的SSL库 
-DWITH_ZLIB=system 
 -DWITH_LIBWRAP=0

其它常用的选项:

-DMYSQL_TCP_PORT=3306                       设置默认端口的 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock           MySQL进程间通信的套接字的位置 
-DENABLED_LOCAL_INFILE=1                    是否启动本地的LOCAL_INFILE 
 -DEXTRA_CHARSETS=all                       支持哪些额外的字符集 
-DDEFAULT_CHARSET=utf8                      默认字符集 
-DDEFAULT_COLLATION=utf8_general_ci         默认的字符集排序规则 
-DWITH_DEBUG=0                              是否启动DEBUG功能 
-DENABLE_PROFILING=1                        是否启用性能分析功能

注意:如果在CMAKE的过程中有报错

当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧

注意:make: *** No targets specified and no makefile found. Stop.解决方法

1.wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
2.tar zxvf ncurses-5.6.tar.gz
3. ./configure -prefix=/usr/local -with-shared-without-debug
4.make
5.make install

5.编译安装

make  -j4  &&  make  install

6. 数据库目录进行权限调整

chown -R mysql:mysql /usr/local/mysql

 7.建立调整配置文件

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

[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
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

8.修改配置文件权限

chown mysql:mysql /etc/my.cnf

 9.设置路径环境变量

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

 10.初始化数据库

cd /usr/local/mysql/

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

 11.准备systemctl 配置文件

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

#用于systemctl服务管理
systemctl daemon-reload           #刷新识别     
systemctl start mysqld.service   #开启服务
systemctl enable mysqld           #开机自启动
ss -ntap | grep 3306                   #查看端口

12.修改数据库密码

给root账号设置密码为123,刚安装是默认状态没有密码直接回车

mysqladmin -u root -p password "123"

13.登录数据库

#这个命令进入mysql数据库,输入刚刚设置的密码123

mysql  -u  root  -p

#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限

grant all privileges on *.* to 'root'@'%' identified by '123';

五、编译安装PHP

1.安装依赖包

#安装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

2.配置软件模块并解压在/opt目录下

cd /opt

tar xf php-7.1.10.tar.bz2

cd /opt/php-7.1.10

 

3.编译安装

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


--prefix=/usr/local/php7 \                                        指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \                 指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \   指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php7                    设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \                                                         添加 MySQL 扩展支持 #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \                                      支持zlib功能,提供数据压缩
--with-curl \                                      开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \                                        激活gd 库的支持
--with-jpeg-dir \                                激活jpeg 的支持
--with-png-dir \                                 激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \                          启用多字节字符串功能,以便支持中文等代码
--enable-xml \                                  开启扩展性标记语言模块
--enable-session \                           会话
--enable-ftp \                                   文本传输协议
--enable-pdo \                                 函数库
--enable-tokenizer \                        令牌解释器
--enable-zip                                    ZIP压缩格式

4.编译安装

make  -j2  &&  make  install

5.复制配置文件

复制模版文件作为php的主配置文件,并进行修改改名为php.ini

在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件

cp /opt/php-7.1.10/php.ini-development   /usr/local/php7/php.ini

在复制时注意目录路径,php安装在哪个路径下就从哪复制

6.修改配置文件

快捷跳转格式:需要跳转的行数+G  例:1170G、939G

vim  /usr/local/php7/php.ini


mysqli.default_socket = /usr/local/mysql/mysql.sock   ##1170行


date.timezone = Asia/Shanghai                                   ##939行

7.优化操作

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

ln -s /usr/local/php7/bin/* /usr/local/bin/

#查看PHP加载了哪些模块

php -m

8.修改httpd服务的配置文件,让apache支持PHP

vim /etc/httpd.conf

393行插入,原行不删,在下面添加

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps(这里的点前面空格一定要加,否则报错)

256行,修改首页文件名设置

index.php(在该行尾添加即可)

156行检查支持php7的模块是否存在(可以用'/'在文件中查找 )

如果没有需要重装

LoadModule php7_module        modules/libphp7.so

#重启服务

systemctl restart httpd

9.验证PHP测试页

#进入htdocs目录删除原有网页内容

rm -rf  /usr/local/httpd/htdocs/index.html

#新建网页文件内容
vim  /usr/local/httpd/htdocs/index.php

<?php
phpinfo();
?>

#重启httpd服务

systemctl  restart  httpd.service

10.验证是否连接成功

#找个网页ping就可以了​​​​​​​http://192.168.7.10/index.phpicon-default.png?t=N7T8http://192.168.91.100/index.php

六、安装论坛

1.新建数据库

#登录数据库

mysql  -u root  -p123

#创建一个数据库

CREATE DATABASE bbs;

#查看当前数据库

show databases;

2.授权并设置密码

#把bbs数据库里面所有表的权限授予给bbsuser用户,并设置密码为admin123

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

3.刷新数据库

#刷新数据库

flush privileges;

 4.quit退出mysql,在/opt目录下准备论坛软件并解压

cd  /opt

unzip  /opt/Discuz_X3.4_SC_UTF8.zip

5.复制到apache目录下

cd  /opt/dir_SC_UTF8

#上传站点更新包

cp  -r  upload/  /usr/local/httpd/htdocs/bbs

6.修改权限

#更改论坛目录的属主

cd   /usr/local/httpd/htdocs/bbs

chown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data

7.安装论坛

http://192.168.7.10/bbs

这里输入http://192.168.7.10/bbs/admin.php可以切换到管理中心,输入账号密码进入管理员后台管理页面

安装Discuz成功~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/746707.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览 2024/6/26 15:15 4.2.1 全编译测试 在源码路径内&#xff0c;提供了编译脚本 build.sh&#xff0c;运行该脚本对整个源码进行编译&#xff0c;需要在终端切换到解压 出来的源码路径&#xff0c;找到 build.sh 文件…

设备智能化:中国星坤线缆组件的解决方案!

在当今快速发展的电子行业中&#xff0c;产品小型化和成本效益是制造商追求的两大目标。中国星坤端子电缆组件以其灵活性和高效性&#xff0c;为电子设备制造商提供了一种理想的解决方案。本文将探讨星坤端子电缆组件的优势以及其在不同电子设备中的应用。 端子线&#xff1a;小…

Spring AI 实现调用openAi 多模态大模型

什么是多模态? 多模态(Multimodal)指的是数据或信息的多种表现形式。在人工智能领域,我们经常会听到这个词,尤其是在近期大型模型(如GPT-4)开始支持多模态之后。 模态:模态是指数据的一种形式,例如文本、图像、音频等。每一种形式都是一种模态。多模态:多模态就是将…

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…

Linux-笔记 OverlayFS文件系统入门

目录 前言 主要概念 工作原理 特点特性 1、上下合并 2、同名文件覆盖 3、同名目录合并 4、写时拷贝 实操入门 内核配置 挂载文件系统 验证 1、同名文件覆盖 2、同名目录合并 3、写时拷贝 1&#xff09;验证新增文件或目录 2&#xff09;验证修改文件 3&…

2024最新谷歌镜像网站入口分享

google谷歌搜索引擎最新可用镜像站列表&#xff1a;&#xff08;注意不要登录账号&#xff0c;镜像站并非谷歌官方网站&#xff09; 谷歌镜像网站1&#xff1a;https://google.cloudnative.love/ 谷歌镜像网站2&#xff1a;https://gsearch.g.shellten.top/ 谷歌镜像网站3&…

【论文阅读】--Popup-Plots: Warping Temporal Data Visualization

弹出图&#xff1a;扭曲时态数据可视化 摘要1 引言2 相关工作3 弹出图3.1 椭球模型3.1.1 水平轨迹3.1.2 垂直轨迹3.1.3 组合轨迹 3.2 视觉映射与交互 4 实施5 结果6 评估7 讨论8 结论和未来工作致谢参考文献 期刊: IEEE Trans. Vis. Comput. Graph.&#xff08;发表日期: 2019&…

螺丝扭断力试验机SJ-12

一、设备简介&#xff1a; 螺丝扭断力试验机用于测试螺丝的耐扭断力。本机将螺丝产品所受到轴向扭转力与反作用力&#xff0c;常用扭力扳手来计量。本机可对产品进行转力测、锁动测试、锁动扭力测试等多种测试方式。 二、设备使用&#xff1a; 1、将螺丝强度扭力试验机底座锁于…

天润融通:AI赋能客户体验,推动企业收入和业绩增长

“客户体验已经成为全球企业差异化的关键。人工智能与数据分析等创新技术正在加速推动企业在客户体验计划中取得成功&#xff0c;以保持领先地位”。Customer Insights & Analysis 研究经理Craig Simpson说道。 客户体验 (CX&#xff0c;Customer Experience) 是客户在与企…

STM32CubeMX与RT-Thread Studio协助使用(实现点亮LED)

1创建自己的项目 1-1选择板子 1-2生成的项目 运行一下看是否创建成功 零警告零错误 2配置STM32Cude 2-1找打如图图标点击&#xff08;CubeMX的图标&#xff09; 2-2输入自己安装的路径选中exe文件 点击Browse 找到如图选中&#xff0c;在打开&#xff08;STM32CubeMX的安装路…

变长的时间戳设计,第2版

以前的时间戳有32位&#xff0c;以秒为单位&#xff0c;231秒≈68年&#xff0c;从1970年开始&#xff0c;到2038年会出问题。 现在的时间戳有64位&#xff0c;表达范围仍然受限。 设计变长的时间戳&#xff0c;以32位为单元&#xff0c;最短有32位&#xff0c;最长有328256位…

如何使用代理 IP 防止多个 Facebook 帐户关联 - 最佳实践

在社交媒体被广泛应用的今天&#xff0c;Facebook作为全球最大的社交网络平台之一&#xff0c;面临着很多挑战&#xff0c;其中之一就是用户行为的管理和安全。 为了防止多个账户之间的关联和滥用&#xff0c;Facebook需要采取一系列措施&#xff0c;其中包括使用静态住宅代理…

【Redis】数据持久化

https://www.bilibili.com/video/BV1cr4y1671t?p96 https://blog.csdn.net/weixin_54232666/article/details/128821360 单点redis问题&#xff1a; 数据丢失问题&#xff1a;实现Redis数据持久化并发能力问题&#xff1a;搭建主从集群&#xff0c;实现读写分离故障恢复问题&…

探索顺序结构:栈的实现方式

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;渐入佳境之数据结构与算法 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ​​ 一、栈的定义 栈&#xff08;Stack&#xf…

鸿蒙开发系统基础能力:【@ohos.screenLock (锁屏管理)】

锁屏管理 锁屏管理服务是OpenHarmony中系统服务&#xff0c;为锁屏应用提供注册亮屏、灭屏、开启屏幕、结束休眠、退出动画、请求解锁结果监听&#xff0c;并提供回调结果给锁屏应用。锁屏管理服务向三方应用提供请求解锁、查询锁屏状态、查询是否设置锁屏密码的能力。 说明&a…

thinksboard新建菜单

1.打开目录\thingsboard\ui-ngx\src\app\modules\home\pages新增npages文件夹 2.新增npages.module.ts以及npages-routing.module.ts控制文件&#xff0c;以及页面展示文件npages.component.html,npages.component.scss,npages.component.ts 3.打开npages.component.ts文件&…

RT-Thread 实时系统介绍

介绍 RT-Thread 是一款开源的实时操作系统&#xff0c;主要面向物联网设备。它支持多种芯片架构&#xff0c;具有安全、低功耗、智能、可伸缩的特性。RT-Thread 拥有超过16年的技术积累&#xff0c;广泛应用于各行业&#xff0c;装机量达数十亿台。它提供了包括设备虚拟文件系…

VMware Windows sever 虚拟机互联网连接配置

一、VMware配置 1、虚拟网络编辑 从左上角 编辑→虚拟网络编辑器 进入 2、配置NAT模式 配置的子网IP&#xff0c;在虚拟机中获取到的ip跟子网IP的前三个是一样的 1.配置网关 2.配置DHCP设置 这个主要是分配ip最后一位获取的区间 3、虚拟机配置 二、Windows Server 虚拟机配置…

多接口分线盒在工业自动化中的重要性与应用

简介 多接口分线盒是现代工业自动化中不可或缺的一个组成部分&#xff0c;它主要用于简化复杂的接线系统&#xff0c;提高效率和可靠性。本文将详细探讨多接口分线盒的定义、功能、以及在工业自动化中的应用情况。 无源多接口分线盒 多接口分线盒的定义与功能 多接口分线盒是…

基于Pytorch框架构建VGG-19模型

Pytorch 一、训练模型1.导入资源包2.定义数据预处理3.读取数据 二、定义VGG19模型1.定义自定义的 VGG19 模型运行结果&#xff1a; 四、验证模型1. 定义验证过程2.用于训练模型并应用学习率调整策略的循环运行结果&#xff1a;3.保存模型的状态字典 三、训练模型1. 定义训练函数…