基于 LAMP 架构实现 Discuz 论坛搭建

目录

1. LAMP 架构介绍

1.1 概述

1.2 构建顺序

1.3 各组件主要作用

1.4 源码编译安装的优点

2. 架构搭建过程

2.1 安装前准备

2.2 安装 apache

2.3 安装 mysql

2.4 安装 PHP


1. LAMP 架构介绍

1.1 概述

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

1.2 构建顺序

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

1.3 各组件主要作用

基于 LAMP 架构实现 Discuz 论坛搭建_第1张图片

1.4 源码编译安装的优点

 Yum 安装软件包的优点在于方便快捷,不用考虑依赖包,但 “缺点” 也正好是这一点,即在安装过程中,人为无法干预,源里面有什么就给你装什么,导致了一定的局限性

源码安装的特点就是,在编译安装的过程中,可以设定参数,即可以按照需求来进行安装,并且安装的版本也可以自己选择,比较灵活

2. 架构搭建过程

2.1 安装前准备

systemctl stop firewalld && systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
ntpdate ntp1.aliyun.com
reboot	#重启主机

2.2 安装 apache

下载安装包到指定目录(目录自行选定)

systemctl stop firewalld && systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
ntpdate ntp1.aliyun.com
reboot	#重启主机

解压安装包到 /opt 目录

#apr 组件包用于支持 Apache 上层应用跨平台,提供底层接口库,能有效的降低并发连接数、降低进程和减少访问堵塞
tar xf /data/apr-1.6.2.tar.gz -C /opt
tar xf /data/apr-util-1.6.0.tar.gz -C /opt 
tar xf /data/httpd-2.4.29.tar.bz2 -C /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

安装依赖环境

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

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

编译安装

cd /opt/httpd-2.4.29/

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

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

make -j 4 && make install

优化配置文件路径

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

修改 httpd 服务配置文件

vim /etc/httpd.conf

#52行--修改为
Listen 192.168.10.20:80
#197行--取消注释,修改
ServerName www.test.com:80
#221行--默认首页存放路径
DocumentRoot "/usr/local/httpd/htdocs"
#255行--默认首页文件名设置
DirectoryIndex index.html
//保存

#检查配置文件语法是否正确
httpd -t 或 apachectl -t

#httpd 服务测试显示内容
cat /usr/local/httpd/htdocs/index.html

It works!

服务管理

方法——:适用于 centos6
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
chmod +x /etc/init.d/httpd

vim /etc/init.d/httpd
#!/bin/sh				#添加如下内容
# chkconfig: 35 85 21   #35 级别自动运行,第 85 个启动,第 21 个关闭(特殊方法注释也可执行)
# description: Apache is a World Wide Web server
//保存

chkconfig --add httpd	#将 httpd 服务加入到 service 管理器

其他启动方式:
systemctl start httpd.service
或
service httpd start
————————————————————————————————————————————————————————————————
方法二:适用于 centos7
cat > /usr/lib/systemd/system/httpd.service <

2.3 安装 mysql

安装环境依赖包

 

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

配置软件模块

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管理的文件
   

存储引擎选项:
MYISAM,MERGE,MEMORY,和 CSV 引擎是默认编译到服务器中,并不需要明确地安装。
静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)

注意:如果在 CMAKE 的过程中有报错,当报错解决后,需要把源码目录中的 CMakeCache.txt 文件删除,然后再重新 CMAKE,否则错误依旧

修改 mysql 配置文件

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					#设置服务器字符集编码格式为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号
   
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中的自增长列可以从0开始。默认情况下自增长列是从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后,不能用双引号来引用字符串,因为它被解释为识别符

2.4 安装 PHP

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

配置 PHP 软件模块

cd /opt/php-7.1.10/

./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压缩格式

复制模版文件作为 PHP 的主配置文件

#在测试环境时使用 php.ini-development 文件,而在生产环境时使用 php.ini-production 文件
cp /opt/php-7.1.10/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/mysql.sock

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

vim /etc/httpd.conf

#添加 index.php
255 
256     DirectoryIndex index.html index.php
257 

#在 392 行下方插入以下内容,让 apache 可以支持 .php 格式的网页文件
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

##检查 156 行默认支持 php7 的模块是否存在
LoadModule php7_module   modules/libphp7.so

创建、编辑 php 页面文件

cd /usr/local/httpd/htdocs/ && mv index.html index.html.bak
   
cat > /usr/local/httpd/htdocs/index.php<
EOF
   
systemctl restart httpd.service

你可能感兴趣的:(linux,node.js,python)