LAMP架构及搭建LAMP+Discuz论坛的流程

  • 1、LAMP架构概述
  • 2、LAMP各组件的作用
  • 3、LAMP的安装顺序
  • 4、LAMP的数据流向
  • 5、编译安装Apache
    • 5.1 关闭防火墙和slinux,将安装Apache所需软件包传到/opt目录下并解压
    • 5.2 安装环境依赖包
    • 5.3 选择Apache软件模块
    • 5.4 编译和安装
    • 5.5 优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
    • 5.6 添加httpd服务
    • 5.7 修改 httpd 服务配置文件
    • 5.8 检查语法并验证
  • 6、编译安装Mysql
    • 6.1 将安装Apache所需软件包传到/opt目录下并解压
    • 6.2 安装环境依赖包
    • 6.3 配置软件模块
    • 6.4 编译和安装
    • 6.5 更改mysql安装目录和配置文件的属主属组
    • 6.6 修改mysql 配置文件
    • 6.7 设置环境变量,申明/宣告mysql命令便于系统识别
    • 6.8 初始化数据库
    • 6.9 添加mysqld系统服务
    • 6.10 修改mysql 的登录密码
    • 6.11 验证
  • 7、安装PHP
    • 7.1 将安装PHP 所需软件包传到/opt目录下并解压
    • 7.2 安装GD库和GD库关联程序,用来处理和生成图片
    • 7.3 配置软件模块
    • 7.4 编译及安装
    • 7.5 复制模版文件作为PHP 的主配置文件,并进行修改
    • 7.6 把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
    • 7.7 修改Apache配置文件让Apache支持PHP
    • 7.8 创建、编辑php页面文件并验证
  • 8、安装Discuz论坛
    • 8.1 将安装论坛所需软件包传到/opt目录下并解压
    • 8.2 创建一个数据库
    • 8.3 上传站点更新包并更改论坛目录的属主
    • 8.4 验证
  • 9、总结

1、LAMP架构概述

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。

2、LAMP各组件的作用

平台:Linux

作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台) 。

前台:Apache

作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容。(静态页面—>静态请求 http)

后台:MySQL

作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。

中间连接:PHP/Perl/Python

作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。(动态页面---->动态请求 http)

3、LAMP的安装顺序

在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序,PHP环境的安装一般放到最后安装,负责沟通 Web 服务器和数据库系统以协同工作。

4、LAMP的数据流向

5、编译安装Apache

5.1 关闭防火墙和slinux,将安装Apache所需软件包传到/opt目录下并解压

systemctl stop firewalld
setenforce 0tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

5.2 安装环境依赖包

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

5.3 选择Apache软件模块

cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \        #指定 httpd 服务程序的安装路径
--enable-so \                   #启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \              #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \         #启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi                    #启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力

5.4 编译和安装

make -j2 && make install

5.5 优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/

5.6 添加httpd服务

方法一:

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd
添加以下内容
# chkconfig: 35 85 21  //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server
:wqchkconfig --add httpd //将httpd加入到系统管理器
systemctl start 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                    #PID文件位置
ExecStart=/usr/local/bin/apachectl $OPTIONS                #启动服务
ExecReload=/bin/kill -HUP $MAINPID                     #根据PID重载配置

5.7 修改 httpd 服务配置文件

vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.168.147.100:80               (不修改也行,默认监听80端口)
--197行--取消注释,修改
ServerName 192.168.147.100:80
--221行--默认首页存放路径
DocumentRoot "/usr/local/httpd/htdocs"   以后 有存储
--255行--默认首页文件名设置
DirectoryIndex index.html

5.8 检查语法并验证

#检查语法
httpd -t  或 apachectl -tcat /usr/local/httpd/htdocs/index.htmlsystemctl restart httpd.service
lsof -i:80

6、编译安装Mysql

6.1 将安装Apache所需软件包传到/opt目录下并解压

useradd -s /sbin/nologin mysql       #创建程序用户管理tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost

6.2 安装环境依赖包

yum -y install \
gcc \
gcc-c++ \
ncurses \               #字符终端下图形互动功能的动态库
ncurses-devel \         #ncurses开发包
bison \                 #语法分析器
cmake                   #mysql需要用cmake编译安装

6.3 配置软件模块

cd /opt/mysql-5.7.17/
cmake \
-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                               #生成便于systemctl管理的文件
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

存储引擎选项:
MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1
可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBDB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema),IMNOBAS

6.4 编译和安装

make -j2 && make install

6.5 更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
#更改管理主/组
chown mysql:mysql /etc/my.cnf

6.6 修改mysql 配置文件

vim /etc/my.cnf                              #删除原配置项,再重新添加下面内容
[client]                                    #客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock         [mysqld]                                    #服务全局设置
user = mysql                                   #设置管理用户
basedir=/usr/local/mysql                   #指定数据库的安装目录
datadir=/usr/local/mysql/data              #指定数据库文件的存储路径
port = 3306                                    #指定端口
character-set-server=utf8                  #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid     #指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock         #指定数据库连接文件
bind-address = 0.0.0.0                     #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve                           #禁用DNS解析
max_connections=2048                       #设置mysql的最大连接数
default-storage-engine=INNODB              #指定默认存储引擎
max_allowed_packet=16M                     #设置数据库接收的数据包大小的最大值
server-id = 1                              #指定服务ID号
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

sql_mode常用值如下:

NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_AUTO_CREATE_USER
禁正GRANT创建密码为空的用户

NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错

NO_ZERO_IN_DATE
不允许日期和月份为零

NO_ZERO_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告

ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL

PIPES_As_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

6.7 设置环境变量,申明/宣告mysql命令便于系统识别

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

6.8 初始化数据库

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

6.9 添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload         #刷新识别
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启
lsof -i:3306      #查看端口

6.10 修改mysql 的登录密码

mysqladmin -u root -p password "123456"        #直接回车即可

6.11 验证

mysql -u root -p
123456show databases;

7、安装PHP

7.1 将安装PHP 所需软件包传到/opt目录下并解压

tar -xf php-7.1.24.tar.gz

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

7.3 配置软件模块

cd /opt/php-7.1.24/
./configure \
--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压缩格式
./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

7.4 编译及安装

make -j2 && make install

7.5 复制模版文件作为PHP 的主配置文件,并进行修改

cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini
vim /usr/local/php7/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

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

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

7.7 修改Apache配置文件让Apache支持PHP

vim /etc/httpd.conf
##检查156行默认支持php7的模块是否存在
LoadModule php7_module   modules/libphp7.so
#在256行中添加index.php
255 <IfModule dir_module>
256     DirectoryIndex index.html index.php
257 </IfModule>
#在392行下方插入一下内容,让Apache可以支持.php的网页文件
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps、

7.8 创建、编辑php页面文件并验证

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>systemctl restart httpd.service在网页测试“http://192.168.147.101/index.php”

8、安装Discuz论坛

8.1 将安装论坛所需软件包传到/opt目录下并解压

unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis

8.2 创建一个数据库

mysql -u root -p
mysql> CREATE DATABASE bbs;#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';#刷新数据库
mysql>flush privileges;

8.3 上传站点更新包并更改论坛目录的属主

cd /opt/dis/dir_SC_UTF8
#上传站点更新包
cp -r upload/ /usr/local/httpd/htdocs/bbs#切换论坛目录
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

8.4 验证

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

9、总结

了解到LAMP的架构和原理,懂得如何编译安装Apache、MySQL、PHP和Discuz论坛

LAMP架构及搭建LAMP+Discuz论坛相关推荐

  1. php搭建论坛脚本,lnmp架构的搭建(discuz论坛)

    环境:rhel6.5    172.25.40.1 一.源码编译mysql 1.安装依赖包例如cmake   gcc  gcc-c++  bison   ncurses-devel 2.解压mysql ...

  2. LAMP架构概述+搭建论坛平台

    1.LAMP动态网站架构组成 lamp的全称是linux+apache+mysql+php apache 主要实现如下功能: 第一:处理 http 的请求.构建响应报文等自身服务: 第二:配置让 Ap ...

  3. LAMP架构与搭建论坛

    目录 1.LAMP架构简述 2.各组件作用 3.构建LAMP平台 1.编译安装Apache httpd服务 2.编译安装mysql 3.编译安装php 4.搭建一个论坛 1.LAMP架构简述 LAMP ...

  4. LAMP平台--部署Discuz论坛

    环境:为了推广公司的产品并为客户服务提供一个交流平台,公司购买了一套Discuz论坛系统,要求安装到现有的LAMP服务器中,并简单划分论坛版块. 需求:部署论坛服务器,安装Discuz论坛系统 添加新 ...

  5. 部署LAMP动静分离以及部署Discuz论坛

    通过LAMP平台部署及应用 已经可以部署出LAMP平台,来面对客户端的请求,但是由于这些组件都是在一台服务器上进行安装,如果出现问题,将导致LAMP平台的瘫痪.在实际环境中,不可能将LAMP平台都部署 ...

  6. linux中lamp架构搭建,Linux LAMP架构平台搭建

    LAMP架构 LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境.LAMP 是一个缩写词,具体包括 Linux 操作系 ...

  7. lamp架构的搭建(apache、mysql、php编译安装)

    lamp 1.lamp简介 2.web服务器工作流程 2.1CGI和FastCGI 2.2 httpd和php结合的方式 3.lamp平台的构建 3.1 安装httpd 3.2 安装mysql 3.3 ...

  8. lamp架构,搭建一个网络平台

    首先更改主机名和 hosts 安装软件包,设置启动服务 设置数据库密码 上传discuz论坛包 将discuz注册的用户名写在mariadb数据库中 解压discuz包   unzip discuz包 ...

  9. lamp 架构的搭建

    php 解释动态页面 php来连接数据库 mysql 页面信息和端口信息 存放数据 apache 前端web服务器,展现页面 源码编译安装这三个服务 配置下载apache: systemctl sto ...

最新文章

  1. Java项目打包部署war文件
  2. VTK:柏拉图式固体用法实战
  3. 将switch case转为条件驱动
  4. mysql修改表结果
  5. php获取文件目录文件名,php获取路径中的文件名的方法有哪些
  6. php怎么写显示商品图片,php – Woocommerce显示带有产品图片的产品
  7. 如何创建线程?如何实现Runnable接口?
  8. matlab 数据字典,以编程方式将数据存储到字典中
  9. 例说需求跟踪矩阵的作用
  10. ipad mini2 12.5.4成功降级 10.3.3
  11. word/wps 实用技巧: 批量改大纲标题样式
  12. 弄明白了清华校训“自强不息 厚德载物”的来龙去脉
  13. 扩展欧几里得___追风少年的坐骑(2016swust信息院赛)
  14. NTL密码算法开源库——模二整数上的矩阵(mat_GF2)
  15. Python----条件语句
  16. 利用模块化的可扩展参考设计瞄准ATCA和AMC市场机会
  17. shiro的学习使用
  18. 既是宋押司时 操盘手软件
  19. 基于阿里云盘二次开发实现磁盘同步,双向同步
  20. FPGA零基础学习:LED流水灯设计

热门文章

  1. eclipse 导出可运行jar包时三种Library handling的区别
  2. 安卓模拟器安装教程_安卓模拟器爱奇艺青春有你2打榜助力教程
  3. android如何实现批量删除操作,Android 基于聊天页面如何实现批量转发和批量删除...
  4. 计算机学院的优秀标语搞怪,搞笑大学毕业横幅标语
  5. 使用AC6编译RT-Thread(如何升级arm编译器)
  6. css3切角文本框_CSS3切角选项卡tabs
  7. MATLAB绘图设置坐标轴标注
  8. Linux下实用工具Vim常用命令总结
  9. ubuntu下安装火狐浏览器及快捷图标
  10. 用4.0蓝牙模块给arduino下载程序