开发 网站 费用织梦响应式网站

web/2025/10/3 14:30:52/文章来源:
开发 网站 费用,织梦响应式网站,白云做网站要多少钱,wordpress做中文官网实现使用 Docker 在一台服务器上搭建支持 80、443 端口访问的测试、生产双站点系统。 1、生产环境测试环境的规划和部署 1.1、说明 图1 系统部署示意图 1#xff09;项目 此处以一个演示项目的形式来进行环境的规划和部署。此项目名称默认定义为#xff1a;“demo”测试环境的规划和部署 1.1、说明 图1 系统部署示意图 1项目 此处以一个演示项目的形式来进行环境的规划和部署。此项目名称默认定义为“demo”且主要功能为前端应用提供 API 接口服务项目下面包含两个站点一个测试站点和一个生产站点主要特点如下 项目支持 http 和 https 访问默认按最简配置傻瓜式安装、卸载安装、卸载简单可根据需要添加配置参数扩展灵活脚本化执行在 shell 里运行脚本即可实现自动化的安装和卸载 2站点 站点一般由 nginx php mariadb 组成 nginx 提供路由访问服务 php 程序提供业务处理能力 mariadb 提供 mysql 数据库服务。此项目有两个站点测试站点和生产站点生产站点作为正式发布的版本测试站点提供开发过程中的功能测试。测试站点的默认名称为“test”域名为 myapitest.xxxxxx.com 生产站点的默认名称为“prod”域名为 myapi.xxxxxx.com 由于本示例中生产环境和测试环境架设在同一台服务器上所以采用一个 nginx 为两个站点提供访问服务。 3服务 此项目中使用到的 nginx 、 php 、 mariadb 等就是服务包括一个 nginx 、两个 php 、两个 mariadb 4 ssl 证书 此演示项目是在腾讯云服务器上安装里面用到的 ssl 证书是从腾讯云申请的具体申请流程请看腾讯云的相关说明文档包含两个文件具体文件名格式为 1_myapitest.xxxxxx.com_bundle.crt 和 2_myapitest.xxxxxx.com.key 其中 myapitest.xxxxxx.com 为申请时使用的域名此处为非真实的域名请读者使用自己的域名。如果是其他云也可以从对应的云服务器里找到相关证书申请的讯息当然还可以从第三方直接申请免费证书具体就请在网上搜索吧。 1.2、演示项目安装完成后的结果 为了使大家对安装后的环境有个宏观的了解也便于讲解所以从结果倒着看先看看安装完成后的情况了解一下即可文章最后会给出相关安装的脚本及配置文件。此处约定的参数为 项目名称project_name -- demo测试站点名称test_site_name -- test生产站点名称prod_site_name -- prod 1.2.1、安装完成后的主机挂载目录的结构 图2 主机挂载目录结构 在使用脚本进行安装时脚本会先建立相关目录以及对应的文件。 1.2.2、安装用到的关键配置文件 1docker-compose.yml version: 3.5services:demo_test_mariadb:container_name: demo_test_mariadbimage: mariadb:10.3restart: alwaysprivileged: trueports:- 13306:3306volumes:- $ROOT_DIR/demo/test/data/mariadb:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: demo_test_dbMYSQL_USER: demo_test_userMYSQL_PASSWORD: 654321command: [--character-set-serverutf8mb4,--collation-serverutf8mb4_unicode_ci]networks:- demo_test_networkdemo_test_php:container_name: demo_test_phpimage: php:7.2.3-fpmprivileged: truerestart: alwaysnetworks:- demo_test_networkvolumes:- $ROOT_DIR/demo/test/www:/var/demo/test/wwwenvironment:- TZAsia/Shanghailinks:- demo_test_mariadbdemo_prod_mariadb:container_name: demo_prod_mariadbimage: mariadb:10.3restart: alwaysprivileged: trueports:- 23306:3306volumes:- $ROOT_DIR/demo/prod/data/mariadb:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: demo_prod_dbMYSQL_USER: demo_prod_userMYSQL_PASSWORD: 654321command: [--character-set-serverutf8mb4,--collation-serverutf8mb4_unicode_ci]networks:- demo_prod_networkdemo_prod_php:container_name: demo_prod_phpimage: php:7.2.3-fpmprivileged: truerestart: alwaysnetworks:- demo_prod_networkvolumes:- $ROOT_DIR/demo/prod/www:/var/demo/prod/wwwenvironment:- TZAsia/Shanghailinks:- demo_prod_mariadbdemo_nginx:container_name: demo_nginximage: nginx:1.13privileged: truerestart: alwaysnetworks:- demo_test_network- demo_prod_networkports:- 80:80- 443:443volumes:- $ROOT_DIR/demo/test/www:/var/demo/test/www- $ROOT_DIR/demo/prod/www:/var/demo/prod/www- $ROOT_DIR/demo/nginx/conf.d:/etc/nginx/conf.d- $ROOT_DIR/demo/nginx/ssl:/etc/nginx/sslenvironment:- TZAsia/Shanghailinks:- demo_test_php- demo_prod_phpnetworks:demo_test_network:name: demo_test_networkdemo_prod_network:name: demo_prod_network docker-compose.yml 文件说明 版本 version: 3.5版本选的是3.5主要是考虑用来支持网卡命名特性见docker-compose.yml 文件的末尾部分networks的定义 networks:demo_test_network:name: demo_test_networkdemo_prod_network:name: demo_prod_networkdocker服务、相关参数、网卡命名规范 以服务mariadb的命名为例demo_test_mariadb将项目名称为demo、站点名称为test、服务为mariadb的三个名字用下划线“_”连接起来就可以保证主机上服务命名的唯一性主机上的多个服务不会有重复命名的情况出现demo_test_mariadb 可以这样理解demo项目的test测试站点的mariadb服务 同理还有类似的命名有demo_prod_phpphp服务、demo_test_dbmariadb数据库、demo_prod_networkdemo项目中生产站点的网卡 由于demo项目里的nginx服务同时为生产环境和测试环境提供服务所以其命名为demo_nginxdemo项目的nginx服务 docker目录规范 /dockers/demo/test/www — 表示 demo项目中测试站点的网页目录 /dockers/demo/prod/data — 表示 demo项目中生产站点的数据目录 /dockers/demo/nginx/ssl — 表示 demo项目中 nginx 服务的 ssl 证书目录 环境变量 ROOT_DIR 环境变量 ROOT_DIR 为此脚本作用范围内的环境变量用来指定项目目录的上一级目录该环境变量在 install.sh 里定义。 2/dockers/demo/nginx/conf.d/default.conf server {listen 80;listen 443 ssl;server_name myapitest.xxxxxx.com;#ssl on;ssl_certificate /etc/nginx/ssl/1_myapitest.xxxxxx.com_bundle.crt;ssl_certificate_key /etc/nginx/ssl/2_myapitest.xxxxxx.com.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;location / {root /var/demo/test/www;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {fastcgi_pass demo_test_php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/demo/test/www$fastcgi_script_name;include fastcgi_params;} }server {listen 80;listen 443 ssl;server_name myapi.xxxxxx.com;#ssl on;ssl_certificate /etc/nginx/ssl/1_myapi.xxxxxx.com_bundle.crt;ssl_certificate_key /etc/nginx/ssl/2_myapi.xxxxxx.com.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;location / {root /var/demo/prod/www;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {fastcgi_pass demo_prod_php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/demo/prod/www$fastcgi_script_name;include fastcgi_params;} }安装demo项目的基本流程为 第一步将相关文件拷贝到主机挂载目录包括docker-compose.yml 和 default.conf第二步配置好 docker-compose.yml第三步配置好 default.conf第四步运行 docker-compose up -d 安装第五步安装PDO驱动等 2、脚本化安装 2.1、安装文件目录结构 图3 项目目录结构 从上图可以看出安装文件的目录结构还是很简单的其中模版目录下除了default.conf.tpl、docker-compose.yml.tpl比较重要和相对复杂以外其他模版文件都很简单可有可无不关键只是为了配合测试。 2.2、自定义变量说明 此项目为了简化文件生成在模版文件中使用了自定义变量自定义变量的书写形式为{{自定义变量_xxxx}}可以在脚本中根据变量的配置值对模版文件的自定义变量区域进行动态替换。例如我们在config.sh文件中定义了变量“project_name”“test_site_name” [project_name]demo # 项目名称[test_site_name]test # 测试站点名称同时我们在docker-compose.yml.tpl中使用了自定义变量域{{project_name}}、{{test_site_name}} version: 3.5services:{{project_name}}_{{test_site_name}}_mariadb: 运行脚本后生成的配置文件的自定义变量域会被替换比如上面的模版对应的配置文件会变成 version: 3.5services:demo_test_mariadb: 需要说明的是在本配置中自定义变量实现了“即加即用”且用户可以根据需要定义在 congfig.sh 文件里定义一个变量在模版文件里加上对应的自定义变量域不用修改其他代码就能自动进行替换。 2.3、关键文件说明 2.3.1、config.sh #!/bin/bashdeclare -A config([project_name]demo # 项目名称[mariadb_image]mariadb:10.3 # mariadb 镜像名和版本[php_image]php:7.2.3-fpm # php 镜像名和版本[nginx_image]nginx:1.13 # nginx 镜像名和版本[test_site_name]test # 测试站点名称[mysql_root_password_test]123456 # 测试站点数据库root密码[mysql_password_test]654321 # 测试站点数据库用户密码用户名会自动生成[mysql_mapped_port_test]13306 # 测试站点数据库管理端口映射便于客户端管理[dns_test]myapitest.xxxxxx.com # 测试站点域名# 测试站点 ssl 证书文件名配置[ssl_certificate_test]1_myapitest.xxxxxx.com_bundle.crt[ssl_certificate_key_test]2_myapitest.xxxxxx.com.key[prod_site_name]prod # 生产站点名称[mysql_root_password_prod]123456 # 生产站点数据库root密码[mysql_password_prod]654321 # 生产站点数据库用户密码用户名会自动生成[mysql_mapped_port_prod]23306 # 生产站点数据库管理端口映射便于客户端管理[dns_prod]myapi.xxxxxx.com # 生产站点域名# 生产站点 ssl 证书文件名配置[ssl_certificate_prod]1_myapi.xxxxxx.com_bundle.crt[ssl_certificate_key_prod]2_myapi.xxxxxx.com.key ) 配置文件里定义了一个map来存储相关配置参数用户可以根据需要进行修改、增加、删除配置。 2.3.2、tpl/docker-compose.yml.tpl version: 3.5services:{{project_name}}_{{test_site_name}}_mariadb:container_name: {{project_name}}_{{test_site_name}}_mariadbimage: {{mariadb_image}}restart: alwaysprivileged: trueports:- {{mysql_mapped_port_test}}:3306volumes:- $ROOT_DIR/{{project_name}}/{{test_site_name}}/data/mariadb:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: {{mysql_root_password_test}}MYSQL_DATABASE: {{project_name}}_{{test_site_name}}_dbMYSQL_USER: {{project_name}}_{{test_site_name}}_userMYSQL_PASSWORD: {{mysql_password_test}}command: [--character-set-serverutf8mb4,--collation-serverutf8mb4_unicode_ci]networks:- {{project_name}}_{{test_site_name}}_network{{project_name}}_{{test_site_name}}_php:container_name: {{project_name}}_{{test_site_name}}_phpimage: {{php_image}}privileged: truerestart: alwaysnetworks:- {{project_name}}_{{test_site_name}}_networkvolumes:- $ROOT_DIR/{{project_name}}/{{test_site_name}}/www:/var/{{project_name}}/{{test_site_name}}/wwwenvironment:- TZAsia/Shanghailinks:- {{project_name}}_{{test_site_name}}_mariadb{{project_name}}_{{prod_site_name}}_mariadb:container_name: {{project_name}}_{{prod_site_name}}_mariadbimage: {{mariadb_image}}restart: alwaysprivileged: trueports:- {{mysql_mapped_port_prod}}:3306volumes:- $ROOT_DIR/{{project_name}}/{{prod_site_name}}/data/mariadb:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: {{mysql_root_password_prod}}MYSQL_DATABASE: {{project_name}}_{{prod_site_name}}_dbMYSQL_USER: {{project_name}}_{{prod_site_name}}_userMYSQL_PASSWORD: {{mysql_password_prod}}command: [--character-set-serverutf8mb4,--collation-serverutf8mb4_unicode_ci]networks:- {{project_name}}_{{prod_site_name}}_network{{project_name}}_{{prod_site_name}}_php:container_name: {{project_name}}_{{prod_site_name}}_phpimage: {{php_image}}privileged: truerestart: alwaysnetworks:- {{project_name}}_{{prod_site_name}}_networkvolumes:- $ROOT_DIR/{{project_name}}/{{prod_site_name}}/www:/var/{{project_name}}/{{prod_site_name}}/wwwenvironment:- TZAsia/Shanghailinks:- {{project_name}}_{{prod_site_name}}_mariadb{{project_name}}_nginx:container_name: {{project_name}}_nginximage: {{nginx_image}}privileged: truerestart: alwaysnetworks:- {{project_name}}_{{test_site_name}}_network- {{project_name}}_{{prod_site_name}}_networkports:- 80:80- 443:443volumes:- $ROOT_DIR/{{project_name}}/{{test_site_name}}/www:/var/{{project_name}}/{{test_site_name}}/www- $ROOT_DIR/{{project_name}}/{{prod_site_name}}/www:/var/{{project_name}}/{{prod_site_name}}/www- $ROOT_DIR/{{project_name}}/nginx/conf.d:/etc/nginx/conf.d- $ROOT_DIR/{{project_name}}/nginx/ssl:/etc/nginx/sslenvironment:- TZAsia/Shanghailinks:- {{project_name}}_{{test_site_name}}_php- {{project_name}}_{{prod_site_name}}_phpnetworks:{{project_name}}_{{test_site_name}}_network:name: {{project_name}}_{{test_site_name}}_network{{project_name}}_{{prod_site_name}}_network:name: {{project_name}}_{{prod_site_name}}_network 2.3.3、tpl/default.conf.tpl server {listen 80;listen 443 ssl;server_name {{dns_test}};#ssl on;ssl_certificate /etc/nginx/ssl/{{ssl_certificate_test}};ssl_certificate_key /etc/nginx/ssl/{{ssl_certificate_key_test}};ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;location / {root /var/{{project_name}}/{{test_site_name}}/www;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {fastcgi_pass {{project_name}}_{{test_site_name}}_php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/{{project_name}}/{{test_site_name}}/www$fastcgi_script_name;include fastcgi_params;} }server {listen 80;listen 443 ssl;server_name {{dns_prod}};#ssl on;ssl_certificate /etc/nginx/ssl/{{ssl_certificate_prod}};ssl_certificate_key /etc/nginx/ssl/{{ssl_certificate_key_prod}};ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置ssl_prefer_server_ciphers on;location / {root /var/{{project_name}}/{{prod_site_name}}/www;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {fastcgi_pass {{project_name}}_{{prod_site_name}}_php:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/{{project_name}}/{{prod_site_name}}/www$fastcgi_script_name;include fastcgi_params;} } 2.3.4、install.sh #!/bin/bashexport ROOT_DIR/dockers # 项目发布目录的上一级目录. config.sh # 引入配置文件脚本 . common/create_yml.sh # 引入创建 docker-compose.yml 文件的脚本project_name${config[project_name]} # 项目名称 test_site_name${config[test_site_name]} # 测试站点名称 prod_site_name${config[prod_site_name]} # 生产站点名称# 在主机上创建相关挂载目录会在安装时挂载到 docker 上 mkdir -p $ROOT_DIR/$project_name/$test_site_name/www # 测试站点页面目录 mkdir -p $ROOT_DIR/$project_name/$prod_site_name/www # 生产站点页面目录 mkdir -p $ROOT_DIR/$project_name/nginx/conf.d # nginx 配置目录 mkdir -p $ROOT_DIR/$project_name/nginx/ssl # ssl 证书文件目录# 从安装模版目录里拷贝相关模板到挂载目录下 cp -f tpl/index_1.html.tpl $ROOT_DIR/$project_name/$test_site_name/www/index.html cp -f tpl/index_2.html.tpl $ROOT_DIR/$project_name/$prod_site_name/www/index.html cp -f tpl/index_1.php.tpl $ROOT_DIR/$project_name/$test_site_name/www/index.php cp -f tpl/index_2.php.tpl $ROOT_DIR/$project_name/$prod_site_name/www/index.php cp -f tpl/testdb_1.php.tpl $ROOT_DIR/$project_name/$test_site_name/www/testdb.php cp -f tpl/testdb_2.php.tpl $ROOT_DIR/$project_name/$prod_site_name/www/testdb.php cp -f tpl/default.conf.tpl $ROOT_DIR/$project_name/nginx/conf.d/default.conf# 根据模版自动生成相应文件 for key in ${!config[]} dosed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/$test_site_name/www/index.htmlsed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/$prod_site_name/www/index.htmlsed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/$test_site_name/www/index.phpsed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/$prod_site_name/www/index.phpsed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/$test_site_name/www/testdb.phpsed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/$prod_site_name/www/testdb.phpsed -i s/{{$key}}/${config[$key]}/g $ROOT_DIR/$project_name/nginx/conf.d/default.conf done# 将安装源 ssl 目录里的证书文件分发到对应的挂载目录下 cp -f ssl/*.* $ROOT_DIR/$project_name/nginx/ssl/. cp -f ssl/*.* $ROOT_DIR/$project_name/nginx/ssl/.#安装 docker docker-compose up -d#向测试站点的 php 容器里安装 PDO 扩展 echo 往 $project_name_$test_site_name 的php容器里安装 PDO扩展... docker cp common/install_pdo_in_container.sh ${project_name}_${test_site_name}_php:/var/$project_name/$test_site_name/. # 将 pdo 安装脚本文件由属主机拷入 php 容器里的/var/homework_test 目录下 docker exec -i ${project_name}_${test_site_name}_php bash /var/$project_name/$test_site_name/install_pdo_in_container.sh # 在 php 容器里运行 pdo 脚本安装 mysq 的 pdo 驱动 docker restart ${project_name}_${test_site_name}_php # 重启 php 容器里的 php 服务 echo 往php容器里安装 PDO扩展结束#向生产站点的 php 容器里安装 PDO 扩展 echo 往 $project_name_$prod_site_name 的php容器里安装 PDO扩展... docker cp common/install_pdo_in_container.sh ${project_name}_${prod_site_name}_php:/var/$project_name/$prod_site_name/. # 将 pdo 安装脚本文件由属主机拷入 php 容器里的/var/homework_test 目录下 docker exec -i ${project_name}_${prod_site_name}_php bash /var/$project_name/$prod_site_name/install_pdo_in_container.sh # 在 php 容器里运行 pdo 脚本安装 mysq 的 pdo 驱动 docker restart ${project_name}_${prod_site_name}_php # 重启 php 容器里的 php 服务 echo 往php容器里安装 PDO扩展结束 2.3.5、uninstall.sh #!/bin/bashexport ROOT_DIR/dockers # 项目发布目录的上一级目录. config.sh # 引入配置文件脚本 . common/create_yml.sh # 引入创建 docker-compose.yml 文件的脚本# 卸载 docker docker-compose down 2.3.6、common/create_yml.sh #!/bin/bash# 从安装模版目录里拷贝 docker 编排文件模板到挂载目录下 cp -f tpl/docker-compose.yml.tpl docker-compose.yml# 根据 docker 编排模版自动生成 docker 编排文件 for key in ${!config[]} doecho $keysed -i s/{{$key}}/${config[$key]}/g docker-compose.yml done 2.3.7、common/install_pdo_in_container.sh #!/bin/bash# 以下操作是进入 php 的 docker 容器里执行的 cd /usr/local/bin ./docker-php-ext-install pdo_mysql ./docker-php-ext-install mysql exit 2.3.8、其他几个测试网页模板文件 1tpl/index_1.html.tpl {{dns_test}}/index.html2tpl/index_1.php.tpl ?phpecho {{dns_test}}/index.php; ?3tpl/testdb_1.php.tpl ?php $PDO new PDO(mysql:host{{project_name}}_{{test_site_name}}_mariadb;dbnamemysql, root, {{mysql_root_password_test}}); var_dump($PDO); $stmt$PDO-prepare(select count(*) as userCount from user); $stmt-execute(); echo br; echo rowCount.$stmt-rowCount().br; while ($row$stmt-fetch(PDO::FETCH_ASSOC)) {echo userCount.$row[userCount].br; } ?4tpl/index_2.html.tpl {{dns_prod}}/index.html5tpl/index_2.php.tpl ?phpecho {{dns_prod}}/index.php; ?6tpl/testdb_2.php.tpl ?php $PDO new PDO(mysql:host{{project_name}}_{{prod_site_name}}_mariadb;dbnamemysql, root, {{mysql_root_password_prod}}); var_dump($PDO); $stmt$PDO-prepare(select count(*) as userCount from user); $stmt-execute(); echo br; echo rowCount.$stmt-rowCount().br; while ($row$stmt-fetch(PDO::FETCH_ASSOC)) {echo userCount.$row[userCount].br; } ?2.4、运行安装脚本 为了便于说明我按照我的安装目录结构来进行安装您可以根据自己的喜好来选择。安装目录为/dockers/demo_install该目录下包含的文件如下图 图4 安装目录下的文件结构 在 shell 里运行命令检查 dockers 安装情况 [rootVM_16_17_centos demo_install]# docker ps发现我的电脑里目前没有 docker 容器在运行 图5 docker列表 运行 install.sh [rootVM_16_17_centos demo_install]# ./install.sh如果不出意外会自动完成安装安装结果如下图 图6 安装完成后 docker 列表 2.5、浏览器访问测试 利用浏览器访问网址 http://myapitest.xxxxxx.com/index.htmlhttp://myapitest.xxxxxx.com/index.phphttp://myapitest.xxxxxx.com/testdb.phphttp://myapi.xxxxxx.com/index.htmlhttp://myapi.xxxxxx.com/index.phphttp://myapi.xxxxxx.com/testdb.phphttps://myapitest.xxxxxx.com/index.htmlhttps://myapitest.xxxxxx.com/index.phphttps://myapitest.xxxxxx.com/testdb.phphttps://myapi.xxxxxx.com/index.htmlhttps://myapi.xxxxxx.com/index.phphttps://myapi.xxxxxx.com/testdb.php 经测试都能成功访问选其中有代表性的访问实例截图如下 图7 浏览器访问站点实例 同理可以测试卸载 [rootVM_16_17_centos demo_install]# ./uninstall.sh以上脚本安装、卸载测试成功。请参考 至此已经完全实现了Docker在一台服务器上搭建支持80、443端口访问的测试、生产双站点系统。下面的工作就是利用git给两个网站进行代码开发和部署工作了 本实例代码已上传到 github 敬请下载试用、参考。地址为 https://github.com/tanbushi/DNMP 上一篇Docker搭建LNMP环境实战09安装mariadb 下一篇完结

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

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

相关文章

哪家做的濮阳网站建设重庆建站公司哪个好

编写一个程序,计算|X-Y|的值,并将结果存入RESULT单元中,其中X和Y都为带符号字数据。 P154 例4.11 汇编思路:DATA段定义X、Y、RESULE分别用于存放随机数、存放随机数、存放最后计算结果。STACK段定义100DB大小的堆栈段运算存储空间。将AX获取…

关于网站得精神文明建设网站建设与管理代码题

文本三剑客(sed) 使用场景基本语法实例命令列表 使用场景 sed提供了一种面交互的方式修改文件内容。 它是一行一行处理,可以通过正则匹配要修改的部分 基本语法 基本语法 sed [-opt] command files(多个文件 空格隔开) sed 使用正则 sed -…

网站打开慢怎么回事啊装修网站建设策划方案

生成报表页面: 右下图是报表页面,如果图纸有改动,点左图更新 举例,下图有急停按钮符号,要把急停按钮显示在清单里.第一步,已经有了符号(下左图急停),符号有设备标识符.第二步就是简易自建部件,第三部是在符号属性里关联自建部件 上图是右键点击同类型的部件,然后新建.下图新建部…

seo建站优化浏览器下载安装2023版本

PingWest品玩5月14日讯,在GTC 2020线上发布会上,英伟达CEO黄仁勋正式推出了安培(Ampere)架构GPU。据其表示,这块芯片采用7nm工艺,540亿晶体管,20倍AI算力,实现5大技术创新。黄仁勋表示,“这是英…

网站规划与建设是什么全国信息企业查询系统官网

目录 写在前面 1.我们的着装 2.我们善于学习 3.我们善于解决问题 4.我们很单纯 5.我们喜欢聆听 6.我们很有创造力 7.我们善于分享 8.我们很细心 9.和我们约会的好处 10.活捉程序员的技巧 11.值此1024程序员节,我们的愿望 12.附上程序员装逼指南 写在最…

京东代运营沈阳网站seo公司

[toc]目录一、常规滤波低通高通带通带阻二、非局部均值滤波三、维纳滤波四、卡尔曼滤波前言所谓滤波,其实就是从混合在一起的诸多信号中提取出所需要的信号。信号的分类:确定型信号,可以表示为确定的时间函数,可确定其在任何时刻的…

网站建设仟金手指六六14网站被备案能建设

1 K8S 简介 K8S是Kubernetes的简称,是一个开源的容器编排平台,用于自动部署、扩展和管理“容器化(containerized)应用程序”的系统。它可以跨多个主机聚集在一起,控制和自动化应用的部署与更新。 K8S 架构 Kubernete…

网站设计主要内容seo视频

接前一篇文章:中移(苏州)软件技术有限公司面试问题与解答(4)—— virtio所创建的设备1 在上一篇文章中,对于面试所提出的问题“virtio会创建哪些设备?”,有了初步答案,即…

做特色菜的网站徐州市住房和城乡建设局网站

概述 前台服务是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。前台服务必须为状态栏提供通知,将其放在运行中的标题下方。这意味着除非将服务停止或从前台移除,否则不能清除该通知。 在 Android 8.0&…

南海区住房和城乡建设部网站农业网站建设方案 ppt模板下载

中文大模型正在后来居上,也必须后来居上。 数科星球原创 作者丨苑晶 编辑丨大兔 从GPT3.5彻底出圈后,大模型的影响力开始蜚声国际。一段时间内,国内科技公司可谓被ChatGPT按在地上打,毫无还手之力。 彼时,很多企业…

淘宝网站开发多少金额php黄页系统

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼编写程序,登录幼儿园200个小朋友的数据:姓名、性别、年龄、身高、体重、出生日期,分别按年龄排序后输出。要求:(1)登录数据用函数input()(2)按身高排序用函数sort()(3)输出排序结果用…

购物网站黑白如何创业开网店

影片剪辑脚本和按钮的脚本类似,它们都使用事件处理函数,与按钮的on关键字不同,影片剪辑使用 onClipEvent关键字。当某种影片剪辑事件发生时,就会触发相应的事件处理函数。影片剪辑最重要的两种事件是load和enterFrame,…

数字媒体应用 网站开发东莞网站建设十大品牌

JavaScript 只有一种数字类型。可以使用也可以不使用小数点来书写数字。 var pi3.14; // 使用小数点 var x34; // 不使用小数点 极大或极小的数字可通过科学(指数)计数法来写: var y123e5; // 12300000 var z123e-5; // 0.0…

静态网站素材威海建设局网站首页

超级无敌棒棒糖🖌 🌭功能介绍🍕 Demo准备一个数据类准备一个Excel导入Excel行数据转换导出到Excel 🍱新增映射字段类型 🌭功能介绍 💡.Excel 行数据转对象:把导入的Excel 每一行数据进行自动映…

互联网客户做网站wordpress首页显示vip标识

多主机网关仅能工作在TCP服务器模式下,可同时处理多台Modbus TCP的主机请求,串口服务器在一个主机请求未完成时又收到了其他的主机请求此时串口服务器会在RS485总线上进行仲裁输出(通俗地讲就是对后来的指令进行阻塞)。 仿真软件演…

山东网站建设运营煤棚球形网架公司

大家千万不要着急,不要慌张,即使自己并不了解多少汇编代码的知识,即使自己计基课上的基础知识学的并不扎实,也都不要紧,因为这次计基实验考察的重点并不是基础知识,而是对gdb工具的掌握,以及心细…

腾讯云网站备案不能用阿里云品牌推广案例

引言 链表(Linked List)是数据结构中最基础且最重要的线性存储结构之一。与数组的连续内存分配不同,链表通过指针将分散的内存块串联起来,具有动态扩展和高效插入/删除的特性。本文将以C/C++语言为例,从底层原理到代码实现,手把手教你构建完整的链表结构,并深入探讨其应…

广东制作公司网站怎么做外贸网站

Git简介Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方…

个人免费域名空间建站dns设置 看国外网站

一、母版页简介 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。 母版之所以称为母版,就是将大部分网页上固定内容,比如导航栏,版…

爱电影网站做律师网站公司

(int)faultsGroup是0或1但我总是得到这个错误:列’FaultGroup’不能为null有人告诉我为什么吗?语法看起来不错.MySqlCommand cmdAdd new MySqlCommand("INSERT INTO Faults (" " FaultGroup, Text, Date, IP" ") VALUES (&quo…