LAMP架构

LAMP

1. LAMP概述:

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

1.2. 各组件的主要作用如下:

1. (平有台) Linux:

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

2. (前台) Apache:

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

3. (后台)MySQL:

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

4. (中间连接)PHP/Perl/Python

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

流程:

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

1.3. 总结LAMP

  1. LAMP 就是网站
  2. Linux 平台底座
  3. apache 前端wcb,供用户访问网页,处理静态页面请求
  4. myaql 后端数据库,存储用户信息,业务数据等,暴露 api 接口供编程程序来连接管理操作数据
  5. php 处理动态页面的请求,解释动态页面文件:作为中间件负责沟通web服务器和后端数据库的协同工作 (用户连接到apaceh服务的web页面发送请求,通过php代码连接mysql的api接口管理数据库中的数据)

安装顺序概述

Linux->apache / mysql -> php

编译安装Apache httpd服务

2.关闭防火墙,将安装Apache所需的软件包传到/opt/目录下

less 复制代码
less
复制代码
[root@localhost opt]#systemctl stop firewalld
[root@localhost opt]#systemctl disable firewalld  //永久关闭防火墙
[root@localhost opt]#setenforce 0    //临时关闭xelinux
[root@comeo ~]#vim /etc/sysconfig/selinux 

apr-1.6.2.tar.gz

apr-util-1.6.0.tar.gz

#apr组件包用于支持Apache上层应用跨平台,提供底层接口库,能有效的提高并发连接数、降低进程和减少访问堵塞。

2.2. 安装环境依赖包

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

2.3. 配置软件模块

ini 复制代码
[root@comeo opt]#mkdir /dev/sr0 /mnt   挂载

[root@comeo opt]#yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl  //安装依赖包环境
2.4. 配置软件模块
ini 复制代码
切换到opt目录,解压3个软件包
[root@comeo opt]#ls  //共有三个软件包
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  rh
[root@comeo opt]#tar zxvf apr-1.6.2.tar.gz 
[root@comeo opt]#tar zxvf apr-util-1.6.0.tar.gz 
[root@comeo opt]#tar jxvf httpd-2.4.29.tar.bz2 


#apr-1.6.2目录和apr-util-1.6.0目录,移动到/opt/httpd-2.4.29/srclib/目录下
[root@comeo opt]#mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
[root@comeo opt]#mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util


#切换至httpd源代码包的释放目录,运行configure脚本,指定安装路径和安装模块
[root@comeo opt]#cd httpd-2.4.29/

运行configure
[root@comeo o]#./configure \ 
[root@comeo httpd-2.4.29]#./configure \ 
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi
2.5. 编译及安装
less 复制代码
less
复制代码
[root@comeo httpd-2.4.29]#make -j 2   //表示开2核同时进行编译
[root@comeo httpd-2.4.29]#make install  //安装
2.6. 优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别

建立软连接主配置文件httpd.conf放入/etc/目录下

less 复制代码
[root@comeo httpd-2.4.29]#ln -s /usr/local/httpd/conf/httpd.conf  /etc/
[root@comeo httpd-2.4.29]#ln /usr//local/httpd//bin/* /usr/local/bin/
2.7. 添加httpd系统服务
ini 复制代码
[root@comeo httpd-2.4.29]#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         #设置为多用户


[root@comeo httpd-2.4.29]#systemctl start httpd.service    /开启httpd服务
[root@comeo httpd-2.4.29]#systemctl enable httpd.service   //设置为开机自启
2.8. 修改httpd 服务配置文件

/usr/local/httpd/conf/httpd.conf,修改配置文件前建议先进行备份。

less 复制代码
[root@comeo httpd-2.4.29]#cd /usr/local/httpd/conf
[root@comeo conf]#ls
extra  httpd.conf  magic  mime.types  original
[root@comeo conf]#cp httpd.conf{,.bak}   //备份配置文件
[root@comeo conf]#ls
extra  httpd.conf  httpd.conf.bak  magic  mime.types  original


[root@comeo conf]#vim /etc/httpd.conf   //编辑配置文件
--52行--修改为本机的IP用于监听
52 Listen 192.168.85.60:80

--197行--取消注释,修改  域名
197 ServerName www.wang.com:80

--221行--默认首页存放路径
221 DocumentRoot "/usr/local/httpd/htdocs"

--255行--默认首页文件名设置
255     DirectoryIndex index.html

检查配置文件的配置项是否有误  两种方式
[root@comeo conf]#apachectl -t
Syntax OK
[root@comeo conf]#httpd -t
Syntax OK
2.9. 浏览器访问验证

重启httpd服务,确认80端口处于监听状态。

将IP与域名的映射关系写入/etc/hosts文件。

ruby 复制代码
[root@comeo conf]#systemctl restart httpd.service 
[root@comeo conf]#netstat -anpt | grep 80  
tcp        0      0 192.168.30.200:80        0.0.0.0:*               LISTEN      122703/httpd     


[root@comeo conf]#echo "192.168.30.200 www.liyi.com" >> /etc/hosts
[root@comeo conf]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.30.200 www.liyi.com

编译安装mysqld 服务

1. 安装环境依赖包

ini 复制代码
 [root@comeo ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
 
 #各程序作用解释如下:
 gcc                     #C语言的编译器
 gcc-c++                 #C++的编译器
 ncurses                 #字符终端下图形互动功能的动态库
 ncurses-devel           #ncurses开发包
 bison                   #语法分析器
 cmake                   #mysql需要用cmake编译安装

2. 配置软件模块

csharp 复制代码
 [root@comeo ~]# cd /opt/
 [root@comeo opt]# tar zxf mysql-5.7.17.tar.gz
 [root@comeo opt]# tar zxf boost_1_59_0.tar.gz
 [root@comeo opt]# mv boost_1_59_0 /usr/local/boost    //移动目录位置并重命名

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

ini 复制代码
 [root@comeo opt]# cd /opt/mysql-5.7.17/       //切换到源码目录
 [root@comeo 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的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧。

3. 编译及安装

go 复制代码
 [root@comeo mysql-5.7.17]# make -j 2 && make install    //2核同时进行编译,编译后安装
4. 创建mysql用户
perl 复制代码
perl
复制代码
 [root@comeo local]# useradd -M -s /sbin/nologin  mysql     //-M表示不生成家目录,指定登录shell为/sbin/nologin,即该用户无法登录系统
5. ## 修改mysql 配置文件
ini 复制代码
 [root@comeo ~]#cd /usr/local/
 [root@comeo local]# 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代表允许所有,如允许多个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后,不能用双引号来引用字符串,因为它被解释为识别符

6. 更改mysql安装目录和配置文件的属主属组
perl 复制代码
 [root@comeo local]# chown -R mysql:mysql /usr/local/mysql/
 [root@comeo local]# chown mysql:mysql /etc/my.cnf
7. ## 设置路径环境变量
perl 复制代码
 [root@comeo local]# echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
 [root@comeo local]# source /etc/profile      //刷新文件使之立即生效
8. 初始化数据库
ini 复制代码
 [root@comeo local]# cd /usr/local/mysql/bin/
 [root@comeo bin]# ./mysqld \
 --initialize-insecure \             #生成初始化密码为空
 --user=mysql \                      #指定管理用户
 --basedir=/usr/local/mysql \        #指定数据库的安装目录
 --datadir=/usr/local/mysql/data     #指定数据库文件的存储路径
9. 添加mysqld系统服务
ruby 复制代码
 [root@comeo bin]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/      //用于systemctl服务管理
 [root@comeo bin]# systemctl daemon-reload           //重新加载,刷新识别
 [root@comeo bin]# systemctl start mysqld.service  #开启服务
 [root@comeo bin]# systemctl enable mysqld         #开机自启动
 [root@comeo bin]#netstat -anpt | grep 3306
 tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      13709/mysqld 
10. 修改mysql 的登录密码
arduino 复制代码
[root@comeo local]# mysqladmin -u root password "abc123" //给root账号设置密码为abc123,原始密码为空

直接按回车即可
11. 授权远程登录
csharp 复制代码
[root@comeo bin]# mysql -u root -p     #使用root用户登录数据库,-p表示密码登录

grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限

show databases;			#查看当前已有的数据库
quit   #退出

编译安装PHP解析环境

1. 安装GD库和GD库关联程序,用来处理和生成图片

csharp 复制代码
[root@comeo bin]# 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. 配置软件模块

python 复制代码
[root@comeo opt]# cd /opt
[root@comeo opt]# tar zxvf php-7.2.30.tar.gz
[root@comeo opt]# cd /opt/php-7.2.30/
./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	

3. 编译及安装

csharp 复制代码
csharp
复制代码
[root@comeo php-7.2.30]# make -j 4 && make install

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

ini 复制代码
[root@comeo php-7.2.30]# cp /opt/php-7.1.10/php.ini-development /usr/local/php7/php.ini
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件

[root@comeo php-7.2.30]# vim /usr/local/php7/php.ini
#取消934行的注释,修改   
939 date.timezone = Asia/Shanghai    
#1179行,添加文件路径   

1179 mysqli.default_socket = /usr/local/mysql/mysql.sock
5. 优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
csharp 复制代码
[root@comeo php-7.2.30]# ln -s /usr/local/php7/bin/* /usr/local/bin/
[root@comeo php-7.2.30]# php -m  #查看PHP 加载了哪些模块
6. 修改httpd 服务的配置文件,让apache支持PHP
bash 复制代码
[root@comeo php-7.2.30]# vim /etc/httpd.conf 
256行--修改首页文件名设置
256     DirectoryIndex index.html index.php

393行--插入以下内容
394     AddType application/x-httpd-php .php
395     AddType application/x-httpd-php-source .phps


#检查支持php7的模块是否存在
156 LoadModule php7_module        modules/libphp7.so
7. 验证PHP 测试页
php 复制代码
php
复制代码
[root@comeo php-7.2.30]# cd /usr/local/httpd/htdocs/
[root@comeo htdocs]# ls
bbs  index.html.bak  index.php
[root@comeo htdocs]#vim /usr/local/httpd/htdocs/index.php

<?php
phpinfo();
?>

[root@comeo htdocs]# systemctl restart httpd.service

安装论坛

1. 创建数据库,并进行授权

ini 复制代码
[root@comeo ~]# mysql -u root -p

CREATE DATABASE bbs;
#创建一个数据库

GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码admin123

flush privileges;
#刷新数据库

show databases;

quit 
#退出

2. 解压论坛压缩包

csharp 复制代码
[root@comeo ~]# cd /opt
[root@comeo opt]# unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis
[root@comeo opt]# cd /opt/dis/dir_SC_UTF8/
[root@comeo dir_SC_UTF8]# cp -r upload/ /usr/local/httpd/htdocs/bbs //上传站点更新包

3. 更改论坛目录的属主

perl 复制代码
[root@comeo dir_SC_UTF8]# ps aux | grep httpd
root      22117  0.0  0.2 272012  8356 ?        Ss   12:12   0:00 /usr/local/httpd/bin/httpd
daemon    22118  0.0  0.4 1171924 13976 ?       Sl   12:12   0:00 /usr/local/httpd/bin/httpd
daemon    22119  0.0  0.5 1106580 15788 ?       Sl   12:12   0:00 /usr/local/httpd/bin/httpd
daemon    22120  0.0  0.3 834788 10788 ?        Sl   12:12   0:00 /usr/local/httpd/bin/httpd
root      23769  0.0  0.0 112676   984 pts/3    S+   14:46   0:00 grep --color=auto httpd

[root@comeo dir_SC_UTF8]# cd /usr/local/httpd/htdocs/bbs
[root@comeo bbs]# chown -R daemon ./config
[root@comeo bbs]# chown -R daemon ./data
[root@comeo bbs]# chown -R daemon ./uc_client
[root@comeo bbs]# chown -R daemon ./uc_server/data
4. 浏览器访问验证
markdown 复制代码
论坛页面访问
http://192.168.30.200/bbs
----------------------------------------------------------------------------------------------------------
数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123
----------------------------------------------------------------------------------------------------------
论坛后台管理员页面
http://192.168.30.200/bbs/admin.php
相关推荐
盼小辉丶15 小时前
PyTorch强化学习实战(7)——表格学习与贝尔曼方程
pytorch·深度学习·强化学习
盼小辉丶4 天前
PyTorch强化学习实战——使用交叉熵方法解决 FrozenLake 环境
人工智能·pytorch·python·强化学习
Luca_kill4 天前
深度解构 Hermes Agent:从“中央调度”到“自我进化”的架构哲学
大模型·强化学习·agent框架·ai架构·hermes agent
盼小辉丶5 天前
PyTorch强化学习实战(6)——交叉熵方法详解与实现
人工智能·pytorch·python·强化学习
盼小辉丶6 天前
PyTorch强化学习实战(5)——PyTorch Ignite 事件驱动机制与实践
人工智能·pytorch·python·强化学习
joshchen2157 天前
强化学习基础(赵世钰)第一章
人工智能·深度学习·算法·机器学习·强化学习
joshchen2157 天前
强化学习基础(赵世钰)第二章 贝尔曼方程
人工智能·python·机器学习·强化学习
星马梦缘10 天前
强化学习实战8.3——用PPO打赢星际争霸【编写自定义环境GYM】
人工智能·强化学习·gymnasium·星际争霸·sc2·starcraft2·sb3
盼小辉丶10 天前
PyTorch强化学习实战(4)——PyTorch基础
人工智能·pytorch·python·强化学习
星马梦缘11 天前
强化学习实战8——用PPO打赢星际争霸【整合版】
强化学习·ppo·星际争霸·sc2·starcraft2·sb3