当前位置: 首页 > news >正文

体育php网站源码做网站外链需要多少钱

体育php网站源码,做网站外链需要多少钱,php做学校网站免费下载,有什么做外贸的好网站作为一个前端想去做全栈的项目时#xff0c;可能第一个思路是 node vue/react。一开始可能会新建多个工程目录去实现#xff0c;假设分别为 web 和 server#xff0c;也许还有管理后台的代码 admin#xff0c;那么就有了三个工程的代码。此时为了方便管理就需要在远程仓库…作为一个前端想去做全栈的项目时可能第一个思路是 node vue/react。一开始可能会新建多个工程目录去实现假设分别为 web 和 server也许还有管理后台的代码 admin那么就有了三个工程的代码。此时为了方便管理就需要在远程仓库新建一个 group 统一管理代码一般这种方式称之为 MultiRepo。 这显然是不够简洁的对于开发者而言也不便于开发和部署。这类多模块的项目我们可以引入 Monorepo 的概念下面是一些优化方法的尝试以 yice-performance易测 作为例子讲解本地设备为 M1 芯片的 arm64v8 平台。 一、node 托管静态页面 可以将 web 打包的代码交给 node 托管此时就可以将 web 的代码作为一个文件夹放到 server 的目录中这时候我们一般直接访问后端接口的根路径即可。如yice-performance - v1.0对应的 nginx 配置一般为 server {listen 80;server_name yice.dtstack.cn;location / {proxy_pass http://localhost:4000/;} } 常见的 node 框架都支持托管静态文件目录 // express app.use(express.static(path.join(__dirname, web/dist)));// NestJS import { ServeStaticModule } from nestjs/serve-static;ServeStaticModule.forRoot({serveRoot: /,rootPath: join(__dirname, ., web/dist), }),// egg {static: {dir: path.join(appInfo.baseDir, web/dist),} } 代码基本大同小异从 nginx 配置和项目结构我们也能看出这还是属于一个 node 项目的结构前端项目的 nginx 配置一般为 server {listen 80;server_name yice.dtstack.cn;root /opt/dtstack/yice-performance/web/dist/location /api {proxy_pass http://localhost:4000/;}location / {try_files $uri $uri/ /index.html;} } 二、Turborepo Turborepo 是用于 JavaScript 和 TypeScript 代码库的高性能构建系统。 借助 Turborepo 我们可以并行的运行和构建代码当我们使用传统的 yarn workspace 管理代码时我们的一般会执行以下命令 # server yarn yarn dev# web cd web yarn yarn dev 此时本地开发不仅需要同时开启两个终端而且还得分别注意两个终端所在的路径lint、build、test 等命令皆如此。 想要更快的完成以上工作可以使用 turbo run lint test build。 新项目往往更容易使用 Turborepo使用 create-turbo 创建即可参考 官方文档。历史项目想要使用 Turborepo 时需要注意一下项目结构 yice-performance ├─package.json ├─pnpm-lock.yaml ├─pnpm-workspace.yaml ├─turbo.json ├─apps | ├─server | └─web 将历史项目的代码整合到单个文件夹后移入 apps 注意需要修改相对路径等代码比如 tsconfig.json 文件中关于 /* 等路径别名的写法以及 import 依赖的路径将公共依赖包统一提到根目录的 package.json 中。在根目录添加 turbo.json 文件这里是 dev 和 build 命令为例 {$schema: https://turbo.build/schema.json,tasks: {build: {dependsOn: [^build],outputs: [.apps/server/dist/**, !.apps/server/cache/**]},dev: {persistent: true,cache: false}} } 然后在 apps 下的产品中依次添加两种命令 {scripts: {dev: NODE_ENVdevelopment nest start --watch,build: NODE_ENVproduction nest build} } {scripts: {dev: NODE_ENVdevelopment vite --port 7001,build: tsc NODE_ENVproduction vite build} } 这样就可以通过 pnpm dev 一条命令同时启多个服务了pnpm build 可以快速完成多个项目的打包工作。 三、docker 以易测依赖的 Puppeteer 为例对于设备环境的要求就比较多参考 Puppeteer 故障排除再比如易测 v2.x 版本新增的数据周报功能使用到 node 端的 echarts最终依赖 node-canvas对设备环境的要求也很苛刻。同时部署命令写的脚本中还需要考虑不同环境的差异比如 Windows 中的情况。docker 在这里的作用就是抹平不同设备间的环境差异减少补充安装依赖包的痛苦amd64、arm64 等环境差异导致的依赖包安装失败问题我们可以构建适用于不同平台的 docker 镜像包以下以 linux/amd64 为例也就是常说的 x86_64 架构。 Dockerfile 本地编写 Dockerfile 文件然后执行 docker build命令构建镜像。在构建镜像之前需要注意下 Dockerfile 构建镜像时有一个 层 的概念对于构建时间会有较大影响。 Docker 镜像是由多个只读的层叠加而成的每一层都是基于前一层构建。Dockerfile 文件中的每条指令都会创建一个新的层并对镜像进行修改执行 docker build 命令时会使用缓存当前面的层不发生变化时我们再次构建镜像时就会更快速。但因为每一层都是基于前一层构建所以我们应该把变化可能性小的操作放到前面后续改动只会构建变化的内容而无需构建整个镜像这能大大加快镜像的构建速度。 比如下方 Dockerfile.server 中的 nodejs 的安装如果放在 COPY . . 之后则每次构建都需要安装一次 nodejs我们利用缓存可以大大减少构建时间。 FROM ubuntu:22.04# 设置时区 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone \ apt-get update -y apt-get install -y tzdata# puppeteer 和 node-canvas 对系统依赖的要求 # https://github.com/Automattic/node-canvas?tabreadme-ov-file#compiling # https://github.com/puppeteer/puppeteer/blob/puppeteer-v19.6.3/docs/troubleshooting.md#chrome-headless-doesnt-launch-on-unix RUN apt-get update -y \ apt-get install -y build-essential libcairo2-dev libpango1.0-dev libnss3 libatk1.0-0 \ apt-get install -y ca-certificates fonts-liberation libasound2 libatk-bridge2.0-0 \ apt-get install -y libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 \ apt-get install -y libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libpangocairo-1.0-0 \ apt-get install -y libstdc6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \ apt-get install -y libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 \ apt-get install -y libxss1 libxtst6# 处理 chromium 等依赖问题 # https://github.com/puppeteer/puppeteer/blob/puppeteer-v19.6.3/docker/Dockerfile RUN apt-get update -y \ apt-get install -y wget gnupg \ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg \ sh -c echo deb [archamd64 signed-by/usr/share/keyrings/googlechrome-linux-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main /etc/apt/sources.list.d/google.list \ apt-get update -y \ apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-khmeros fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends \ rm -rf /var/lib/apt/lists/* \ apt-get remove -y wget gnupg # deb [archamd6 配置可能会在 /etc/apt/sources.list.d/google.list 和 /etc/apt/sources.list.d/google-chrome.list 中重复再尝试一次 RUN rm -rf /etc/apt/sources.list.d/google-chrome.list \ apt-get update -y \ apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-khmeros fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends# 安装 nodejs RUN apt-get update -y apt-get install -y curl \ curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ apt-get remove -y curl \ apt-get install -y nodejs \ npm config set registry https://registry.npmmirror.com/ \ npm install pnpm6.35.1 -g# 设置工作目录 WORKDIR /yice-performance# 拷贝代码安装依赖 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./ COPY apps/server/package.json ./apps/server/ COPY apps/web/package.json ./apps/web/ RUN pnpm install# 复制项目文件 COPY apps .env ./ # 减少 node_modules 的磁盘占用 RUN pnpm build \ find . -name node_modules -type d -prune -exec rm -rf {} \ pnpm install --production# 暴露端口 EXPOSE 4000# 定义环境变量 ENV NODE_ENVproduction # Dockerfile 中需指定 chromium 路径 ENV PUPPETEER_EXECUTABLE_PATHgoogle-chrome-stableVOLUME [ /yice-performance/apps/server/yice-report ]# 启动应用程序 CMD [node, apps/server/dist/main.js] ARG BASE_IMAGEmysql:5.7 FROM ${BASE_IMAGE}# 当容器启动时会自动执行 /docker-entrypoint-initdb.d/ 下的所有 .sql 文件 COPY ./mysql/demo-data.sql /docker-entrypoint-initdb.d/ # 附加的 mysql 配置 COPY ./mysql/my_custom.cnf /etc/mysql/conf.d/# 设置 MySQL root 用户的密码 ENV MYSQL_ROOT_PASSWORD123456 ENV MYSQL_DATABASEyice-performance# 设置时区 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 暴露端口 EXPOSE 3306 根据 Dockerfile 文件本地构建镜像构建完成后在 Docker Desktop 中就可以看到刚刚构建的镜像。我们新建一个脚本文件来统一管理命令并在 package.json 中添加 build:docker命令 #!/bin/shcd docker# amd64 docker buildx build --platform linux/amd64 -f Dockerfile.mysql -t liuxy0551/yice-mysql . docker buildx build --platform linux/amd64 -f Dockerfile.server -t liuxy0551/yice-server ../ 此时执行 pnpm build:docker 即可打包镜像。 多平台打包镜像 由于我们目前使用的 Mac M 系列芯片较多这是 arm64 v8 平台的但往往我们打包后的镜像是在 x86 的机器上使用比如 Centos、Ubuntu 等服务器系统这就要求我们应该兼容 x86 平台。使用 docker inspect 的命令可以查看镜像架构如下 docker pull alpine docker inspect alpine | grep Architecture 修改刚刚写的 Dockerfile 文件支持通过 docker build 命令的 build argument 传递参数这在明确不同平台使用的基础镜像时比较有用。有些常用的基础镜像是支持多平台只需要添加 --platform linux/amd64, linux/arm64 即可docker buildx 会自动处理一切yice-mysql 支持了 arm64 v8其他内容可以自行研究。 镜像发布 这里使用的是阿里云容器镜像服务阿里云登录 - 欢迎登录阿里云安全稳定的云计算服务平台。 docker login --usernameyour_username -p your_password registry.cn-hangzhou.aliyuncs.com docker tag liuxy0551/yice-mysql registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-mysql:latest docker tag liuxy0551/yice-server registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-server:latestdocker push registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-mysql:latest docker push registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-server:latest docker run 为了保证 yice-server 可以访问到 yice-mysql两个容器需要使用同一个网络。 docker network create yice-network docker run -p 3306:3306 -d --name yice-mysql --networkyice-network -v /opt/dtstack/yice-performance/yice-mysql/conf:/etc/mysql/conf.d -v /opt/dtstack/yice-performance/yice-mysql/log:/var/log/mysql -v /opt/dtstack/yice-performance/yice-mysql/data:/var/lib/mysql registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-mysql:latest docker run -p 4000:4000 -d --name yice-server --networkyice-network -v /opt/dtstack/yice-performance/yice-report:/yice-performance/apps/server/yice-report registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-server:latest -p 表示端口映射-p 宿主机 port:容器 port这里暴漏端口是为了外部可以通过 GUI 工具查看数据 -d 表示后台运行并返回容器 id --name 表示给容器指定的名称 -v /opt/dtstack/yice-performance/yice-mysql:/etc/mysql/conf.d 等挂载路径表示将容器中的配置项、数据、日志都挂载到主机的 /opt/dtstack/yice-performance/yice-mysql 下 -v /opt/dtstack/yice-performance/yice-report:/yice-performance/apps/server/yice-report 表示将容器中的检测报告挂载到宿主机 挂载的目的是为了在删除容器时数据不丢失且尽量保持容器存储层不发生写操作。 执行 docker run 命令生成容器并运行访问 http://localhost:4000 即可看到页面了。 docker-compose docker-compose 是 Docker 官方提供的一个工具用于管理多个 Docker 容器的应用程序使用 docker-compose 可以协同多个容器运行。新增 docker-compose.yml 文件在这个文件里定义应用程序所需的服务和容器包括镜像、环境变量、端口映射、挂载目录等信息。 version: 3services:mysql-service:container_name: yice-mysqlimage: registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-server:latestports:- 3306:3306restart: alwaysnetworks:- yice-networkserver-service:container_name: yice-serverimage: registry.cn-hangzhou.aliyuncs.com/liuxy0551/yice-mysql:latestports:- 4000:4000restart: alwaysdepends_on:- mysql-servicenetworks:- yice-networknetworks:yice-network:driver: bridge docker-compose -f docker/docker-compose.yml -p yice-performance up -d 四、常见问题 yice-server 无法启动 可能是 docker 版本较低建议升级到 docker v24 及以上升级前应当备份。 yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin node[1]: ../src/node_platform.cc:61:std::unique_ptrlong unsigned int node::WorkerThreadsTaskRunner::DelayedTaskScheduler::Start(): Assertion (0) (uv_thread_create(t.get(), start_thread, this)) failed.1: 0xb090e0 node::Abort() [node]2: 0xb0915e [node]3: 0xb7512e [node]4: 0xb751f6 node::NodePlatform::NodePlatform(int, v8::TracingController*) [node]5: 0xacbf74 node::InitializeOncePerProcess(int, char**, node::InitializationSettingsFlags, node::ProcessFlags::Flags) [node]6: 0xaccb59 node::Start(int, char**) [node]7: 0x7f2ffac64d90 [/lib/x86_64-linux-gnu/libc.so.6]8: 0x7f2ffac64e40 __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6]9: 0xa408ec [node] gcc 版本过低 主机部署时建议使用 Ubuntu。主机模式部署时 CentOS7 上启动服务时报错Error: /lib64/libstdc.so.6: version CXXABI_1.3.9 not found这是因为 CentOS7 的 gcc 版本过低需要升级到 gcc-4.8.5 以上执行下方命令可以看到没有 CXXABI_1.3.9。 strings /lib64/libstdc.so.6 | grep CXXABI cd /etc/gcc wget https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz tar xzvf gcc-9.5.0.tar.gz mkdir obj.gcc-9.5.0 cd gcc-9.5.0 ./contrib/download_prerequisites cd ../obj.gcc-9.5.0 ../gcc-9.5.0/configure --disable-multilib --enable-languagesc,c make -j $(nproc) make install 文章转载自袋鼠云数栈前端 原文链接https://www.cnblogs.com/dtux/p/18329811 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
http://www.dnsts.com.cn/news/168279.html

相关文章:

  • 基于百度地图的网站开发网页版淘宝网登录入口
  • 如何有效的进行网站策划怎么给公司建网站
  • 做笔记的网站源码数据库电影网站源码
  • 广西建设厅考试网站软文营销广告案例
  • 自己怎么做网站赚钱吗天津黑曼巴网站建设
  • 给网站定位带后台的网站模板下载
  • 百度投诉电话24小时seo一个月工资一般多少
  • 百度蜘蛛对视频网站的抓取常州做网站找哪家好
  • 建设网站模版顶针 东莞网站建设
  • 网站开发实现页面的跳转网络科技公司属于什么行业类别
  • 济南制作网站的公司wordpress文章播放器
  • 快速提高网站关键词排名优化手机网站吧
  • 陈村网站设计wordpress主题html
  • phpcms建站教程网站建设广州天河
  • 看守所加强自身网站建设工作检查网站收录问题
  • 学做标书网站wordpress信息发布付费
  • c qq 互联网站开发代码矿坛器材友情交换
  • 企业网站为什么要备案徐州市住房和城乡建设局网站首页
  • 天津商城网站建设公司长宁广州网站建设
  • 地方旅游网站模板做淘宝网站的
  • 民非企业网站建设费怎么记账wordpress 线条不显示不出来
  • 网站备案用户名直播型网站开发
  • 哪个做砍价活动的网站好建设网站的硬件
  • 网站模板安装教程企业展厅公司哪家好
  • 海西州网站建设公司wordpress 万能表单
  • 网站代码案例太原网站建设制作公司哪家好
  • 有哪些做农产品的网站淮北专业网站建设
  • 鞍山专业做网站公司android wap网站
  • 珠海网站建设制作网页设计常规尺寸
  • 网站建设需要编程吗wordpress 迁移后空白