架构LAMP

目录

1.什么是LAMP

2.LAMP组成及作用

3.搭建Apache httpd服务

4.编译安装mysqld 服务

5.编译安装PHP 解析环境

6.安装论坛


1.什么是LAMP

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

2.LAMP组成及作用

  • (平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台)
  • (前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容
  • (后台)MySQL:作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息
  • (中间连接)PHP/Perl/Python:作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发

3.搭建Apache httpd服务

关闭防火墙,将安装apache所需软件包上传到opt目录下,安装依赖环境

systemctl stop fiewalld
setenforce 0
yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl 

配置软件模块

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

编译及编译安装

make && make install

优化配置文件路径

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

添加httpd系统服务

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重载配置
[Install]                                      #服务安装的相关设置
WantedBy=multi-user.target                     #设置为多用户//配置完成后
systemctl start httpd.service                  #启动服务
systemctl enable httpd.service                 #设置开机自启

修改httpd 服务配置文件

vim /etc/httpd.confListen 192.168.88.40:80                    #52行--修改
ServerName www.kgc.com:80                  #197行--取消注释,修改
DocumentRoot "/usr/local/httpd/htdocs"     #221行--默认首页存放路径
DirectoryIndex index.html                  #255行--默认首页文件名设置//检查配置文件的配置项是否有误
httpd -t  或 apachectl -t//查看文件,重启服务
cat /usr/local/httpd/htdocs/index.html
systemctl restart httpd.service

浏览器访问验证

4.编译安装mysqld 服务

解压,安装依赖环境

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake openssl-devel

配置软件模块

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  \                           #指定默认使用的字符集编码    
-DDEFAULT_COLLATION=utf8_general_ci \               #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \                         #指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                  #安装INNOBASE存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \             #指定boost的路径
-DWITH_BOOST=boost \                                
-DWITH_SYSTEMD=1                                    #生成便于systemctl管理的文件

编译及安装,创建用户

make && make install                  #编译及安装
useradd -M -s /sbin/nologin  mysql    #创建mysql用户

修改mysql 配置文件

vim /etc/my.cnf[client] 
port = 3306
socket=/usr/local/mysql/mysql.sock                  #客户端设置[mysql]                                             #服务端设置
port = 3306
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代表允许所有
skip-name-resolve                                   #禁止域名解析
max_connections=4096                                #设置mysql的最大连接数
default-storage-engine=INNODB                       #指定默认存储引擎
max_allowed_packet=32M                              #设置在网络传输中一次消息传输量的最大值
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

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

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

设置路径环境变量

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

初始化数据库

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

添加mysqld系统服务

//用于systemctl服务管理
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/systemctl daemon-reload         #刷新识别
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

修改mysql 的登录密码

mysqladmin -u root password "123"      #给root账号设置密码为123,原始密码为空

授权远程登录

mysql -u root -p//授予root用户可以在所有终端远程登录,使用的密码是123,并对所有数据库和所有表有操作权限
grant all privileges on *.* to 'root'@'%' identified by '123';show databases;			#查看当前已有的数据库

5.编译安装PHP 解析环境

解压数据包并安装编译环境

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

配置软件模块

./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 扩展支持
--with-zlib \                                     #支持zlib功能,提供数据压缩
--with-curl \                                     #开启curl扩展功能
--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压缩格式

编译及安装

make && make install

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

/usr/local/php7/bin/php --ini
cp /opt/php-7.2.30/php.ini-development /usr/local/php7/php.ini
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件vim /usr/local/php7/php.ini                             #修改配置文件mysqli.default_socket = /usr/local/mysql/mysql.sock     #1170行--修改
date.timezone = Asia/Shanghai                           #939行--取消注释,修改

优化PHP

//把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php7/bin/* /usr/local/bin/php -m 			#查看PHP 加载了哪些模块

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

vim /etc/httpd.confAddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps        #393行--插入此两行内容DirectoryIndex index.html index.php                 #255行--修改首页文件名设置LoadModule php7_module
modules/libphp7.so                                  #检查支持php7的模块是否存在

验证PHP 测试页

rm -rf /usr/local/httpd/htdocs/index.htmlvim /usr/local/httpd/htdocs/index.php<?php
phpinfo();
?>systemctl restart httpd.service         #重启服务

6.安装论坛

创建数据库,并进行授权

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

解压论坛压缩包

unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis        #解压
cd /opt/dis/dir_SC_UTF8/                              #进入文件
cp -r upload/ /usr/local/httpd/htdocs/bbs             #上传站点更新包

更改论坛目录的属主

cd /usr/local/httpd/htdocs/bbschown -R daemon ./config \
chown -R daemon ./data \
chown -R daemon ./uc_client \
chown -R daemon ./uc_server/data

浏览器访问验证

数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:123
管理员账号:admin
管理员密码:123http://192.168.80.10/bbs/admin.php        #论坛后台管理员页面//我这边是已经安装好了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB算法实战应用案例精讲-【人工智能】漫谈自动驾驶

目录 常用数据集 一、自动驾驶领域数据集 1. KITTI数据集 2.CityScapes数据集 3.BDD100K数据集

go与ioc

在Go开发服务端程序时&#xff0c;使用IoC&#xff08;Inversion of Control&#xff09;机制并不像在Java等语言中那样普遍。Go语言的设计哲学倾向于简洁和直接&#xff0c;更注重代码的可读性和可维护性。 在Go中&#xff0c;通常会使用依赖注入&#xff08;Dependency Inje…

【Python】视频剪辑小程序

近期遇到一些录制的视频需要剪辑。 手机上剪辑操作很耗时&#xff0c;有几个G的视频&#xff0c;花了一天的空余时间去剪辑。电脑上也有格式工厂&#xff0c;有很方便。 可是学了Pthon&#xff0c;又无意中了解到了moviepy这个库&#xff0c;于是自己写了个简单的视频剪辑程序。…

Windows安装kafka

压缩包下载地址&#xff1a;https://www.apache.org/dyn/closer.cgi?path/kafka/3.6.1/kafka_2.13-3.6.1.tgz 启动kafka步骤 zookeeper-server-start.bat rem 闭命令提示符窗口的命令回显&#xff0c;这样在运行脚本时不会显示脚本的具体命令内容 echo offrem 命令行启动未…

Proteus仿真--8×8LED点阵屏仿电梯数字滚动显示

本文介绍基于88LED点阵屏仿电梯数字滚动显示设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中K1-K5的5个按键分别代表不同楼层&#xff0c;摁下按键后在8X8LED上便会显示到对应楼层的跳变信息&#xff0c;模拟电梯的运作 仿真运行视频 Proteus仿…

nodejs多线程,fork和Worker

一、前言 javascript是单线程执行的&#xff0c;如果想要多线程执行&#xff0c;那么相当于再运行一个node,其实不该理解成多线程&#xff0c;更像是多进程。 二、Worker(‘worker_threads’模块) worker有点类似exec&#xff0c;直接再cmd执行node命令&#xff0c;不同的是两…

《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12周24期免费AI课程,炫酷3D LED点阵设计,MDK5.39发布

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程&#xff1a; 【实战技能】 单步运行源码分析&#xff0c;一期视频整明白FreeRTOS内核源码框架和运行…

【STM32】TIM定时器基本定时功能

第一部分&#xff1a;定时器基本定时的功能&#xff1b; 第二部分&#xff1a;定时器的输出比较功能&#xff1b; 第三部分&#xff1a;定时器输入捕获的功能&#xff1b; 第四部分&#xff1a;定时器的编码接口。 1 TIM简介 TIM&#xff08;Timer&#xff09;定时器&#…

在OpenCV基于深度学习的超分辨率模型实践

1. 引言 OpenCV是一个开源的计算机视觉库&#xff0c;拥有大量优秀的算法。基于最新的合并&#xff0c;OpenCV包含一个易于使用的接口&#xff0c;主要用于实现基于深度学习方法的超分辨率&#xff08;SR&#xff09;。该接口包含预先训练的模型&#xff0c;这些模型可以非常容…

redis中使用事务保护数据完整性

事务是指一个执行过程&#xff0c;要么全部执行成功&#xff0c;要么失败什么都不改变。不会存在一部分成功一部分失败的情况&#xff0c;也就是事务的ACID四大特性&#xff08;原子性、一致性、隔离性、持久性&#xff09;。但是redis中的事务并不是严格意义上的事务&#xff…

使用flutter_native_splash替换启动图片,iOS端替换不成功

使用flutter_native_splash替换启动图片&#xff0c;iOS端替换不成功 1、删除App重启手机&#xff1b;2、重新创建一个新的LaunchScreen.storyboard&#xff0c;比如命名为NewLaunchScreen.storyboard&#xff0c;在General里面设置Launch Screen File为这个新的NewLaunchScree…

蓝桥杯 day01 奇怪的数列

题目描述 奇怪的数列 从 X 星截获一份电码&#xff0c;是一些数字&#xff0c;如下&#xff1a; 13 1113 3113 132113 1113122113 ⋯⋯ YY 博士经彻夜研究&#xff0c;发现了规律&#xff1a; 第一行的数字随便是什么&#xff0c;以后每一行都是对上一行"读出来…

智能优化算法应用:基于蝗虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蝗虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蝗虫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝗虫算法4.实验参数设定5.算法结果6.参考文献7.MA…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第二次作业

1 设 F { A B → C , B → D , C D → E , C E → G H , G → A } F\{AB\rightarrow C,B\rightarrow D, CD\rightarrow E, CE\rightarrow GH, G\rightarrow A \} F{AB→C,B→D,CD→E,CE→GH,G→A}&#xff0c;用推理的方法证明 F ∣ A B → G F\;|AB\rightarrow G F∣AB→…

持续集成交付CICD:使用Maven命令上传Nexus制品

目录 一、实验 1.使用Maven命令上传Nexus制品&#xff08;第一种方式&#xff09; 2.使用Maven命令上传Nexus制品&#xff08;第二种方式&#xff09; 一、实验 1.使用Maven命令上传Nexus制品&#xff08;第一种方式&#xff09; &#xff08;1&#xff09;指定一个 hoste…

说说React jsx转换成真实DOM的过程?

在React中&#xff0c;JSX&#xff08;JavaScript XML&#xff09;是一种语法糖&#xff0c;用于描述用户界面的结构和组件关系。当你编写React组件并包含JS JSX解析&#xff1a;React中的JSX代码首先会被解析成JavaScript对象。这个过程通常是通过Babel等工具进行的&#xff0…

Flutter视频播放器在iOS端和Android端都能实现全屏播放

Flutter开发过程中&#xff0c;对于视频播放的三方组件有很多&#xff0c;在Android端适配都挺好&#xff0c;但是在适配iPhone手机的时候&#xff0c;如果设置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都为false的情况下&#xff0c;无法…

pytorch 笔记:dist 和 cdist

1 dist 1.1 基本使用方法 torch.dist(input, other, p2) 计算两个Tensor之间的p-范数 1.2 主要参数 input输入张量other另一个输入张量p范数 input 和 other的形状需要是可广播的 1.3 举例 import torchxtorch.randn(4) x #tensor([ 1.2698, -0.1209, 0.0462, -1.3271…

基于PaddleOCR银行卡识别实现(四)之uni-app离线插件

目的 在前三篇文章中完成了银行卡识别整个模型训练等工作&#xff0c;通过了解PaddleOCR的端侧部署&#xff0c;我们也可以将银行卡号检测模型和识别模型移植到手机中&#xff0c;做成一款uni-app手机端离线银行卡号识别的应用。 准备工作 为了不占用过多篇幅&#xff0c;这…

Nginx的性能优化、安全以及防盗链配置

目录 一、nginx的日志分割 二、nginx性能优化之启用epoll模型 三、nginx性能优化之设置worker进程数并与cpu进行绑核 四、nginx性能优化之调整worker的最大打开文件数和最大处理连接请求数量 五、nginx性能优化之启用gzip压缩&#xff0c;提高传输&#xff0c;减少带宽 六…