Web服务器群集:部署LAMP平台

news2024/9/26 3:31:29

目录

一、理论

1.LAMP平台

2.Apache网址服务基础

2.httpd服务器的基本配置

3.构建虚拟Web主机

4.MySQL服务

5.构建PHP运行环境

二、实验

1.LAMP架构+DISCUZ论坛应用

三、问题

1.虚拟机内存分配上限问题,内存上限只能加到3G。

2.虚拟机CPU如何设置才更加合理

         3.虚拟机内存如何设置才更加合理

         4.httpd启动报错

5.mysql登录失败

四、总结


 

一、理论

1.LAMP平台

(1)概念

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

LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言。

(2)原理图

58c9005bff88470f80aaca67f22210a6.png

(3)LAMP各组件主要作用

表1 LAMP各组件作用

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

(4)LAMP服务平台的优点

表2 LAMP平台优点

优点描述
成本低廉可快速获得免费使用
可定制拥有大量的额外组件和扩展功能模块,可以根据需要定制或者自行开发添加新功能
易于开发代码简洁,与HTML语言结合度高,容易修改网页代码
方便易用PHP、Perl属于解释性语言,开发的程序不需要编译,可以直接移植使
安全和稳定开源优势,发现问题能够很快解决

(5)编译安装的优点

① 具有较大的自由度,功能可定制;

② 可及时获得最新的软件版本;

③ 普遍适用于大多数Linux版本,便于一直使用。

(6)构建LAMP平台顺序

在构建LAMP平台时,各组件的安装顺序依次为:

表3 LAMP组件安装顺序

安装顺序安装内容组件环境
1

Linux系统

 
2Apache服务器对 Apache 的配置文件 httpd.conf 调整,用来确定 PHP的运行参数
3MySQL数据库 
4PHP环境对 PHP的配置文件 php.ini调整,用来加载 libphp5.so 模块,以支持 PHP 网页。

其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作。

2.Apache网址服务基础

(1)Apache概念

  Apache(阿帕奇)是世界使用排名第一的Web服务器器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将PHP/Perl/Python等解释器编译到服务器中。

(2)Apache下载

 官网地址:

Welcome! - The Apache HTTP Server Project

(3) Apache工作模式

工作模式:BS模式

工作端口:80

SSL端口:在80端口的基础上加上安全认证,即https

(4)Apache配置文件

表4 Apache配置文件

关键字描述
ServerRoot表示apache的根目录
Listen监听端口
Include conf.modules.d/*.conf在这个路径下指定.conf文件,就会优先检查该目录,避免在修改源文件出现错误
Options Indexes FollowSymLinks目录浏览
User apache用户为apache
Group apache组为apache
ServerAdminapache的管理员,当网站出现情况时,apache会根据这个字段指定的管理员发送消息或邮件
AddDefaultCharset UTF-8apache支持的语言,默认为UTF-8
LoadModule加载动态模块

(5) apr

  APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。

(6)  apr-util

  apr-util该目录中也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等。

2.httpd服务器的基本配置

(1)httpd概念

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

(2))httpd工作模型与工作方式

工作模型

工作方式
prefork多进程模型,预先生成进程,一个请求用一个进程响应一个主进程负责生成n个子进程,子进程也称为工作进程。每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
worker基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
event基于事件的驱动,一个进程处理多个请求

(3)httpd自带的工具程序

工具功能
htpasswdbasic认证基于文件实现时,用到的帐号密码生成工具
apachectlhttpd自带的服务控制脚本,支持start,stop,restart
apxs由httpd-devel包提供的,扩展httpd使用第三方模块的工具
rotatelogs日志滚动工具
suexec访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
abapache benchmark,httpd的压力测试工具

(4)httpd程序环境

表5 httpd配置文件

文件/目录功能 
/etc/httpd/conf/httpd.conf主配置文件 
/etc/httpd/conf.modules.d/*.conf模块配置文件 
/etc/httpd/conf.d/*.conf辅助配置文件 
/usr/lib64/httpd/modules/模块文件路径 
/var/www/html站点文档目录 
/var/log/httpd/access_log访问日志 
/var/log/httpd/error_log错误日志 

 

3.构建虚拟Web主机

(1)构建方式

在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机。
构建虚拟主机的三种方式:

表6 虚拟Web主机构建方式

方式功能
基于域名为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。
基于IP地址为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也不相
同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
基于端口这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用
了不同的TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才
能访问。

4.MySQL服务

  (1)  数据库概念

数据库(DB,DataBase),它是软件,安装在操作系统之上;SQL,可以存储大量的数据,500万以下,500万以上要做索引优化。作用是存储数据,管理数据。

数据库分类:

表7 数据库分类

类别描述
关系型数据库:行、列(SQL)

MySQL、Oracle、Sql Server、DB2、SQLLite通过表和表之间,行和列之间的关系进行数据的存储

非关系型数据库:{key:value} (NoSQL:Not Only SQL)

Redis、MongoDB

对象存储,通过对象的自身属性来决定

DBMS(Database Management System)

数据库的管理软件,科学有效地管理我们的数据。维护和获取数据MySQL,数据库管理系统

(2)MySQL概念

MySQL是一个关系型数据库管理系统,

MySQL是最好的RDBMS(Relational Database Management System,关系型数据库管理系统)应用软件之一,开源的数据库软件、体积小、速度快、总体拥有成本低。

(2)MySQL下载

官网:

MySQL :: Download MySQL Community Server

(3)登录MySQL

表8 登录MySQL

操作命令
启动

MySQL启动文件在/etc/init.d目录下,启动运行以下命令

/etc/init.d/mysql start

停止/usr/bin/mysqladmin -u root -p shutdown
登录mysql [-u username] [-h host] [-p password] [dbname]

(4)MySQL配置文件

表9 MySQL配置文件

文件/目录功能
/var/lib/mysql/数据库目录
/usr/share/mysql (mysql.server命令及其配置文件)配置文件
/usr/bin/(mysql admin mysql dump等命令)相关命令
/etc/rc.d/init.d (启动脚本文件 mysql的目录)启动脚本

(5)MySQL常用命令

表10 MySQL命令

命令功能
show databases; 显示数据库

首先使用库:use mysql

显示数据库中的表: show tables

显示数据库中的表
describe 表名;显示表的结构
select * from 表名显示记录
create database + 数据库名;新建数据库

USE 库名;

create table 表名(字段设定列表);

建表
insert into增加记录

 

5.构建PHP运行环境

(1) PHP概念

PHP 即Hypertext Preprocessor(超文本预处理语言)的缩写,是一种服务器端的 HTML 嵌入式脚本语言。PHP 混合了 C 、java 、perl 的语法及部分自创的新语法,拥有更好的网页执行速度,更重要的是 PHP 支持绝大多数流行的数据库,在数据库层面的操作功能十分强大。

(2)下载

官网:

 http://www.php.net

(3)PHP配置文件

    /usr/local/php7/php.ini

二、实验

1.LAMP架构+DISCUZ论坛应用

(1)Apache安装

流程

表11 Apache安装流程

序号

操作关键命令文件
1

下载apache相关安装包➝ 服务器

rz -E

apr-1.6.2.tar.gz

apr-util-1.6.0.tar.gz

2登录到服务器安装apache相关依赖包和函数库yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl

gcc 是C语言的编译器;

gcc-c++ 是C++的编译器;

make 是源代码编译器(源代码转换成二进制文件);

pcre是一个Perl函数库,包括perl 兼容的正则表达式库;

pcre-devel 是perl的接口开发包;

expat-devel用于支持网站解析HTML、XML文件;

 perl是语言编译器

3解压apache安装进行安装(安装前api api-util 拷贝到apache包中)

tar -zxvf apr-1.6.2.tar.gz
tar -zxvf apr-util-1.6.0.tar.gz

mv apr-1.6.2 httpd-解压apache安装进行安装(安装前api api-util 拷贝到apache包中)2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

apr 是Apache可移植运行库;

api-util 包含了一些常用的开发组件

4

编译安装➝切换到apache解包路径下➝

安装路径以及模块

 

cd /opt/httpd-2.4.29/


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

prefix指定 httpd 服务程序的安装路径;

enable-so启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力;

enable-rewrite启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护;

enable-charset-lite启动字符集支持,以便支持使用各种字符集编码的页面;

enable-cgi启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力

5编译安装make -j 16 && make installmake - j CPU内核数
6优化配置文件、httpd服务 可执行程序文件存入路径环境变量的目录中便于系统识别软链接

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

 
7为了启动服务方便,apache启动服务加入到service管理或者systemd系统管理

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd

 

chkconfig --add httpd 

# chkconfig: 35 85 21

#description: Apache is a World Wide Web server
 

8

配置Apache文件 ➝

httpd. conf

vim /usr/local/httpd/conf/httpd.conf#--52行--修改
#Listen 192.168.200.50:80
--197行--取消注释,修改
ServerName 192.168.10.80:80
--221行--默认首页存放路径
DocumentRoot "/usr/local/httpd/htdocs"   以后 有存储
--255行--默认首页文件名设置
DirectoryIndex index.html
9检查Apache配置文件

httpd -t

或 apachectl -t

 
10可使用service或者systemctl进行管理
 
systemctl start httpd 或 service httpd start 
11检查apache监听端口

netstat -antp l grep 80 或

lsof -i:80

 

 

 

 

②下载apache相关安装包➝ 服务器

b5e0cd29031e493397ba6ddf8bf691fa.png

227e948243954fc7a7968b9c0e6b39fe.png

③登录到服务器安装apache相关依赖包和函数库

 70d9734419944d829cb0fbbc902fb5be.png

④解压apache安装进行安装(安装前api api-util 拷贝到apache包中)

4fa4ed9566c0403e837fc87963fbfaef.png

f81bc04aa3ea4fd09ae577c1051023b3.png

0b399ba833054088910e7f7709f2b083.png

3975bd7aabef46ec91ae506a197ffaae.png

⑤编译安装➝切换到apache解包路径下➝安装路径以及模块

780ef0ad80504031a4b95f05c2a10b18.png

b2b82ff4f84c45b1a4d5ccea06d73c3e.png

⑥编译安装

c0e4a9d718c649718c5efe9ad86866a3.png

⑦优化配置文件、httpd服务 可执行程序文件存入路径环境变量的目录中便于系统识别软链接

32b9899f18264e06abcfa0341ade8c7c.png

 

a1de69dda6254eae8d96b943b08a8018.png

6d969b1493b3419e8b2e832c0a1bfdd4.png

⑧为了启动服务方便,apache启动服务加入到service管理或者systemd系统管理

84c08bfab9b34f6f9a4544de19756007.png

cf508932411c4e15b5180c78e7930c61.png

19200229658c4c5c8d6ae60888e39628.png

f56fef9ac7274b509e8e07fc7cbf7451.png

b7fc7ace35914af78c4077fcda3657c5.png

⑨配置Apache文件 ➝httpd. conf

vim /usr/local/httpd/conf/httpd.conf 

dd4aec62474e4f098020eba25a0d46c9.png

 6fcc9997d8984b0d898c92a51743ce81.png

⑨检查Apache配置文件

f4ce31cad194431a9373dbf57a2e49c7.png

 检查网页d75085824d694791aae8ff9cd564486a.png

⑩可使用service或者systemctl进行管理

⑪ 检查apache监听端口

23ba8702e1764ab89ca05cc57482aa1b.png

b033deb9e565471793a71e36fca0f913.png

 

(2)MySQL安装

① 流程

表12 MySQL安装流程

序号

操作关键命令文件
1

下载MySQL相关安装包➝ 服务器

rz -E

mysql-5.7.17.tar.gz

boost_1_59_0.tar.gz

2登录到服务器安装MySQL相关依赖包和函数库yum -y install \
gcc \
gcc-c++ \
ncurses  \
ncurses-devel \
bison \
cmake

ncurses 是字符终端下图形互动功能的动态库;

ncurses-devel 是ncurses开发包;

bison 是语法分析器;

cmake 用来编译安装mysql

3

创建程序用户管理➝

解压MySQL安装进行安装

useradd -s /sbin/nologin mysql


tar -zxvf mysql-5.7.17.tar.gz -C /opt
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost

 

4

编译安装➝切换到MySQL解包路径下➝

安装路径以及模块

cd /opt/mysql-5.7.17/

 

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_EXTRA_CHARSETS=all \
-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=/usr/local/boost \
-DWITH_SYSTEMD=1

 

DCMAKE_INSTALL_PREFIX指定mysql的安装路径;

DMYSQL_UNIX_ADDR指定mysql进程监听套接字文件(数据库连接文件)的存储路径;

DSYSCONFDIR指定配置文件的存储路径;

DSYSTEMD_PID_DIR指定进程文件的存储路径;

DDEFAULT_CHARSET指定默认使用的字符集编码,如 utf8;

DDEFAULT_COLLATION指定默认使用的字符集校对规则;

DWITH_EXTRA_CHARSETSDWITH_INNOBASE_STORAGE_ENGINE指定支持其他字符集编码;

DWITH_INNOBASE_STORAGE_ENGINE安装INNOBASE存储引擎;

DWITH_ARCHIVE_STORAGE_ENGINE安装ARCHIVE存储引擎;

DWITH_BLACKHOLE_STORAGE_ENGINE安装BLACKHOLE存储引擎 ;

DWITH_PERFSCHEMA_STORAGE_ENGINE安装FEDERATED存储引擎 ;

DMYSQL_DATADIR指定数据库文件的存储路径;

DWITH_BOOST指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost;

DWITH_SYSTEMD生成便于systemctl管理的文件;

5编译安装make -j 16 && make install 
6

创建普通用户管理

useradd -s /sbin/nologin mysql


 

 
7更改管理主/组

chown -R mysql:mysql /usr/local/mysql/

chown mysql:mysql /etc/my.cnf

 

8

配置MySQL文件➝

my.cnf

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
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
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

client 是客户端设置;

mysqld 是服务全局设置;

user设置管理用户;

basedir指定数据库的安装目录;

datadir指定数据库文件的存储路径;

port指定端口;

character-set-server设置服务器字符集编码格式;

socket指定数据库连接文件;

bind-address设置监听地址;

skip-name-resolve禁用DNS解析;

max_connections设置mysql的最大连接数;

default-storage-engine指定默认存储引擎;

max_allowed_packet设置数据库接收的数据包大小的最大值;

server-id指定服务ID号

9设置环境变量,申明/宣告MySQL 命令便于系统识别

echo "PATH=$PATH:/usr/local/mysql/bin" >> /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

initialize-insecure生成初始化密码为空;

user指定管理用户;

basedir指定数据库的安装目录;

datadir指定数据库文件的存储路径

11

为了启动服务方便,MySQL 启动服务加入到systemd系统管理➝

可使用service或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  

daemon-reload 刷新识别;

start mysqld.service 开启服务;

 enable mysqld 开机自启动;

 

 

12检查MySQL监听端口

netstat -antp l grep 3306 或

lsof -i:3306

 

 

 

13测试数据库

mysql -u root -p password "123456" 

mysql> show databases;

给root账号设置密码

②下载MySQL相关安装包➝ 服务器

2e5050685d064077bcd076113fbd98c3.png

90ee48dd097945e0a056e956a9ec522c.png

③登录到服务器安装MySQL相关依赖包和函数库

f935e0ca9e5a46ef9f71337106223d4d.png

④创建程序用户管理➝解压MySQL安装进行安装

useradd -s /sbin/nologin mysql

 

5bbf44c5e38f49f8b21347a6beadbad5.png

d9346995cc854bdaa4118eac8deb91f6.png

⑤编译安装➝切换到MySQL解包路径下➝安装路径以及模块

8f02142e416a418ca5123ef1a41f903d.png

 4cf02e37e88b4269ab80648e34bc2855.png

⑥编译安装

6cac0dcbafbb4f8493cc3234b8aa73af.png

⑦创建普通用户管理

b19c627a284240fea7eaaf345d043c4d.png

⑧更改管理主/组

171954eb1932493dbd83bfa94234eac9.png

chown mysql:mysql /etc/my.cnf

836eb476bb1d4c7697e07ef194468381.png

⑨配置MySQL文件➝my.cnf

c5df5ef3f9e9452ea6333ce7262561a2.png

ded5f2820bf84afe9c4f8ef9861e9909.png

⑩设置环境变量,申明/宣告MySQL 命令便于系统识别

a56ff294cd6c4d01b748251955f7c135.png

⑪初始化数据库

fe0f35dcecb7459cacde423768d4927f.png

 2409713ae5ba446f943b48ed1291153a.png

⑫为了启动服务方便,MySQL 启动服务加入到systemd系统管理➝可使用service或systemctl进行管理

5d53cd42c73f4569b249ddd789ea0cc7.png

c9423c0987a74f239c84eda4917b91c2.png

⑬检查MySQL监听端口

7572124c0fee414c95f11e785be16eab.png

89739cf1ea6547e48f75dad4b1f60b15.png

  ⑭测试数据库

48fcd5fe74834a4eb478982e3cc8a1fc.png

 783ba4ab06ac4e1991cdd6e3204a04a9.png

8fb95aa57085423db1bd0e5b997c2ef5.png

(3)PHP安装

①流程

表13 PHP安装流程

序号

操作关键命令文件
1

下载PHP相关安装包➝ 服务器

rz -Ephp-7.1.24.tar.gz
2登录到服务器安装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

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

3解压PHP安装进行安装

cd /opt


tar zxvf php-7.1.24.tar.gz

apr 是Apache可移植运行库;

api-util 包含了一些常用的开发组件

4

编译安装➝切换到PHP解包路径下➝

安装路径以及模块

./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 \

prefix指定将 PHP 程序的安装路径;

with-apxs2指定Apache httpd服务提供的apxs 模块支持程序的文件位置;

with-mysql-sock指定mysql 数据库连接文件的存储路径;

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 的支持;

enable-mbstring启用多字节字符串功能,以便支持中文等代码;

enable-xml开启扩展性标记语言模块;

enable-session会话;

enable-ftp文本传输协议;

enable-pdo函数库;

enable-tokenizer令牌解释器;

enable-zip是ZIP压缩格式

5编译安装make -j 16 && make install 
6

配置PHP文件➝

php.ini

cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini


vim /usr/local/php7/php.ini

 

--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai
7优化PHP服务 可执行程序文件存入路径环境变量的目录中便于系统识别软链接

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

 

 

8

配置Apache文件让Apache支持PHP ➝

httpd. conf

vim /etc/httpd.conf#添加index.php
255 <IfModule dir_module>
256     DirectoryIndex index.html index.php
257 </IfModule>
#在392行下方插入一下内容,让Apache可以支持.php的网页文件
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
##检查156行默认支持php7的模块是否存在
LoadModule php7_module   modules/libphp7.so
9创建、编辑php页面文件

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

 

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

<?php
phpinfo();
?>
10可使用service或者systemctl进行管理
 
systemctl restart httpd.service 
11网页测试http://192.168.204.100/index.php 

②下载PHP相关安装包➝ 服务器

813be1e0b1dc474d9253fd652c4a2a2d.png

 

a8f8e0d7bad440ba884cc406e29498ca.png

③登录到服务器安装PHP相关依赖包和函数库

db7974f1114c4f1996d15ddb7bb39c77.png

④解压PHP安装进行安装

606ff40bb3c24df8908fcb4fffa6d05e.png

⑤编译安装➝切换到PHP解包路径下➝安装路径以及模块

4442587eb5c94f9388103374e7fda8be.png

 安装完成0821418f29844e4087bc7969966ddbd6.png

⑥编译安装


make -j 16 && make install

完成

b1d4e51f146f4f27afaf61dd7c760c6a.png

⑦配置PHP文件➝php.ini

f2261d5a01a24b79b52fa260999c035e.png

 c0fa5c0203a346418eb3b5d0afd62528.png

0597051824b2493096276992af2b4d9c.png

⑧优化PHP服务 可执行程序文件存入路径环境变量的目录中便于系统识别软链接

de49be15ece047ed94d83206b454f380.png

⑨配置Apache文件让Apache支持PHP ➝httpd. conf

10ee5d0459ff4179940ad1d7bd7f05d7.png

 442c9675920446dd97e5ab43355a8435.png

 8de35a88aece41d397127dc48f16ffb9.png

 检查存在33b6e140094045af89d61bbaff2ac056.png

⑩创建、编辑php页面文件

805e69cf18a14496b5e3917e4612d3ad.png

 06891e5208ae417d901c5f10c724ff6e.png

 

⑪可使用service或者systemctl进行管理

systemctl restart httpd.service

⑫网页测试

535a9f588b10488a9ceec6190b3d8f88.png

 

(4)DISCUZ安装

①流程

表14 DISCUZ安装流程

序号

操作关键命令文件
1创建一个数据库

mysql -u root -p 

mysql> CREATE DATABASE bbs;

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

mysql>flush privileges; 
 

把bbs数据库里面所有表的权限授予给bbsuser,并设置密码;

刷新数据库;

 

 

2

下载

 DISCUZ相关安装包➝ 服务器

rz -EDiscuz_X3.4_SC_UTF8.zip
3

解压

 DISCUZ安装进行安装

unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis 
4上传站点更新包

cd /opt/dis

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

 
5更改管理主/组

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

 
6

准备数据库配置

数据库服务器: localhost   #本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字: bbs
数据库用户名: bbsuser
数据库密码: admin123
管理员账号: admin
管理员密码: admin123
 
7访问论坛http://192.168.204.100/bbs/install/ 

 

②创建一个数据库

mysql -u root -p 
mysql> CREATE DATABASE bbs;
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
mysql>flush privileges; 

③下载DISCUZ相关安装包➝ 服务器

121474ca48084c7388e371fb84ceaf67.png

④解压 DISCUZ安装进行安装

b717a17263fb4d689f6f01c5e2dc0074.png

c7fc56b3e01e47b8bdde482d00759e0d.png

⑤上传站点更新包

2197a8f81911480fb35be83ddefa30ee.png

⑥更改管理主/组

29e2e9163cd544399636f15121ea6b8c.png

⑦准备数据库配置

数据库服务器: localhost  
数据库名字: bbs
数据库用户名: bbsuser
数据库密码: admin123
管理员账号: admin
管理员密码: admin123

⑧访问论坛

安装向导-同意

9f0012738e274240ba9c66e24b6e3e7b.png

 安装向导-开始安装eec063dff8b74ac69ca2e9634eb49049.png

30b8e315d1b84da7bf96ef0a19761362.png

 安装向导-安装数据库e780a85b3d5c40c3ab1447a57ad61505.png

 安装向导-完成698f9c229fbe4f8ca87bd9a7b22a358b.png

 

三、问题

1.虚拟机内存分配上限问题,内存上限只能加到3G。

原因分析:

在虚拟机还在运行的情况下又去分配内存造成的。

19e32e881ee24eceac426e9e8595984a.png

解决方法:

关闭虚拟机,重新点击设置分配内存 

a7301939115b4206a0e02c0e2952f681.png

2.虚拟机CPU如何设置才更加合理

表1 处理器性能

  
处理器数量虚拟的CPU数量
每个处理器的内核数量虚拟CPU的内核数
处理器内核总数=处理器数量 ✖ 每个处理器的内核数量
  

此处对应于真实物理机(或者叫宿主机) 的 CPU线程数(即逻辑处理器的数量)。

所以在设置的时候,处理器内核总数 < 逻辑处理器的数量 即可。

打开任务管理器,可以在任务栏右键选择任务管理器,然后点击“CPU”,就可以看到自己CPU的相关信息。

bfa93f91d0c2480db0edf0cb23a86273.png

第一个为内核数量,第二个为逻辑处理器数量。

(一个CPU可以有多个内核,一个内核一般对应于一个线程,但是通过Intel的超线程技术,一个核心可以对应于两个线程,即可以并行处理两个任务,所以逻辑处理器的数量是内核数量的两倍)

表2 虚拟机CPU设置

物理机CPU数量物理机CPU性能虚拟机处理器数量虚拟器每个处理器的内核数量

虚拟机处理器内核总数

      分配方式
1

  24核

32线程

     1

    16

 

     16

 

虚拟机 的 处理器内核总数设置为物理机线程数1/2)
1

  24核

32线程

     2     8     16处理器数量:每个处理器的内核数量=1:4

查看CPU为2核

3e73c1c7eaf546e78480852b75e90af3.png

调整升级到16核

 994447a1a42846999ee4f5aef386f8b5.png

 

3.虚拟机内存如何设置才更加合理

虚拟机内存配置取决于主机内存和虚拟机运行程序需要的内存。虚拟机内存肯定是要小于主机内存的,但很显然,也不是越小越好,否则虚拟机上的程序根本运行不起来,就会出现进程被killed的情况。

虚拟机内存是共享了一部分主机的内存的,设置了虚拟机内存,其实是设置了虚拟机的最大内存,并不是每次虚拟机里执行任务都要消耗这么多内存。已经分配给虚拟机,但是虚拟机没用到的内存实际上是让主机在需要的时候使用的,也就是分配给虚拟机的内存,虚拟机如果没用,主机还是可以用的。

打开任务管理器,可以在任务栏右键选择任务管理器,然后点击“内存”,就可以看到自己内存的相关信息。

3fde4194682d404082a526dd1b5d7523.png

 

表3 虚拟机内存设置

物理机内存虚拟机内存分配方式
32G16G按照主机和虚拟机对半分
32G20G按照主机和虚拟机1:2进行分配。

 

查看内存为4G

b93a967c870a42efa0aa38bb3d68a676.png

 调整升级到16G

4b21e8cad9fd4fab8f5143fd7a51015d.png

 

 

4.httpd启动报错

c995a94a8199463cb7b798412d74687f.png

原因分析:配置文件无法监听地址

6a8a3368ca6f44e2869645f3f64d4ceb.png

 解决方法:修改配置文件

dd4aec62474e4f098020eba25a0d46c9.png

 

5.mysql登录失败

原因分析:多个mysql.sock运行

c28ab9bd64364da78c18d86ab3e666a7.png

解决方法:重启服务 

17cf0664b33047ae92c582bfc2dc5395.png

 

四、总结

LAMP架构组成:Linux(平台)、Apache(前台)、MySQL(后台)、PHP(中间连接)

Apache 主配置文件:/etc/httpd/conf/httpd.conf     

             命令文件:/usr/local/httpd/bin/*    

             站点文档目录:/var/www/html/

MySQL主配置文件:/etc/my.cnf   

            命令文件:/usr/local/mysql/bin

PHP  主配置文件:  /usr/local/php7/php.ini

         站点文档目录:/usr/local/httpd/htdocs/

 

 

 

 

 

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

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

相关文章

RISC-V 函数调用约定和Stack使用

RISC-V 函数调用约定和Stack使用 引言RISC-V vs x86RISC-V寄存器StackStruct补充函数调用约定寄存器约定函数跳转和返回指令的编程约定被调用函数的编程约定 RISC-V 汇编与 C 混合编程RISC-V 汇编调用 C 函数C 函数中嵌入 RISC-V 汇编 引言 MIT 6.S081 2020 操作系统 本文为M…

1744_Perl获取文件属性参数

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 前阵子写通过Perl执行判断调用ImageMagick实现图像的批量压缩功能脚本时用到过这个功能&#xff0c;只是当时仅仅看了一个获取文件大小的功能。 今天看第六版的小骆驼书又看到了…

一篇十分硬核的QT开发经验文章!送给正在做QT开发或想从事QT开发的你

当编译发现大量错误的时候&#xff0c;从第一个看起&#xff0c;一个一个的解决&#xff0c;不要急着去看下一个错误&#xff0c;往往后面的错误都是由于前面的错误引起的&#xff0c;第一个解决后很可能都解决了。 定时器是个好东西&#xff0c;学会好使用它&#xff0c;有时…

别再为缓慢启动而失去用户! 让你的Android应用体验绝佳性能

为什么要启动优化&#xff1f; 启动优化是为了提升应用程序的启动性能&#xff0c;即减少应用程序从启动到可交互状态所需要的时间。以下是一些关键原因&#xff0c;解释了为什么启动优化是重要的&#xff1a; 用户体验&#xff1a; 启动时间是用户与应用程序互动的第一个体验…

常用API

文章目录 1、String类String概述创建对象的两种方式字符串的内容比较String常用APIString类开发验证码功能手机号码屏蔽功能 2、Object类Object类的作用Object类的常用方法**Object的toString方法**Object的equals方法 3、Objects类4、StringBuilder类5、Math类6、System类7、B…

2023-06-17:说一说redis中渐进式rehash?

2023-06-17&#xff1a;说一说redis中渐进式rehash&#xff1f; 答案2023-06-17&#xff1a; 在Redis中&#xff0c;如果哈希表的数组一直保持不变&#xff0c;就会增加哈希冲突的可能性&#xff0c;从而降低检索效率。为了解决这个问题&#xff0c;Redis会对数组进行扩容&am…

基于Spark的气象数据分析

研究背景与方案 1.1.研究背景 在大数据时代背景下&#xff0c;各行业数据的规模大幅度增加&#xff0c;数据类别日益复杂&#xff0c;给数据分析工作带来极大挑战。气象行业和人们的生活息息相关&#xff0c;随着信息时代的发展&#xff0c;大数据技术的出现为气象数据的发展…

第九章 形态学图像处理

文章目录 9形态学图像处理9.2腐蚀与膨胀9.2.1腐蚀9.2.2膨胀 9.3开操作和闭操作9.5一些基本形态学方法9.3.1边界提取 9.6灰度级形态学9.6.3一些基本的形态学算法 9形态学图像处理 9.2腐蚀与膨胀 9.2.1腐蚀 imgcv2.imread(dige.png,0) kernel np.ones((3,3),np.uint8) num[[…

第七章 原理篇:HOG特征提取

之前面试被问到了然后没有讲出来&#xff0c;所以今天复习一下&#xff01; 气死我了&#xff01; 参考教程&#xff1a; What Is a Feature Descriptor in Image Processing? https://medium.com/analytics-vidhya/a-gentle-introduction-into-the-histogram-of-oriented-…

scratch lenet(3): 直方图均衡化的C语言实现

文章目录 1. 目的2. 原理3. 实现3.1 获得直方图 int hist[256]3.2 获得累积分布 int cdf[256]3.3 均衡化公式3.4 遍历原图&#xff0c;逐点均衡化&#xff0c;得到结果 4. 完整代码和结果4.1 例子14.2 例子24.3 例子34.4 完整代码 5. References 1. 目的 用 C 语言实现直方图均…

低价618背后,看见品牌营销的「产业新洪流」

如今消费者对于低价与品质的兼得需求&#xff0c;正倒逼一个全新的产业经济模式出现&#xff0c;而企业恰是最直接承载者。只有具备真正“低价”的能力模型&#xff0c;企业才能参与到下一轮的产业经济&#xff0c;甚至是社会经济的发展浪潮中。 作者|皮爷 出品|产业家 成本不…

Elasticsearch设置密码

Elasticsearch设置密码 概述ES开启认证配置密码访问开启安全认证的EScurl浏览器直接访问Kibana 配置 es认证直接配置用户名密码到 kibana.yml以kibana密钥的形式使用命令行启动参数形式指定用户名密码 使用kibana 查看es用户 概述 ES默认没有开启安全组件&#xff0c;如果我们…

简单的Dubbo实验环境搭建

Dubbo-api中定义的UserQueryFacade接口可以发布在私服上&#xff0c;这样子dubbo-consumer和dubbo-provider就可以以maven依赖的形式导入使用。dubbo-provider需要提供接口的实现类&#xff0c;dubbo-consumer需要订阅该实现类&#xff0c;他们的元数据都通过zk进行记录。 许多…

Three.js学习项目--3D抗美援朝数据可视化

文章目录 部分场景体验地址操作说明 视频我做了哪些&#xff08;功能&#xff09;局限源代码地址部分逻辑按需渲染模型加载动画控制器模型纹理条件切换模型加载同时请求部分纹理 生成进度条模型缩放小动画 部分场景 体验地址 https://kmyc.hongbin.xyz/ 操作说明 视频 操作说…

LeetCode——查询后矩阵的和

目录 1、题目 2、题目解读 3、代码 1、题目 2718. 查询后矩阵的和 - 力扣&#xff08;Leetcode&#xff09; 给你一个整数 n 和一个下标从 0 开始的 二维数组 queries &#xff0c;其中 queries[i] [typei, indexi, vali] 。 一开始&#xff0c;给你一个下标从 0 开始的…

数学建模常用模型(一):灰色预测法

数学建模常用模型&#xff08;一&#xff09;&#xff1a;灰色预测法 灰色预测法是一种用于处理少量数据、数据质量较差或者缺乏历史数据的预测方法。它适用于一些非线性、非平稳的系统&#xff0c;尤其在短期预测和趋势分析方面有着广泛的应用。灰色预测法作为一种强大的数学…

基于STM32+OneNet设计的物联网智慧路灯

一、前言 近年来,构筑智慧城市、推动城镇发展被国家列入重要工作范畴。发布的《超级智慧城市报告》显示,全球已启动或在建的智慧城市有1000多个,中国在建500个,远超排名第二的欧洲(90个)。从在建智慧城市的分布来看,我国已初步形成环渤海、长三角、珠三角、中西部四大智…

FreeRTOS 任务优先级 【杂记】

FreeRTOS任务优先级 FreeRTOS任务优先级&#xff1a;任务优先级数值越小&#xff0c;任务优先级越低。 1、 FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的configMAX_PRIORITIES 进行配置的&#xff0c;用户实际可以使用的优先级范围是 0 到 configMAX_PRIORIT…

python 第七章 字典dict {}

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 文章目录 字典的应用场景创建字典的语法字典常见操作增改删查 字典的循环遍历遍历字典的key遍历字典的value遍历字典的元素遍历字典的键值对&#xff0…

【新款DVR、NVR、直播、录播机单芯片解决方案】

新款DVR、NVR、直播、录播机单芯片解决方案 一、 22AP80或SS522V100是入门级DVR解决方案&#xff0c;能做到4路1080p30fps编码 2路 1080p30fps解码 多路图像分析方法智能算法&#xff1b;可以平替Hi3520DV510 二、 22AP10或SS524V100&#xff0c;这是一款中端的DVR芯片&#…