Flexus 云服务器 X 实例 Docker 容器化实践,轻松搭建 LNMP 环境
作者简介,黑夜开发者,CSDN 领军人物,全栈领域优质创作者
一、前言
在华为云征文|Flexus云服务器X,云上性能新飞跃,开启业务增长新纪元中我们讲解了产品的购买以及查看了购买的产品是否是我们想要的配置。
恰逢华为云 828 B2B 企业节盛大庆典,Flexus X 实例的特惠活动璀璨夺目,诚邀您深入探索。特别是针对那些既追求顶尖算力效能,又对自建 MySQL、Redis、Nginx 等关键服务性能有着严苛标准的企业及开发者而言,此次机会无疑是提升业务效率与竞争力的黄金契机,切莫错失!
⭐点击此处进入华为云828专场⭐⭐⭐
这节我们继续来讲,在 CentOS 服务器上安装 Docker、Docker Compose 以及配置 MySQL、Nginx 和 PHP 的运行环境。我们先通过后台将系统换成 CentOs,这个也是十分方便的,看下面的操作。
切换操作系统是也是免费的,大家有需要可以试试,不过如果服务器运行有重要的服务,请谨慎操作。
二、安装 Docker
2.1 安装 Docker 依赖
首先,需要安装 Docker 的依赖包。打开我们的终端并运行以下命令:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.2 设置 Docker 仓库
添加 Docker 官方仓库到你的 yum 仓库列表:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
国内如果说出现超时的情况,如下,可以更换其他的源。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3 安装 Docker CE
安装最新版本的 Docker CE:
sudo yum install docker-ce docker-ce-cli containerd.io
这个地方有点慢,可能要稍微等一会儿。
2.4 启动 Docker 服务
启动 Docker 服务,并设置其开机自启:
sudo systemctl start docker sudo systemctl enable docker
2.5 验证 Docker 安装
运行以下命令以验证 Docker 是否正确安装:
docker --version
三、安装 Docker Compose
3.1 下载 Docker Compose
从 GitHub 仓库下载 Docker Compose 的最新版本。例如,使用下面的命令下载最新版本(版本号请自行替换为最新版本):
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3.2 设置可执行权限
sudo chmod +x /usr/local/bin/docker-compose
3.3 验证 Docker Compose 安装
docker-compose --version
���四、配置 MySQL、Nginx 和 PHP
下面我们用 Docker Compose 来配置这些服务。
4.1 创建 docker-compose.yml
在你的项目根目录下创建一个 docker-compose.yml 文件,并添加以下内容(请根据你的需要调整版本和配置):
version: '3.3'services: db: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: v7wyU2treMBnKE5S MYSQL_DATABASE: huaweiyun_test MYSQL_USER: mysql MYSQL_PASSWORD: nKv7wyU2trE5beMBSBN web: image: nginx:latest restart: always ports: - "80:80" volumes: - /etc/docker-nginx/conf.d:/etc/nginx/conf.d - /var/web/http:/usr/share/nginx/html php: image: php:7.4-fpm restart: always volumes: - /var/web/http:/usr/share/nginx/html
注意:你需要创建相应的目录(如/etc/docker-nginx/conf.d 和/var/web/http),并放入相应的配置文件和网页内容。
基于上面的内容,我们设置一个 nginx 及基本配置文件。vim /etc/docker-nginx/conf.d/website.conf 放入如下内容:
server { listen 80; root /usr/share/nginx/html; error_log /var/log/nginx/error1.log warn; location ~* .php { index index.php; root /usr/share/nginx/html; fastcgi_pass php:9000;#php 就是 php 这个容器 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
4.2 启动服务
在项目根目录下运行以下命令来启动服务:
docker-compose up -d
如果提示以下超时:
可以 vim /etc/docker/daemon.json 放入如下内容:
{ "registry-mirrors": [ "https://gallery.ecr.aws/", "https://gitverse.ru/docs/artifactory/gitverse-registry/", "https://docker.lmirror.top", "https://atomhub.openatom.cn/" ]}
然后:
sudo systemctl daemon-reloadsudo systemctl restart docker
再次尝试。
4.3 通过 Nginx+PHP 配置公网可访问的服务
docker ps 看一下有没有正常启动容器,看上去没有问题。
为了让公网能够访问到我们的系统,我们放开一下 80 端口,这个去华为云后台操作如下。
先在目录/var/web/http 下面创建一个 index.html 放入下面的内容后保存。welcome huaweixun x instance 然后访问一下机器的 ip 看看什么反应。
正常出现,完美。
先在目录/var/web/http 下面创建一个 php.php 放入下面的内容后保存。
<?phpphpinfo()
然后访问一下机器的 ip 看看什么反应。
正常出现,完美。
五、性能测试
5.1 LNMP 性能测试
上面的一些流程里面,我们已经完成搭建好了 LNMP 的开发环境,因为是评测文章,下面我们来评测一下这个框架的性能。这里我们主要用到 wrk 来测试。wrk 是一个现代的 HTTP 基准测试工具,用于在高并发条件下测试 Web 服务器的性能。它可以模拟多个并发用户发送 HTTP 请求,并测量请求的响应时间、吞吐量等关键性能指标。
首先安装一下
git clone https://github.com/wg/wrk.gitcd wrk/makeln wrk /usr/local/bin
然后开始测试。
wrk -t12 -c400 -d30s http://114.116.225.214/php.php
这里:
· -t12 表示使用 12 个线程来执行测试。
· -c400 表示启动 400 个 HTTP 连接。
· -d30s 表示测试持续 30 秒。
下图中可以看到 30s 内发起了 4000 多次请求,200 多 M 数据流被传输,这个性能表现还是非常不错。
5.2 MySQL 性能测试
Sysbench 是一个跨平台的性能测试工具,尤其适用于数据库的性能评估。对于 MySQL 数据库,Sysbench 可以帮助测试其 OLTP(在线事务处理)能力,包括读写性能、并发性能等。下面我们用 Sysbench 来测试 MySQL 的性能。
先创建一个 sbtest 的数据库
CREATE DATABASE sbtest; GRANT ALL PRIVILEGES ON sbtest.* TO 'sbuser'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
然后使用 Sysbench 来准备测试数据。这可以通过 oltp_read_write 测试模式来完成,该模式支持在数据库中生成和填充测试表。
sysbench oltp_read_write --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=用户名 --mysql-password=密码 --mysql-db=sbtest --tables=30 --table-size=1000000 --threads=30 prepare
这里,--tables=30 表示创建 30 个测试表,--table-size=1000000 表示每个表中有 100 万行数据。--threads=30 表示用 30 哥线程来完成这个事情。
总共生成 3000 万数据,用了不到 2 分钟时间,效率还是比较不错的。
然后我们看一下控制台监控的表现。
各个模块看上去都压力不大,整体体验还是相当不错的,值得推荐。
六、总结
本文我们通过 Flexus 云服务器 X 实例实现了 Docker 容器化实践,轻松搭建 LNMP 环境,实现了高效、灵活的 Web 服务部署。Docker 简化了 LNMP 组件的部署与管理,提升了开发运维效率。Flexus 云服务器 X 以其卓越的性能和可扩展性,为 Docker 容器提供了坚实的底层支持,助力企业快速构建稳定、安全的 Web 应用环境。另外我们通过对服务和数据库的进行了一定的性能测试,服务器的表现也是非常稳健的。
希望华为云越来越好,希望中国的云事业更上一层楼,我作为一个普通开发者,也将不断参与与见证这一伟大的技术探索与变革。
⭐点击此处进入华为云828专场⭐⭐⭐
今天的内容就到这里,我们下期再会。
评论