Linux:LAMP架构与论坛搭建

目录

一、动态资源与语言

[二、LAMP 架构的组成](#二、LAMP 架构的组成)

三、CGI和astcgi

3.1CGI​​​​​​

3.2fastcgi

3.3CGI和fastcgi比较

[3.4 PHP 配置](#3.4 PHP 配置)

[3.5 Opcode语言](#3.5 Opcode语言)

[四、编译安装Apache http 服务](#四、编译安装Apache http 服务)

五、安装论坛


一、动态资源与语言

WEB 资源类型:

  • 静态资源:原始形式与响应内容一致,在客户端浏览器执行

  • 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端

注意:静态和动态的区别,不在于网页是否能动态变化,而在于服务端的页面文件和客户端得到页面文件是否一致

二、LAMP 架构的组成

LAM(M)P:

  • L:linux

  • A:apache (httpd)

  • M:mysql, mariadb

  • P:php, perl, python

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境。

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

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

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

在搭建LAMP时安装顺序一般是linux Apache mysql php 。一般PHP放在最后,负责沟通web服务器和数据库系统以协同工作。

apache主要实现如下功能:

  1. 第一:处理http的请求、构建响应报文等自身服务;

  2. 第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);

  3. 第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。

mysql 主要实现如下功能:

  1. 第一:提供PHP程序对数据的存储;

  2. 第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。

php主要实现如下功能:

  1. 第一:提供apache的访问接口,即CGI或Fast CGI(FPM);

  2. 第二:提供PHP程序的解释器;

  3. 第三:提供mysql数据库的连接函数的基本环境。

三、CGI和astcgi

3.1CGI​​​​​​

CGI:Common Gateway Interface 公共网关接口

CGI 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准

请求流程:

Client -- (http协议) --> httpd -- (cgi协议) --> application server (program file) -- (mysql协议) --> mysql

3.2fastcgi

通用网关接口(FastCGI)是一段程序,运行在服务器上。

fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出

请求流程:

Client -- (http协议) --> httpd -- (fastcgi协议) --> fastcgi服务器 -- (mysql协议) --> mysql

3.3CGI和fastcgi比较

CGI: 兼职, 一次性的过河拆桥式的服务

FASTCGI: 专职,全周期的持续式的服务

3.4 PHP 配置

php 的配置文件:/etc/php.ini, /etc/php.d/*.ini

配置文件在php解释器启动时被读取

对配置文件的修改生效方法

  • Modules:重启httpd服务
  • FastCGI:重启php-fpm服务

3.5 Opcode语言

pcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL

PHP的语言引擎Zend执行PHP脚本代码一般会经过如下4个步骤

1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens)

2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式

3、Compilation 将表达式编译成Opcode

4、Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能

即:扫描-->分析-->编译-->执行

四、编译安装Apache http 服务

关闭防火墙

安装依赖环境

cd /data

yum install -y\
gcc \ #c语言编译器
gcc-c++ \ #c编译器
make \ #源代码编译器
pcre\ #pcre函数库
pcre-devel \ #pcre接口开发包
expat-devel \ #用于支持网站解析HTML、XML文件
perl #perl 语言编译器

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

下载并解压

移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中

编译安装

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

make -j2 && make install

操作建立软连接

root@localhost httpd-2.4.29\]#cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd 将文件拷入/etc/init.d/httpd \[root@localhost httpd-2.4.29\]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ 建立配置文件软连接放入etc目录下 \[root@localhost httpd-2.4.29\]# ln -s /usr/local/httpd/bin/\* /usr/local/bin/ 将启动文件放入/usr/local/bin/目录下可以直接使用

添加httpd系统服务

root@localhost httpd-2.4.29\]# vi /etc/init.d/httpd # chkconfig: 35 85 21 开头加入 //35级别自动运行 第85个启动 第21个关闭 # description: Apache is a World Wide Web server \[root@localhost httpd-2.4.29\]# vi /usr/local/httpd/conf/httpd.conf 修改主机地址 51 Listen 192.168.91.203:80 将你的地址加入 52 Listen 192.168.30.203 199 ServerName www.example.com:80 将前面注释取消 \[root@localhost httpd-2.4.29\]# chkconfig --add httpd 将httpd加入service管理器 \[root@localhost httpd-2.4.29\]# service httpd start 启动服务注意使用了service启动不要使用systemctl关闭,两种无法混用

真机网页打开

四、编译安装mysql

安装依赖包

[root@localhost ~]# yum install -y ncurses-devel autoconf cmake

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

useradd -s /sbin/nologin mysql

解压软件包并切换到编译目录,并编译安装

cd /data
tar xf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 指定将 mysql 数据库程序安装到某目录下,如目录/usr/local/ mysql。
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ 指定套接字文件的存储路径,数据库连接的文件
-DSYSCONFDIR=/etc \ 指定初始化参数文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \ 指定默认使用的字符集编码,如 utf8。
-DDEFAULT_COLLATION=utf8_general_ci \ 指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
-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=boost \
-DWITH_SYSTEMD=1

make -j2 && make install

#####数据库目录进行权限调整###

建立调整配置文件

设置环境变量

编译安装php

配置软件模块

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

4、编译及安装

make -j2 && make install

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

cp /opt/php-7.1.10/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行--修改 1170 G,大写的G,直接跳转

date.timezone = Asia/Shanghai 939行

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

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

php -m 查看PHP 加载了哪些模块

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

vim /etc/httpd.conf

AddType application/x-httpd-php .php --393行--插入以下内容(插在下面,原行不删)

AddType application/x-httpd-php-source .phps ##这里的点前面空格一定要加,否则报错

DirectoryIndex index.html index.php --255行--修改首页文件名设置

LoadModule php7_module modules/libphp7.so ---156行 ---检查支持php7的模块是否存在(可以用'/'在文件中查找 )
验证PHP 测试页

rm -rf /usr/local/httpd/htdocs/index.html

vim /usr/local/httpd/htdocs/index.php

<?php

phpinfo();

?>

systemctl restart httpd.service

用真机打开

五、安装论坛

mysql -uroot -pabc123
mysql> CREATE DATABASE bbs; //创建一个数据库//

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

select user,host from mysql.user;

mysql>flush privileges; //刷新数据库//

unzip Discuz_X3.4_SC_UTF8.zip

cd dir

cp -r upload/ /usr/local/httpd/htdocs/bbs

cd /usr/local/httpd/htdocs

cd bbs

chown -R daemon ./config

chown -R daemon ./data

chown -R daemon ./uc_client

chown -R daemon ./uc_server/data

相关推荐
国际云,接待1 分钟前
云服务器的运用自如
服务器·架构·云计算·腾讯云·量子计算
不念霉运1 分钟前
Gitee DevOps:中国企业数字化转型的“本土化加速器“
运维·gitee·团队开发·代码规范·devops·代码复审
安迪小宝20 分钟前
6 任务路由与负载均衡
运维·python·celery
遇见火星31 分钟前
jenkins流水线常规配置教程!
运维·docker·jenkins
LunarCod2 小时前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
什么半岛铁盒2 小时前
Linux信号的保存
linux·运维·网络
noravinsc2 小时前
国产化中间件 替换 nginx
运维·nginx·中间件
惜.己3 小时前
Linux常用命令(十四)
linux·运维·服务器
linkingvision3 小时前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储
doupoa4 小时前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric