一、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等)进行交互的协议/接口
特点 | CGI | FastCGI |
运行方式 | 每个请求启动新的进程 | 复用进程处理多个请求 |
性能 | 每个请求需要加载代码 | 多个请求共享同一份代码 |
资源消耗 | 每个请求都需要消耗大量资源 | 多个请求间资源共享 |
扩展性 | 难以扩展 | 更容易实现扩展性 |
缓存能力 | 依赖于服务器配置 | 有较好的缓存能力 |
安全性 | 比较低 | 更高 |
适用场景 | 适用于小型或低流量应用 | 适用于高流量或复杂应用 |
二、搭建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 = 1sql_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.phphttp://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成功~