华为云云耀云服务器L实例评测|在Docker环境下部署PrestaShop电子商务系统
一、前言
1.1 云耀云服务器L实例简介
云耀云服务器L实例是新一代的轻量应用云服务器,专为中小企业和开发者设计,提供便捷的开箱即用体验。该产品提供丰富且经过严格筛选的应用镜像,可一键部署应用,极大程度简化了客户在云端构建电商网站、Web应用、小程序、学习环境以及各类开发测试等任务的过程。
1.2 PrestaShop简介
PrestaShop 是一款开源电子商务网络应用程序,致力于为商家和客户提供最佳的购物车体验。它是用 PHP 编写的,高度可定制,支持所有主要支付服务,被翻译成多种语言并针对许多国家进行本地化,具有完全响应式设计(前台和后台)等。
二、本次实践介绍
2.1 本次实践简介
1.本次实践为个人测试学习环境,旨在快速部署应用,生产环境请谨慎;
2.本次实践环境为云耀云服务器L实例,使用的应用镜像为Portainer 2.18.4;
3.在Portainer平台上部署PrestaShop电子商务系统。
2.2 本次环境规划
服务器类别 | 应用镜像 | 内网IP地址 | Docker版本 | Portainer版本 | PrestaShop版本 |
---|---|---|---|---|---|
云耀云服务器L实例 | Docker可视化Portainer | 192.168.0.168 | 24.0.4 | 2.18.4 | 8.1.1 |
三、购买云耀云服务器L实例
3.1 购买云耀云服务器L实例
1.官网链接:https://www.huaweicloud.com/product/hecs-light.html
2.购买规格:
区域:华北—北京四;
应用镜像:Docker可视化-Portainer;
实例规格:2核2G/系统盘40G/峰值带宽 3Mbps/流量包400G;
实例名称:自定义即可,这里编辑为HECS-L-Portainer;
购买时长:1个月。
3.2 查看云耀云服务器L实例状态
查看购买的云耀云服务器L实例状态,处在正常运行中。
3.3 重置服务器密码
点击远程登录云耀云服务器L实例
重置密码,点击右侧的重置密码选项,需要进行身份验证,选择手机验证后,即可重置密码成功。
四、检查Docker环境
4.1 Xshell远程连接服务器
- 复制弹性公网IP地址,远程连接服务器时使用。
- 在Xshell工具中,填写服务器弹性公网IP地址、账号密码信息,ssh连接远程服务器。
4.2 检查Docker版本
检查Docker当前版本,云耀云服务器L实例使用Portainer应用镜像时,Docker环境已自动安装完毕,无需重新安装Docker环境。
root@hcss-ecs-f91c:~# docker version
Client: Docker Engine - Community
Version: 24.0.4
API version: 1.43
Go version: go1.20.5
Git commit: 3713ee1
Built: Fri Jul 7 14:50:55 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.4
API version: 1.43 (minimum version 1.12)
Go version: go1.20.5
Git commit: 4ffc614
Built: Fri Jul 7 14:50:55 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
4.3 检查docker compose版本
检查docker compose版本,新版Docker自动集成安装了docker compose 工具。
root@hcss-ecs-f91c:~# docker compose version
Docker Compose version v2.19.1
4.4 检查本地当前容器
检查本地当前运行容器,云耀云服务器L实例使用Portainer应用镜像时,会部署Docker环境以及创建portainer服务的容器。
root@hcss-ecs-f91c:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
866f19377f2d portainer/portainer-ce:2.18.3 "/portainer" 44 hours ago Up 43 hours 8000/tcp, 9443/tcp, 0.0.0.0:9091->9000/tcp, :::9091->9000/tcp portainer
五、下载PrestaShop镜像
5.1 配置Docker镜像加速
云耀云服务器L实例的Docker应用镜像场景中,从docker hub拉取镜像的速度还是比较快的。当某些镜像拉取过慢时,可尝试配置镜像加速。
- 编辑或新建/etc/docker/daemon.json文件,向其中添加registry-mirrors项。
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"]
}
- 重启Docker服务
systemctl daemon-reload
systemctl restart docker
5.2 下载PrestaShop镜像
从docker hub下载PrestaShop镜像
docker pull mariadb:10.6
docker pull prestashop/prestashop:latest
六、部署PrestaShop电子商务系统
5.1 创建挂载目录
新建目录/data/prestashop/
mkdir -p /data/prestashop/{data,db} && cd /data/prestashop
5.2 编辑docker-compose.yaml文件
新建编辑docker-compose.yaml文件,其中PS_DOMAIN变量的IP地址为服务器的内网IP地址,可通过云耀云服务器L实例的管理页面查询到。
version: "3.9"
services:
db:
image: mariadb:10.6
container_name: prestashop-db
hostname: prestashop-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -u root -pprestashop | grep 'mysqld is alive' || exit 1"]
volumes:
- /data/prestashop/db:/var/lib/mysql:rw
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: prestashop
MYSQL_USER: prestashop
MYSQL_PASSWORD: prestashop
MYSQL_DATABASE: prestashop
prestashop:
image: prestashop/prestashop:latest
container_name: prestashop
hostname: prestashop
security_opt:
- no-new-privileges:true
ports:
- 8910:80
volumes:
- /data/prestashop/data:/var/www/html:rw
environment:
DB_SERVER: prestashop-db
DB_NAME: prestashop
DB_USER: prestashopuser
DB_PASSWD: prestashoppass
PS_DOMAIN: 192.168.0.168:8910
depends_on:
- db
links:
- db:prestashop-db
5.3 部署PrestaShop
- 可通过Portainer的堆栈方式部署
- 通过docker compose直接部署
root@hcss-ecs-f91c:/data/prestashop# ls
data db docker-compose.yaml
root@hcss-ecs-f91c:/data/prestashop# docker compose up -d
[+] Running 3/3
✔ Network prestashop_default Created 0.0s
✔ Container prestashop-db Started 0.4s
✔ Container prestashop Started 0.6s
5.4 查看容器运行状态
查看容器运行状态,确保容器正常运行。
root@hcss-ecs-f91c:/data/prestashop# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82a8ee3b23b7 prestashop/prestashop:latest "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 0.0.0.0:8910->80/tcp, :::8910->80/tcp prestashop
b04c3a22c40c mariadb:10.6 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes (healthy) 3306/tcp
七、访问PrestaShop网站
7.1 放行安全组端口
在云瑶云服务器L实例的安全组管理页面,在入方向上放行8910端口。
7.2 PrestaShop的初始化配置
- 访问地址:http://弹性公网IP地址:8910,将IP替换为自己服务器的弹性公网IP地址。
- 设置系统语言为中文
- 同意许可协议
- 设置网站信息
店铺名称:myshop;
主要业务:自定义,这里选择计算机硬件和软件;
是否启动ssl:选择否;
名:san;
姓:zhang;
邮箱地址:jeven166@163.com;
店铺密码:自定义。
- 安装演示产品和模块
- 系统配置,填写数据库信息。
- 开始安装PrestaShop
7.3 访问PrestaShop后台
- 点击访问后台,会提示以下报错,根据报错信息修改。
- 进入PrestaShop容器内,删除install/目录和重命名admin/目录。
root@hcss-ecs-f91c:/data/prestashop# docker exec -it prestashop /bin/bash
root@prestashop:/var/www/html# ls
INSTALL.txt admin bin composer.lock docs img install mails pdf templates translations vendor
LICENSES app cache config download index.php js modules phpstan.neon.dist themes upload webservice
Makefile autoload.php classes controllers error500.html init.php localization override src tools var
root@prestashop:/var/www/html# rm -rf install/
root@prestashop:/var/www/html# mv admin/ admin730gc0bh93h9hpfocrm/
- 重新访问后台地址:http://弹性公网IP地址/admin730gc0bh93h9hpfocrm/
7.4 访问PrestaShop前台
访问前台地址:http://xxxx:8910/index.php
将IP改为自己服务器的弹性公网IP地址。