【Linux】阿里云ECS搭建lnmp和lamp集群

news2024/11/17 13:33:10

搭建LNMP(Linux + Nginx + MySQL + PHP)或LAMP(Linux + Apache + MySQL + PHP)集群

  1. 创建ECS实例

    • 在阿里云控制台创建多个ECS实例,选择相应的操作系统和配置,确保这些实例在同一VPC网络内,并且能够相互通信。
  2. 安装和配置软件

    • 对于LNMP集群,安装Nginx、MySQL和PHP;
    • 对于LAMP集群,安装Apache、MySQL和PHP;
    • 配置软件以适应集群环境,确保它们能够在集群中协同工作。
  3. 配置负载均衡

    • 在阿里云控制台配置负载均衡,将流量分发到不同的ECS实例上,以实现负载均衡和高可用性。
  4. 设置数据库集群

    • 如果需要高可用性和容错性,可以考虑使用阿里云RDS创建MySQL集群或使用其他数据库集群解决方案。
  5. 配置监控和告警

    • 在阿里云控制台设置监控和告警,以便及时发现和解决集群中的问题。
  6. 优化性能和安全

    • 针对集群进行性能优化和安全加固,例如调整服务器参数、配置防火墙规则、定期更新软件等。
  7. 备份和灾难恢复

    • 设置定期备份策略,确保数据安全,并准备好灾难恢复方案,以应对可能发生的意外情况。
  8. 测试和监控

    • 完成集群搭建后,进行全面的功能测试和性能测试,并设置持续监控以保证集群的稳定运行。

阿里云的ECS搭建lnmp和lamp集群

  • 一、前期准备工作
    • 1.在阿里云配置EDS实例
    • 2.关闭系统内部防火墙
  • 二、部署lnmp
    • 1.安装Nginx
    • 2.安装MySQL数据库
    • 3.安装PHP
  • 三、将lnmp修改成lamp
    • 1.安装Apache
    • 2.安装apache对应的PHP
  • 四、修改apache端口号为88
  • 五、修改nginx端口号为99;
  • 六、同时启动apache和nginx服务,成功部署lamp和lnmp

一、前期准备工作

1.在阿里云配置EDS实例

在这里插入图片描述

  • 创建实例

在这里插入图片描述

  • 成功创建实例并进行了远程连接

在这里插入图片描述

2.关闭系统内部防火墙

运行以下命令,检查防火墙当前状态。

$ sudo  status  ufw
如果防火墙状态为Status: inactive,则表示防火墙为关闭状态。

如果防火墙状态为Status: active,则表示防火墙为开启状态。

可选:关闭防火墙。
$ sudo stop ufw
$ sudo disable ufw   //开机不自启
如果您的防火墙为开启状态,需要运行以下命令,关闭防火墙并关闭开机自启动防火墙。

在这里插入图片描述

二、部署lnmp

在linux上安装Nginx、MySQL、配置PHP

1.安装Nginx

$ sudo apt update    //更新镜像源

运行以下命令,安装Nginx。
$ sudo apt -y install nginx

运行以下命令,查看Nginx版本。
$ sudo nginx -v

返回结果如下所示,查看到Nginx的版本信息为1.18.0。同时也表示Nginx已成功安装。
nginx version: nginx/1.18.0 (Ubuntu)

在这里插入图片描述

2.安装MySQL数据库

运行以下命令,安装MySQL。
$ sudo apt -y install mysql-server

运行以下命令,查看MySQL版本。
查看mysql版本
$ sudo mysql -V

返回结果如下所示,表示MySQL已成功安装,MySQL的版本为8.0.27。
mysql  Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
  • 运行以下命令,进入MySQL。
$ sudo mysql
运行以下命令,设置root用户密码。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
本示例中密码以Mysql@1234为例,示例命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';
运行以下命令,退出MySQL数据库。

exit;
  • 运行以下命令,对MySQL进行安全性配置。
$ sudo mysql_secure_installation

根据命令行提示,依次完成以下配置项。

输入root用户的密码。本示例中输入Mysql@1234。

root@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

说明:

在输入密码时,系统为了最大限度地保证数据安全,命令行将不做任何回显。您只需要输入正确的密码信息,然后按Enter键即可。

在这里插入图片描述

输入Y,设置密码验证策略。

Press y|Y for Yes, any other key for No: Y
根据提示,选择密码验证策略。

本示例输入0。

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
输入Y,更改root用户密码。

Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
输入root用户密码。

New password:

Re-enter new password:

Estimated strength of the password: 100
输入Y,确认使用已设置的密码。

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
输入Y删除MySQL自带的匿名用户。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
输入Y,禁止MySQL的root用户的远程登录权限。

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
输入Y,移除test数据库。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 
输入Y,重新加载授权表。

在这里插入图片描述

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
当命令行回显All done!时,表示配置完成。

在这里插入图片描述

  • 登录MySQL数据库。
运行以下命令,登录MySQL数据库。
$ sudo mysql -uroot -p

在命令行回显的Enter password:后输入已设置的数据库密码。
成功登录MySQL数据库后,命令行信息如下所示。
运行以下命令,退出MySQL数据库。
exit;

在这里插入图片描述

3.安装PHP

运行以下命令,安装PHP。

$ sudo apt -y install php-fpm
运行以下命令,查看PHP版本。

$ sudo php -v返回结果如下所示,表示PHP已成功安装,可查看到PHP版本为8.1.2

在这里插入图片描述

在这里插入图片描述

  • 修改Nginx配置文件以支持PHP。
运行以下命令,打开Nginx默认的配置文件。
$ sudo vim /etc/nginx/sites-enabled/default

按i进入编辑模式,修改Nginx配置文件。
在server{}内,找到index开头的配置行,在该行中添加index.php。

在server{}内找到location ~ \.php$ {},去除以下配置行的注释符号。

location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

按Esc退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。

在这里插入图片描述
在这里插入图片描述

  • 配置PHP
运行以下命令,在Nginx网站根目录中,新建phpinfo.php文件。
运行命令为:
$ sudo vim /var/www/html/phpinfo.php
按i进入编辑模式,添加以下配置信息。
phpinfo()函数会展示PHP的所有配置信息。

<?php echo phpinfo(); ?>

按Esc退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。

运行以下命令,启动PHP。
$ sudo systemctl start php8.1-fpm

在这里插入图片描述
在这里插入图片描述

运行以下命令,重启Nginx服务。
$ sudo systemctl restart nginx.service
  • 测试访问PHP配置信息页面

在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。在浏览器的地址栏输入http://8.138.98.140/phpinfo.php进行访问。访问结果如下图所示,成功查看到PHP配置信息页面,表示LNMP环境部署成功。

在这里插入图片描述

三、将lnmp修改成lamp

(在lnmp的基础上关闭nginx服务,安装并启动apache)成功部署lamp

  • 成功搭建LNMP环境后,建议您删除phpinfo.php测试文件,消除数据泄露风险。
$ sudo rm -rf /var/www/html/phpinfo.php

停止nginx服务
$ systemctl stop nginx

1.安装Apache

运行以下命令,更新Ubuntu系统内的软件包。
$ sudo apt update

运行以下命令,安装Apache。
$ sudo apt-get -y install apache2

运行以下命令,查看Apache版本。
$ apache2 -v   查看Apache版本。

运行以下命令,启动Apache服务并设置服务开机自启动。
$ sudo systemctl start apache2
$ sudo systemctl enable apache2

运行以下命令,查看Apache服务状态。
$ sudo systemctl status apache2

返回结果类似如下所示,表示Apache已启动。

在这里插入图片描述

2.安装apache对应的PHP

$ sudo apt -y install libapache2-mod-php

运行以下命令,查看PHP版本。
$ php -v
返回结果类似如下所示,表示PHP已成功安装,PHP的版本为8.1

在这里插入图片描述

在这里插入图片描述

  • 在Apache网站根目录中,创建测试网页。
运行以下命令,查看Apache网站根目录的路径信息。
$ sudo cat /etc/apache2/sites-available/000-default.conf
命令行返回结果中的DocumentRoot /var/www/html一行,即表示网站根目录为/var/www/html。

运行以下命令,在网站根目录创建测试网页,并把phpinfo()函数添加至网页内容中。
phpinfo()函数会展示PHP的所有配置信息。
$ sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'

运行以下命令,重启Apache服务。
$ sudo systemctl restart apache2

在这里插入图片描述

  • 在本地机器浏览器地址栏,输入http://8.138.98.140/phpinfo.php并按Enter键。显示如下页面表示安装成功。

在这里插入图片描述

输入8.138.98.140

在这里插入图片描述

四、修改apache端口号为88

$ cd  /var/www/html
$ ls
$ cd /etc/apache2
$ ls
$ vim ports.conf

将Listen 80 改成Listen 88   ,后退出vim编辑模式

在这里插入图片描述

在这里插入图片描述

  • 手动在安全组的管理规则中加入端口88、99

在这里插入图片描述

  • 在本地机器浏览器地址栏,输入http://8.138.98.140:88/phpinfo.php并按Enter键

在这里插入图片描述

在这里插入图片描述

  • 输入:公网ip:88

在这里插入图片描述

五、修改nginx端口号为99;

$ vim  /etc/nginx/sites-enabled/default

将原端口80改成99

在这里插入图片描述

在这里插入图片描述

  • 重启nginx失败

错误是apache2抢占了99端口,在apache2中删除99端口,重启apache2并重启nginx

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

而在ubuntu中的浏览器中访问nginx的端口,出现的却是apache的欢迎页

原因:apache与nginx是共用同一个站点目录的,即在apache和nginx中部署的网页文件都放在同一个目录下—/var/www/html

因此访问nginx的端口时本应该调用第三个文件作为欢迎页,却调用了apache的欢迎页文件(第二个)

修改:vim /etc/nginx/sites-available/default

根据所排列的顺序调用站点目录里的网页文件作为自己的欢迎页(解决一开始的问题只需把index.nginx-debian.html放在index.html前就行了)

在这里插入图片描述

  • 输入 公网IP:88 出现nginx界面

在这里插入图片描述

六、同时启动apache和nginx服务,成功部署lamp和lnmp

systemctl start apache2
systemctl start nginx

在这里插入图片描述

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

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

相关文章

探索ERC20代币:构建您的第一个去中心化应用

下面文章中会涉及到该资源中的代码&#xff0c;如果想要完整版代码可以私信我获取&#x1f339; 文章目录 概要整体架构流程技术名词解释ERC20智能合约web3.js 技术细节ERC20合约部署创建前端界面前端与智能合约互连运行DAPP 小结 概要 在加密货币世界中&#xff0c;ERC20代币…

<计算机网络自顶向下> P2P应用

纯P2P架构 没有或者极少一直运行的Server&#xff0c;Peer节点间歇上网&#xff0c;每次IP地址都可能变化任意端系统都可以直接通信利用peer的服务能力&#xff0c;可扩展性好例子&#xff1a;文件分发; 流媒体; VoIP类别:两个节点相互上载下载文件&#xff0c;互通有无&#…

【opencv】示例-text_skewness_correction.cpp 校正文本图像的倾斜度

// 此教程展示了如何矫正文本的偏斜。 // 程序接受一个偏斜的源图像作为输入&#xff0c;并显示非偏斜的文本。#include <opencv2/core.hpp> // 包含OpenCV核心功能的头文件 #include <opencv2/imgcodecs.hpp> // 包含OpenCV图像编解码功能的头文件 #include <o…

大模型实战案例:8卡环境微调马斯克开源大模型 Grok-1

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

文献阅读:Viv:在 web 上多尺度可视化高分辨率多重生物成像数据

文献介绍 「文献题目」 Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web 「研究团队」 Nils Gehlenborg&#xff08;美国哈佛医学院&#xff09; 「发表时间」 2022-05-11 「发表期刊」 Nature Methods 「影响因子」 47.9 「DOI…

java设计模式之策略模式实操

一、背景 临床服务项目流向规则匹配&#xff0c;比如说医生开一个“CT”检查&#xff0c;该检查应该由哪个科室来执行&#xff0c;是通过流向规则配置来决定的&#xff0c;具体配置如下图&#xff1a; 通过相关的条件匹配&#xff0c;最终找到流向科室。 二、设计思路 有几个注…

云计算:Linux 部署 OVN 集群

目录 一、实验 1.环境 2.Linux 部署 OVN 集群&#xff08;中心端&#xff09; 3.Linux 部署 OVN 集群&#xff08;业务端1&#xff09; 4.Linux 部署 OVN 集群&#xff08;业务端2&#xff09; 4.OVN 中心端 连接数据库 5.OVN 业务端1 加⼊控制器 6.OVN 业务端2 加⼊控…

AI克隆语音(基于GPT-SoVITS)

概述 使用GPT-SoVITS训练声音模型&#xff0c;实现文本转语音功能。可以模拟出语气&#xff0c;语速。如果数据质量足够高&#xff0c;可以达到非常相似的结果。相比于So-VITS-SVC需要的显卡配置更低&#xff0c;数据集更小&#xff08;我的笔记本NVIDIA GeForce RTX 4050 Lap…

基于LSTM的新闻中文文本分类——基于textCNN与textRNN

构建词语字典 def build_vocab(file_path, tokenizer, max_size, min_freq):# 定义词汇表字典&#xff1a;使用 vocab_dic {} 初始化一个空字典&#xff0c;用于存储每个词及其出现频率vocab_dic {}with open(file_path, r, encodingUTF-8) as f:for line in tqdm(f):lin l…

为什么光伏探勘测绘需要无人机?

随着全球对可再生能源需求的不断增长&#xff0c;光伏产业也迎来了快速发展的机遇。光伏电站作为太阳能发电的主要形式之一&#xff0c;其建设前期的探勘测绘工作至关重要。在这一过程中&#xff0c;无人机技术的应用正逐渐展现出其独特的优势。那么&#xff0c;为什么光伏探勘…

《手机维修600G资料》云盘下载地址

无意中发现一个生财之道&#xff0c;哈哈哈&#xff0c;就是发现有人在一些视频平台&#xff0c;发手机维修之类的视频吸引客户。这样自己就不用开店也可以接生意了。问题剩下就一个了&#xff0c;把手机维修技术学好&#xff0c;一技在手&#xff0c;天上我有。 《手机维修600…

有条件的打破IBGP水平分割----反射规则和联邦+实验举例

背景&#xff1a;在一个AS中的设备运行了BGP协议&#xff0c;那么正常应该都连接了其他的AS&#xff0c;存在EBGP邻居关系&#xff1b;又由于IBGP的水平分割规则&#xff0c;导致从外部学习到的路由传递给本地AS时&#xff0c;需要和本地AS中运行BGP协议都要建立IBGP邻居关系&a…

基于R语言实现的负二项回归模型【理解与实现】-理解负二项回归模型和泊松回归模型之间的区别

前言 我们可以在R语言中使用MASS包中的glm.nb函数来拟合负二项模型&#xff0c;以及使用glm函数来拟合泊松模型。以下是一个详细的过程&#xff0c;包括模拟数据的生成、模型的拟合、结果的比较和解释。 需要的包 if (!require("MASS")) install.packages("M…

ES增强框架easy-es

因为最近做的功能是关于舆情的,所以数据量比较大的,本来打算用MySQL做时间分表来做,但是经过一段时间的测试,发现数据量太大,用时间分表不能满足性能的要求,所以决定将数据存储改为ES,但是短时间内改底层框架又不是一个小工程,时间上不允许,所以找到了一个很合适的框架,他跟myb…

Echarts简单的多表联动效果和添加水印和按钮切换数据效果

多表联动 多表联动效果指的是在多个表格之间建立一种交互关系&#xff0c;以便它们之间的操作或选择能够相互影响。通常情况下&#xff0c;多表联动效果可以通过以下方式之一实现&#xff1a; 数据关联&#xff1a; 当在一个表格中选择或操作某些数据时&#xff0c;另一个表格…

DataGrip连接Docker中的MySQL容器

获取MySQL镜像 通过命令行工具或者docker desktop 命令行&#xff1a; docker pull mysqldocker desktop工具&#xff0c;tag可以指定版本 创建mysql容器 我们知道dockerfile用于编写镜像&#xff0c;dockercompose用于编排容器&#xff0c;所以这里我用dockercompose来创…

eNSP防火墙配置实验(trust、DMZ、untrust)

【拓扑】 设备 接口 IP地址/子网掩码/网关 AR1 G0/0/0 10.1.3.2/24 G0/0/1 100.1.1.2/24 FW1 G0/0/0 192.168.166.254/24 G1/0/0 10.1.1.1/24&#xff0c;trust域 G1/0/1 10.1.2.1/24&#xff0c;DMZ域 G1/0/2 100.1.3.1/24&#xff0c;untrust域 LSW1 G0/0/…

ssm051网上医院预约挂号系统+jsp

网上医院预约挂号系统设计与实现 摘 要 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;因此传统管理方式就不适合。为了让医院预约挂号信息的管理模式进行升级&#xff0c;也为了更好的维护医院预约挂号信息&#xff0c;网上医院…

13.多通道视频流缓存以及显示架构

1 简介 多通道视频流缓存以及显示架构是一个在数字图像处理中很基础也很重要的一个架构。在图像拼接以及高分辨率图像显示方面应用范围较为广泛。本文将介绍一个四通道的图像显示。可以四个图像信息输入以及拼接到一个显示屏里面。使用的开发板为A7 2 框架图 架构图如下图所示…

Day20-【Java SE高级】单元测试 反射 注解 动态代理

一、单元测试 就是针对最小的功能单元(方法)&#xff0c;编写测试代码对其进行正确性测试。 1. 咱们之前是如何进行单元测试的?有啥问题? 只能在main方法编写测试代码&#xff0c;去调用其他方法进行测试。无法实现自动化测试&#xff0c;一个方法测试失败&#xff0c;可能…