基于 LAMP 架构搭建 Discuz! 论坛站点

1)LAMP 架构介绍

Apache PHP MySQL 三者间如何工作。

基于 LAMP 架构搭建 Discuz! 论坛站点
img
基于 LAMP 架构搭建 Discuz! 论坛站点
img

2)什么是 LAMP

LAMP 是公认的最常见、最古老的 黄金 Web  技术栈。

其实就是

Linux 操作系统
Apache/Nginx Web服务器
Mysql/Mariadb
Perl/Php/Python

2.1)了解 Linux

基于 LAMP 架构搭建 Discuz! 论坛站点
img

Linux 到底好在哪?用 Linus 本人的话说就是,普通老百姓用户,压根别说你是在使用操作系统,你需要的只是应用程序,而不是操作系统。

操作系统主要是提供给程序员 API,用于构建和运行应用的一个平台。

如果来说,你常用的应用在 Linux 下运行的更好,更方便,那没问题。

但是如果你平时用的软件,都和 Linux 没什么关系,那你没必要选择Linux。

那当然作为运维人员,你可以一手使用 Windows、一手使用Linux,毕竟你的服务器运维工作,几乎都是 Linux 环境了。

Linux系统主要是以开发者为中心,Windows主要以消费者为中心这是本质的区别。

Linux 的特点是几乎所有的开发任务相关工具,都有很完善的支持,从底层的编译器,make编译工具,到bash脚本,git代码管理,vim编辑器,依赖管理工具等等都很齐全。

然而Windows/Mac的操作系统很少能完善这些开发工具的,Linux则是默认预装的开发环境。

WIndows几乎都是图形化接口,而Linux几乎都是现有命令行,再由图形化操作接口,更容易实现自动化。

2.2)了解 Apache

Apache Web  Server 虽然称之为 Web  服务器,但是不是意味着他是一个物理服务器,它只是电脑软件中的一个软件而已,Web 服务器的作用是 将HTTP请求从前端转发到后端应用上。

基于 LAMP 架构搭建 Discuz! 论坛站点
img

2.3)了解 PHP

PHP是一门服务端脚本编程语言,主要用于 Web 开发,常用PHP脚本嵌入HTML源码中执行。

PHP是全球知名的编程语言之一,程序员可以免费试用,PHP支持多种操作系统,开发效率高,支持多种数据库操作。

国内众多网站,百度、雅虎、新浪都在大量使用PHP语言进行开发,知名的论坛软件Discuz也是由PHP开发且占据了80%的论坛软件市场。

基于 LAMP 架构搭建 Discuz! 论坛站点
img

2.4)了解 MySQL

MySQL 是一款数据库管理系统,也就是一个存储数据的工具,用户可以自行对数据库进行增加、删除、修改、查询等操作。

基于 LAMP 架构搭建 Discuz! 论坛站点
img

MySQL是数据库管理系统中的一款软件,被业界广泛使用,例如新浪、QQ、淘宝、都在大量使用MySQL数据库。

腾讯QQ使用Linux与MySQL数据库,存储注册用户2.8亿的信息,活跃人数9000万,凭借万台服务器搭建的数据库集群,腾讯QQ同时在线人数也达到了千万,这证明了MySQL数据库的大容量、快速响应特点。

MySQL是一款关系型数据库,尤其适合Web 应用,特别是电商领域,MySQL遍布各种行业、移动、爱立信、惠普、银行、思科、摩托萝拉、等等。

3)LAMP 架构

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的 Web 框架。

该框架包括:

  • Linux 操作系统
  • Apache 网络服务器
  • MySQL 数据库
  • Perl、PHP或者Python编程语言,所有组成产品均是开源软件

是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构。

LAMP 具有通用、跨平台、高性能、低价格的优势,因此 LAMP 无论是性能、质量还是价格都是企业搭建网站的首选平台。

LAMP 是一个多 C/S 架构的平台,最初级为 Web  客户端(浏览器)基于TCP/IP通过http协议发起传送,这个请求可能是动态的,也可能是静态的。

所以 Web  服务器通过发起请求的后缀来判断,如果是静态的资源就由 Web  服务器自行处理,然后将资源发给客户端。如果是动态这时Web 服务器会通过CGI(Common Gateway interface)协议发起给 PHP。这里但是如果PHP是以模块形式与Web 服务器联系,(安装在同一台服务器)那么他们是通过内部共享内存的方式。

如果是 PHP 单独的放置与一台服务器,那么他们是通过 sockets 套接字监听的方式通信(安装在不同的服务器上,远程通信,这又是一个C/S架构)。

这时 PHP 会相应的执行一段程序,如果在执行程序时,需要用到数据。

那么 PHP 就会通过 mysql 协议发送给 mysql 服务器(也可以看作是一个C/S架构)。由 mysql 服务器处理,将数据供给 PHP 程序。

【流程解析】

基于 LAMP 架构搭建 Discuz! 论坛站点
img
  1. 用户通过浏览器发送 http 请求,到达 Web  服务器( apache 或 nginx )

  2. Web 服务器解析用户请求信息,明确他到底要什么


    1. 如果是 静态资源请求,直接通过 Linux 内核读取硬盘上的数据,然后构建响应报文,给与用户。
    2. 如果是 动态资源请求,则转发请求给 应用服务(PHP,python),由 PHP 解析动态请求,解析完毕后,返回给 apache,发给用户
  3. 如果涉及数据库操作,利用 PHP-Linux 驱动,获取数据库数据,再返回给 PHP,最终给与用户

基于 LAMP 架构搭建 Discuz! 论坛站点
img

4)搭建 LAMP

4.1)部署 Linux 系统环境

注意关闭防火墙、seLinux

// 关闭防火墙
iptables -F
systemctl stop firewalld
systemctl disable firewalld

// 关闭 SELinux
setenforce 0

4.2)部署 Apache

// 安装 HTTPD
yum install httpd -y

// 启用 HTTPD
systemctl start httpd 
systemctl enable httpd 
systemctl status httpd
基于 LAMP 架构搭建 Discuz! 论坛站点
img

测试 Apache 访问

基于 LAMP 架构搭建 Discuz! 论坛站点
img

编写 index.html

// 安装 tools
yum install vim lrzsz net-tools -y

// 编写 html
vim /var/www/html/index.html
我是新的首页 你好兄弟们!
基于 LAMP 架构搭建 Discuz! 论坛站点
img

4.3)部署 MySQL(mariadb)

// 安装 MySQL
yum install mariadb-server mariadb -y

// 启用 MySQL
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
基于 LAMP 架构搭建 Discuz! 论坛站点
img

检查 mariadb 的数据文件夹,存在 mysql.sock 文件,表示启动了,以及属主、属组权限

[root@localhost ~]# ll /var/lib/mysql/
total 28700
-rw-rw----. 1 mysql mysql 16384 Aug 29 19:43 aria_log.00000001
-rw-rw----. 1 mysql mysql 52 Aug 29 19:43 aria_log_control
-rw-rw----. 1 mysql mysql 18874368 Aug 29 19:43 ibdata1
-rw-rw----. 1 mysql mysql 5242880 Aug 29 19:43 ib_logfile0
-rw-rw----. 1 mysql mysql 5242880 Aug 29 19:43 ib_logfile1
drwx------. 2 mysql mysql 4096 Aug 29 19:43 mysql
srwxrwxrwx. 1 mysql mysql 0 Aug 29 19:43 mysql.sock
drwx------. 2 mysql mysql 4096 Aug 29 19:43 performance_schema
drwx------. 2 mysql mysql 6 Aug 29 19:43 test
基于 LAMP 架构搭建 Discuz! 论坛站点
img

设置 mariadb 数据库 root 用户的登录密码

mysqladmin -uroot password "P@ssw0rd123456"

登录 mariadb 数据库

[root@localhost ~]# mysql -uroot -pP@ssw0rd123456
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 4
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]>
基于 LAMP 架构搭建 Discuz! 论坛站点
img

4.4)部署 PHP

// 1. 解决 php 安装的依赖开发环境
yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libtool-ltdl-devel pcre pcre-devel apr apr-devel zlib-devel gcc make -y


// 2. 安装 php 以及 php 连接 mysql 数据库的驱动
yum install php php-fpm php-mysql -y


// 3. PHP 不需要额外修改, 但是需要修改 Apache 配置文件支持 PHP
vim /etc/httpd/conf/httpd.conf

DocumentRoot "/www"         // 1. 站点目录更换为了 /www
    TypesConfig /etc/mime.types
    AddType application/x-httpd-php  .php
    AddType application/x-httpd-php-source  .phps
    DirectoryIndex  index.php index.html

<Directory "/www">        // 3. 站点目录更换为了 /www

修改如下三处。

基于 LAMP 架构搭建 Discuz! 论坛站点
img
// 4. 修改首页文件内容
[root@localhost ~]# mkdir /www

[root@localhost ~]# vim /www/index.php
<meta charset=utf8>
我是新的首页,你好兄弟们!!
<?php
phpinfo();
?>

// 5. 启动 php 进程
systemctl start php-fpm
systemctl restart httpd
基于 LAMP 架构搭建 Discuz! 论坛站点
img

看到如上页面,说明 Apache 已成功支持 PHP 扩展了!

4.5)测试 PHP 连接 MySQL

// 1. 添加 PHP 脚本
vim /www/test.php

<?php
$conn = mysql_connect('localhost','root','P@ssw0rd123456');
if ($conn)
echo "php 已成功连接 MySQL,你真棒!";
else
echo "你咋回事,这都搞不定,细心检查下吧!";
mysql_close();
?>

访问 PHP 脚本文件,测试是否能够连接 MySQL 数据库

基于 LAMP 架构搭建 Discuz! 论坛站点
img

若是关闭了数据库,或者出现其他配置错误问题,则会显示如下页面:

[root@localhost www]# systemctl stop mariadb
基于 LAMP 架构搭建 Discuz! 论坛站点
img

5)基于 LAMP 搭建论坛

官方社区: https://www.dismall.com/

使用教程: https://addon.dismall.com/library/front/index.html

Discuz! 的基础架构采用世界上最流行的Web 编程组合 PHP+MYSQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。基于 LAMP 架构搭建 Discuz! 论坛站点

// 1.下载 discuz 源码包
// wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
// 链接:https://pan.baidu.com/s/1KzmhuLnVS3pp6UHASYBWeg 
// 提取码:bchu


// 2. 安装解压缩命令,解压缩源代码
[root@localhost ~]# cd /www/
[root@localhost www]# yum install unzip -y && unzip Discuz_X3.5_SC_UTF8_20230726.zip

// 3. 把解压出的 upload 文件, 拷贝到 Apache 的根目录下
[root@localhost www]# mv upload/* .
mv:是否覆盖"./index.php"? y

// 4. 给与最高权限, 便于实验
[root@localhost www]# chmod -R 777 /www/*

访问 Apache 首页,查看是否进入论坛安装界面

http://192.168.18.141/install/
基于 LAMP 架构搭建 Discuz! 论坛站点
img

报错: PHP 版本过低。

Discuz_X3.5 支持的 PHP 版本:5.6 ~ 8.0

基于 LAMP 架构搭建 Discuz! 论坛站点
img

解决:

将 CentOS 7 自带的 PHP 5.4 升级为 5.6 。

https://devbox.cn/p/945264427

// 查看 PHP 版本
php -v

// 执行下面的命令升级软件仓库
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

// 执行下面的命令删除 PHP
yum remove php-common -y

// 安装 PHP 5.6 版本
yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring

// 重启 HTTPD
service httpd restart

// 查看最新的版本
php -v
基于 LAMP 架构搭建 Discuz! 论坛站点
img

刷新 安装界面

基于 LAMP 架构搭建 Discuz! 论坛站点
img

全新安装 Discuz!

基于 LAMP 架构搭建 Discuz! 论坛站点
img

创建 数据库

// 启用数据库服务
systemctl start mariadb.service

// 验证 MySQL 状态
netstat -nltp | grep 3306
基于 LAMP 架构搭建 Discuz! 论坛站点
img
基于 LAMP 架构搭建 Discuz! 论坛站点
img

此时我们基于 LAMP 搭建的社区论坛就好了。

基于 LAMP 架构搭建 Discuz! 论坛站点
img

大功告成,后续就是针对 Discuz 论坛的额外学习了。

6)Discuz!后台配置

http://192.168.18.141/admin.php

基于 LAMP 架构搭建 Discuz! 论坛站点
img


原文始发于微信公众号(开源极客行):基于 LAMP 架构搭建 Discuz! 论坛站点

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/227639.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!