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

临沂经开区建设局网站电子商务网站开发设计报告

临沂经开区建设局网站,电子商务网站开发设计报告,公司图片logo,用网站做宣传的费用常常#xff0c;我会幻想着拥有一个随时可以携带、随时可以使用的开发环境#xff0c;那该是多么美好的事情。 在工作中#xff0c;编译环境的复杂性常常让我头疼不已。稍有不慎#xff0c;删除了一些关键文件#xff0c;整个编译链就会瞬间崩溃。更糟糕的是#xff0c;…常常我会幻想着拥有一个随时可以携带、随时可以使用的开发环境那该是多么美好的事情。 在工作中编译环境的复杂性常常让我头疼不已。稍有不慎删除了一些关键文件整个编译链就会瞬间崩溃。更糟糕的是当我花费大量时间和精力搭建好的环境不得不在不同的机器上重复这份工作时心中的焦虑更是无以言表。尤其是当代码需要交给同事处理如果能将整个环境如同复制粘贴一般简单传递那将是多么美妙的事。 当然虚拟机的确可以实现这种“复制粘贴”的效果但从版本管理、镜像托管和维护的角度来看其成本却颇高。这样的方案并不是我心目中理想的选择。于是我将目光转向了Docker。 一、需求整理 我理想的C/C编译环境至少需要具备以下环境或工具 ​Conan​: 一个我常用且比较流行的的C/C包管理工具​CMake​: 最流行的C/C构建系统基础编译环境gcc​,make​,gdb​等ARM编译工具链gcc-arm-none-eabi​, gcc-arm-linux-gnueabihf​, gcc-aarch64-linux-gnu​等基础开发库比如libssl-dev​, libgl-dev​等这些主要是方便其他上层库的编译 二、Docker简介 ​​ Docker 是一个容器引擎。对于没有接触过 Docker 的开发者来说可能比较陌生。可以将 Docker 大致理解为一个轻量级虚拟机框架但实际上它比虚拟机更高效。Docker 具备以下几点特性 足够快Docker 容器启动速度非常快通常只需要几秒钟。这是因为容器共享主机操作系统的内核而不像虚拟机需要启动一个完整的操作系统。这种高效性使得开发和测试过程更加顺畅。管理方便Docker 提供了丰富的命令行工具和 API使得容器的创建、启动、停止和销毁变得非常简单。同时Docker Compose 允许开发者使用一个简单的 YAML 文件来定义和管理多容器应用使得部署和管理复杂应用变得更加方便。生态好Docker 拥有庞大且活跃的社区提供了丰富的镜像资源。通过 Docker Hub开发者可以方便地下载和分享容器镜像。Docker 还支持与各种 CI/CD 工具、云平台和编排工具如 Kubernetes的集成形成了一个完善的生态系统。一致性Docker 确保应用程序在开发、测试和生产环境中运行的一致性。这意味着开发者可以在本地开发和测试应用程序然后将相同的容器部署到生产环境中而不必担心环境差异带来的问题。资源高效与传统的虚拟机相比Docker 容器更加轻量级消耗的资源更少。容器共享主机操作系统的内核避免了虚拟机需要为每个实例分配完整操作系统资源的情况。安全隔离Docker 使用内核命名空间namespace和控制组cgroup技术提供进程和资源的隔离。这种隔离确保了每个容器之间的安全性避免了相互干扰。可移植性Docker 容器可以在任何支持 Docker 的系统上运行无论是本地开发环境、云服务还是数据中心。这种可移植性使得应用程序能够在不同环境之间轻松迁移。 这些特性使得 Docker 成为现代软件开发和部署过程中不可或缺的工具极大地提高了应用的可移植性和开发效率。在Docker中包含三个基本概念分别是 镜像Image Docker 镜像Image就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器Container 镜像Image和容器Container的关系就像是面向对象程序设计中的类和实例一样镜像是静态的定义容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。仓库Repository 仓库可看成一个代码控制中心用来保存镜像。 Docker 的安装方法不在这里赘述。目前 Docker 发布了 Docker Desktop 软件这款桌面软件允许用户通过 GUI 来管理 Docker 镜像和容器。对新手来说会比较友好至于是使用命令行还是 GUI 方式可根据个人喜好进行选择。 三、DockerFile FROM ubuntu:22.04 ENV DEBIAN_FRONTENDnoninteractive COPY ./sources.list /etc/apt/sources.list# Install packages RUN set -eux \ apt-get update \ apt-get -yq upgrade \ apt-get -yq install \aptitude apt-rdepends bash build-essential ccache clang clang-tidy cppcheck curl doxygen diffstat gawk gdb git gnupg gperf iputils-ping \linux-tools-generic nano nasm ninja-build openssh-server openssl pkg-config python3 python-is-python3 spawn-fcgi net-tools iproute2 \sudo tini unzip valgrind wget zip texinfo gcc-multilib chrpath socat cpio xz-utils debianutils \patch perl tar rsync bc xterm whois software-properties-common apt-transport-https ca-certificates\dh-autoreconf apt-transport-https g graphviz xdot mesa-utils \ exit 0# Install cmake RUN set -eux \ wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.sh -q -O /tmp/cmake-install.sh \ chmod ux /tmp/cmake-install.sh \ mkdir /opt/cmake-3.28.5 \ /tmp/cmake-install.sh --skip-license --prefix/opt/cmake-3.28.5 \ rm /tmp/cmake-install.sh \ ln -s /opt/cmake-3.28.5/bin/* /usr/local/bin \ cmake --version \ exit 0# Install arm compiler RUN set -eux \ apt-get update \ apt-get -yq install \gcc-arm-none-eabi \g-arm-linux-gnueabi gcc-arm-linux-gnueabi \g-arm-linux-gnueabihf gcc-arm-linux-gnueabihf \g-aarch64-linux-gnu gcc-aarch64-linux-gnu \ exit 0# Install python pip RUN set -eux \ python3 --version \ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ python3 get-pip.py \ rm get-pip.py \ python3 -m pip install -U pip \ pip3 --version \ pip3 install --upgrade pip setuptools wheel \ pip3 --version \ exit 0# Install python packages RUN set -eux \ pip3 --version \ pip3 install --upgrade pip setuptools wheel \ pip3 --version \ pip3 install --upgrade autoenv autopep8 cmake-format clang-format conan meson \ pip3 install --upgrade cppclean flawfinder lizard pygments pybind11 GitPython pexpect subunit Jinja2 pylint CLinters \ exit 0# Install libraries RUN set -eux \ apt-get install -yq \libgl-dev libgl1-mesa-dev \libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev \libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev \libxss-dev libxt-dev libxtst-dev libxv-dev libxxf86vm-dev libxcb-glx0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev \libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev \libxcb-xinerama0-dev libxcb-dri3-dev uuid-dev libxcb-cursor-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev \libxcb-composite0-dev libxcb-ewmh-dev libxcb-res0-dev libxcb-util-dev libxcb-util0-dev\ apt-get -yq autoremove \ apt-get -yq autoclean \ apt-get -yq clean \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ exit 0# Setup ssh RUN set -eux \ mkdir -p /var/run/sshd \ mkdir -p /root/.ssh \ sed -ri s/^#?PermitRootLogin\s.*/PermitRootLogin yes/ /etc/ssh/sshd_config \ sed -ri s/UsePAM yes/#UsePAM yes/g /etc/ssh/sshd_config \ echo root:root | chpasswd \ exit 0ENTRYPOINT [/usr/bin/tini,--] CMD [/usr/sbin/sshd,-D,-e]如您所见我已经写完了一份DockerFile。其中包含了一些基础工具如网络工具、CMake、Python、ARM交叉编译工具链等。甚至还有一些开发用的基础库同时也配置好了SSH。点击下方图片查看最新完整代码欢迎START!!! 3.1 基础镜像和环境变量设置 FROM ubuntu:22.04 ENV DEBIAN_FRONTENDnoninteractive COPY ./sources.list /etc/apt/sources.listFROM ubuntu:22.04指定基础镜像为Ubuntu 22.04。ENV DEBIAN_FRONTENDnoninteractive设置环境变量使apt-get在非交互模式下运行避免提示用户输入。COPY ./sources.list /etc/apt/sources.list将本地的sources.list文件复制到容器中的/etc/apt/sources.list这里使用了清华源如果不要请将此条代码注释掉。 3.2 安装基础软件包 RUN set -eux \ apt-get update \ apt-get -yq upgrade \ apt-get -yq install \aptitude apt-rdepends bash build-essential ccache clang clang-tidy cppcheck curl doxygen diffstat gawk gdb git gnupg gperf iputils-ping \linux-tools-generic nano nasm ninja-build openssh-server openssl pkg-config python3 python-is-python3 spawn-fcgi net-tools iproute2 \sudo tini unzip valgrind wget zip texinfo gcc-multilib chrpath socat cpio xz-utils debianutils \patch perl tar rsync bc xterm whois software-properties-common apt-transport-https ca-certificates\dh-autoreconf apt-transport-https g graphviz xdot mesa-utils \ exit 0set -eux启用严格模式打印所有命令并在出现错误时停止脚本执行。apt-get update更新包列表。apt-get -yq upgrade升级所有已安装的包。apt-get -yq install … 安装列出的各种软件包涵盖编译工具、开发工具、网络工具等。 3.3 安装CMake RUN set -eux \ wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.sh -q -O /tmp/cmake-install.sh \ chmod ux /tmp/cmake-install.sh \ mkdir /opt/cmake-3.28.5 \ /tmp/cmake-install.sh --skip-license --prefix/opt/cmake-3.28.5 \ rm /tmp/cmake-install.sh \ ln -s /opt/cmake-3.28.5/bin/* /usr/local/bin \ cmake --version \ exit 0wget … -O /tmp/cmake-install.sh下载CMake安装脚本到/tmp目录。chmod ux /tmp/cmake-install.sh给予安装脚本执行权限。mkdir /opt/cmake-3.28.5创建安装目录。/tmp/cmake-install.sh --skip-license --prefix/opt/cmake-3.28.5执行安装脚本跳过许可证并安装到指定目录。rm /tmp/cmake-install.sh删除安装脚本。ln -s /opt/cmake-3.28.5/bin/ /usr/local/bin*创建符号链接使CMake命令可用。cmake --version验证CMake安装。 3.4 安装ARM编译器 RUN set -eux \ apt-get update \ apt-get -yq install \gcc-arm-none-eabi \g-arm-linux-gnueabi gcc-arm-linux-gnueabi \g-arm-linux-gnueabihf gcc-arm-linux-gnueabihf \g-aarch64-linux-gnu gcc-aarch64-linux-gnu \ exit 0apt-get update更新包列表。apt-get -yq install … 安装ARM编译器包括不同架构的编译器如ARM none-eabi​、ARM Linux-gnueabi​、ARM Linux-gnueabihf​、AArch64 Linux-gnu​。 3.5 安装Python的pip工具 RUN set -eux \ python3 --version \ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ python3 get-pip.py \ rm get-pip.py \ python3 -m pip install -U pip \ pip3 --version \ pip3 install --upgrade pip setuptools wheel \ pip3 --version \ exit 0python3 --version检查Python3版本。curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py下载pip安装脚本。python3 get-pip.py安装pip。rm get-pip.py删除安装脚本。python3 -m pip install -U pip升级pip。pip3 --version检查pip版本。pip3 install --upgrade pip setuptools wheel安装和升级常用的Python包。 3.6 安装Python包 RUN set -eux \ pip3 --version \ pip3 install --upgrade pip setuptools wheel \ pip3 --version \ pip3 install --upgrade autoenv autopep8 cmake-format clang-format conan meson \ pip3 install --upgrade cppclean flawfinder lizard pygments pybind11 GitPython pexpect subunit Jinja2 pylint CLinters \ exit 0pip3 --version检查pip版本。pip3 install --upgrade pip setuptools wheel确保pip及其依赖包是最新的。pip3 install --upgrade autoenv autopep8 cmake-format clang-format conan meson安装开发工具包。pip3 install --upgrade cppclean flawfinder lizard pygments pybind11 GitPython pexpect subunit Jinja2 pylint CLinters安装其他开发工具包。 3.7 安装其他开发库文件 RUN set -eux \ apt-get install -yq \libgl-dev libgl1-mesa-dev \libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev \libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev \libxss-dev libxt-dev libxtst-dev libxv-dev libxxf86vm-dev libxcb-glx0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev \libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev \libxcb-xinerama0-dev libxcb-dri3-dev uuid-dev libxcb-cursor-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev \libxcb-composite0-dev libxcb-ewmh-dev libxcb-res0-dev libxcb-util-dev libxcb-util0-dev\ apt-get -yq autoremove \ apt-get -yq autoclean \ apt-get -yq clean \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ exit 0这些主要是QT的依赖库后续也可以自行增加。 3.8 设置SSH RUN \set -eux \mkdir -p /var/run/sshd \mkdir -p /root/.ssh \sed -ri s/^#?PermitRootLogin\s.*/PermitRootLogin yes/ /etc/ssh/sshd_config \sed -ri s/UsePAM yes/#UsePAM yes/g /etc/ssh/sshd_config \echo root:root | chpasswd \exit 0mkdir -p /var/run/sshd创建sshd运行目录。mkdir -p /root/.ssh创建root用户的SSH目录。sed -ri ‘s/^#?PermitRootLogin\s.*/PermitRootLogin yes/’ /etc/ssh/sshd_config允许root用户通过SSH登录。sed -ri ‘s/UsePAM yes/#UsePAM yes/g’ /etc/ssh/sshd_config禁用PAM。echo ‘root’ | chpasswd设置root用户密码为’root’。 3.9 入口点和默认命令 ENTRYPOINT [/usr/bin/tini --] CMD [/usr/sbin/sshd -D -e]ENTRYPOINT [/usr/bin/tini –] 使用tini作为init进程处理信号和子进程。CMD [/usr/sbin/sshd -D -e] 启动sshd服务并保持前台运行。 四、构建镜像 首先请将第三部分的代码复制将其保存为Dockerfile​文件。如果您需要切换其他APT源如阿里源、清华源等请手动到官方镜像站获取相关源地址并将其保存为sources.list​。这里附上Ubuntu22.04清华镜像源 # 默认注释了源码镜像以提高 apt update 速度如有需要可自行取消注释 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# 以下安全更新软件源包含了官方源与镜像站配置如有需要可自行修改注释切换 deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源不建议启用 # deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse注意请使用http而不要用https. 完成后您的文件夹应该为如下布局 ​ 接下来请打开您的命令行程序并进入该文件夹如果您使用的是Windows操作系统推荐使用Powershell. 键入以下命令开始构建 docker buildx build . -t jelin-dev/ubuntu22.04您可以在控制台中看到构建过程 [] Building 218.2s (14/14) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 3.77kB 0.0s [internal] load metadata for docker.io/library/ubuntu:22.04 3.5s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load build context 0.0s transferring context: 1.28kB 0.0s [1/9] FROM docker.io/library/ubuntu:22.04sha256:a6d2b38300ce017add71440577d5b0a90460d0e57fd7aec21dd0d1b0761b 6.9s resolve docker.io/library/ubuntu:22.04sha256:a6d2b38300ce017add71440577d5b0a90460d0e57fd7aec21dd0d1b0761b 0.0s sha256:2af372c1e2645779643284c7dc38775e3dbbc417b2d784a27c5a9eb784014fb8 424B / 424B 0.0s sha256:52882761a72a60649edff9a2478835325d084fb640ea32a975e29e12a012025f 2.30kB / 2.30kB 0.0s sha256:a8b1c5f80c2d2a757adc963e3fe2dad0b4d229f83df3349fbb70e4d12dd48822 29.53MB / 29.53MB 5.7s sha256:a6d2b38300ce017add71440577d5b0a90460d0e57fd7aec21dd0d1b0761bbfb2 1.13kB / 1.13kB 0.0s extracting sha256:a8b1c5f80c2d2a757adc963e3fe2dad0b4d229f83df3349fbb70e4d12dd48822 1.0s [2/9] COPY ./sources.list /etc/apt/sources.list 0.1s [3/9] RUN set -eux apt-get update apt-get -yq upgrade apt-get -yq install aptit 81.2s [4/9] RUN set -eux wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux 13.4s [5/9] RUN set -eux apt-get update apt-get -yq install gcc-arm-none-eabi g 61.0s [6/9] RUN set -eux python3 --version curl https://bootstrap.pypa.io/get-pip.py -o get-pip.p 9.8s [7/9] RUN set -eux pip3 --version pip3 install --upgrade pip setuptools wheel pip3 29.4s [8/9] RUN set -eux apt-get install -yq libgl-dev libgl1-mesa-dev libx11-xcb-dev libfon 5.8s [9/9] RUN set -eux mkdir -p /var/run/sshd mkdir -p /root/.ssh sed -ri s/^#?PermitRo 0.4s exporting to image 6.7s exporting layers 6.7s writing image sha256:27e12e5d293fc972028bba5e9e488d4ed655ae5d479bd92b4fe1cb0295e6311d 0.0s naming to docker.io/jelin-dev/ubuntu22.04构建完成后您可以通过docker images​查看已有镜像 REPOSITORY TAG IMAGE ID CREATED SIZE jelin-dev/ubuntu22.04 latest 27e12e5d293f About a minute ago 5.25GB您可以通过以下命令创建并启动容器 docker run -itd -p 2201:22 --name test jelin-dev/ubuntu22.04:latest这样容器就在后台运行了您可以通过SSH连接到容器账号密码均为root​ 五、使用建议 众所周知C/C足够底层以至于其跨平台特性也仅限于代码层面只能通过使用不同的编译器编译才能实现多平台运行。所以它不像C#、Java、Python等编程语言有官方指定的包管理器甚至连构建系统也五花八门。jelin-dev​这个镜像挑选了业界主流的C/C包管理器和构建系统以及配备了我所涉及到需要交叉编译的工具链如果您有特殊的需要您可以自行添加相关环境再进行构建和使用。 Tap1. Conan包管理数据持久化 在 jelin-dev​ 镜像中我使用了 Conan 作为包管理器。建议您在创建容器时将 /root/.conan2​ 文件夹挂载到本地目录中。这些数据很重要因为 Conan 会将已经下载和编译的库存放在这个文件夹内。如果没有做持久化那么每次使用都将需要重新构建这些库。 Tap2. 使用CLion CLion 是一个非常好用的 IDE功能多样且灵活。它默认使用 CMake 进行构建并且对 CMake 的支持比其他 IDE 都要强大配置项目和管理变得非常轻松。除此之外CLion 还提供了 Conan 插件可以通过 GUI 方式配置依赖使用体验非常棒。另外CLion 对 Docker 的支持也是一大亮点。启动速度极快几乎感觉不到延迟使用起来非常顺畅。这些特性让 CLion 成为开发 C 项目的理想选择。 ‍
http://www.yingshimen.cn/news/117867/

相关文章:

  • 怎样弄网站api快速开发平台
  • 学校资源网站 建设网站运营推广方案
  • 梧州网站建设流程wordpress占用多大内存
  • 建站平台详细教程印刷网站建设
  • 怎么做网站xml地图在线视频网站a做免费下载
  • 地方旅游网站开发郑州妇科医院哪家排名比较好
  • 网站首页优化公司手机动画制作软件
  • 静态网站后台管理系统钉钉小程序开发
  • 长寿网站建设网站设计 配色
  • 辽源市网站建设html5网页制作源码大全
  • 电子商务网站建设编码郑州市建设教育协会网站
  • php彩票网站建设教程做动态效果的插件网站
  • 广州手机建站模板做外贸网站哪家好
  • 阿里云 网站建设网站颜色配色
  • 网站设计 深圳北京网站建设服务中心
  • 网站进入考核期要多久女装网站建设
  • wordpress 类似建站wordpress 移动端编辑器
  • 注册了域名之后如何建立一个网站谷歌英文网站
  • 建立网站模板网站的建设与维护就业方向
  • 专门做旅游的网站武威建设网站的网站
  • dedecms景区网站模板品牌营销策划ppt
  • 在百度搜索到自己的网站哈尔滨seo优化排名推广
  • 莱芜网站优化加徽信xiala5广告多的网站
  • 站长网站优化公司创建一个网站
  • 深圳公司网站建设服务为先赤峰公司网站建设
  • 企业网站建设服务公司网站留言效果怎么做
  • 网站是先备案 还是先做网站手机网站漂浮怎么做
  • 中国建设银行个人网站注册网站加速打开
  • seo排名整站优化大连网站开发公司电话
  • .net 手机网站源码下载彩票网站开发搭建