阿里云上部署开源PaaS平台Cloud Foundry实战

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
公网NAT网关,每月750个小时 15CU
简介: 开源PaaS平台Cloud Foundry在阿里云上部署,最佳实战

Cloud Foundry介绍

Cloud Foundry是业界第一个开源的PaaS,号称工业界唯一的云应用平台。
本文重点讲述Cloud Foundry在阿里云上的部署方案,对于Cloud Foundry介绍的部分简单略过。

Cloud Foundry解决了什么问题?

关键词:PaaS、开源
Cloud Foundry是一种平台即服务(PaaS),兼容多种基础设施云,提供多种开发框架和应用服务。目前开源支持部署Cloud Foundry的基础设施云包括AWS、Azure、OpenStack等等,CF在开发框架上支持Java、.NET、Ruby等等,有很强的灵活性。
IaaS帮助开发者和客户解决了基础设施的问题,Cloud Foundry作为PaaS,在云上让开发者的视角更高,开发者只需要关注应用和数据。
image

Cloud Foundry组件(v2版本)

Cloud Foundry是由相对独立的多个模块构成的分布式系统,每个模块单独存在和运行,各模块之间通过消息机制进行通信。
image

Cloud Foundry目前最新的架构为v3版本,各个组件的功能,官网有详细的介绍,这边不再赘述。
参考:http://docs.cloudfoundry.org/concepts/architecture/

阿里云上部署Cloud Foundry实战

环境说明:

(本文使用软件版本和环境的说明,涉及到的概念下文会详细解释)
阿里云region:华东1
ruby 版本:2.3.0
bosh-init 版本:0.0.96
Bosh CLI 版本:1.3262.4.0
CF CLI 版本:6.21.0

部署流程

在阿里云上部署Cloud Foundry,部署流程分为三大部分,分别为:

  1. 开通阿里云环境资源:包括准备阿里云账号,开通相关云产品资源等等
  2. 部署Bosh:安装bosh-init,使用bosh-init部署Bosh
  3. 部署Cloud Foundry:使用Bosh部署Cloud Foundry

本文后续内容会根据三步部署流程详细讲述。

一、开通阿里云环境资源

Cloud Foundry需要部署在VPC环境下,需要开通VPC资源,并创建虚拟交换机,规划好部署Cloud Foundry的内网网段。
同时,也需要创建一对Access Key ID和Access Key Secret,也可以使用现有的Access Key ID和Access Key Secret对。

创建专有网络VPC

网段没有限制,笔者选择了10.0.0./8网段
image

创建虚拟交换机

可用区和网段没有限制,方便起见,笔者选择了华东1可用区E,网段为10.0.0.0/25
image

创建Access Key ID和Access Key Secret

image

二、部署Bosh

Bosh介绍

Bosh是一个统一了平台即服务软件(如Cloud Foundry)的发布、部署和生命周期管理的自动化配置部署工具。简单的说,Bosh的作用之一就是部署Cloud Foundry,部署Cloud Foundry之前,首先要部署Bosh。
在讲怎么在阿里云上部署Bosh之前,首先需要了解Bosh中的几个基本概念。
Bosh官网参考:https://bosh.io/docs

CPI

CPI全称Cloud Platform Interface,是Bosh对外开放的一组标准化接口,在IaaS上部署Bosh,需要实现这组接口,Bosh用CPI对IaaS的资源进行管理,包括创建虚拟机,释放虚拟机,等等......
在阿里云上部署Bosh,需要用阿里云OpenAPI实现CPI。
CPI参考:https://bosh.io/docs/cpi-api-v1.html
CPI API v1完整接口列表:
image

bosh-init

bosh-init是Bosh官网提供的一个开源工具,它的作用就是用来部署Bosh。
bosh-init参考:https://bosh.io/docs/using-bosh-init.html

stemcell

stemcell是虚拟机镜像,预装了部署过程中需要的组件(其中最重要的组件是Bosh Agent),官方的描述是:A stemcell is a versioned Operating System image wrapped with IaaS specific packaging. Bosh用CPI创建的虚拟机,用stemcell镜像启动。
stemcell参考:https://bosh.io/docs/stemcell.html

release

release是Bosh中一个安装部署包的概念,包含了所有安装分布式系统需要的源代码、配置文件、脚本文件等等,官网描述为:A release is a versioned collection of configuration properties, configuration templates, start up scripts, source code, binary artifacts, and anything else required to build and deploy software in a reproducible way.
例如,安装Bosh,我需要一个Bosh-release;用Bosh安装Cloud Foundry,我需要一个cf-release。
所有release都有版本迭代,都可以在Bosh官网找到。
release参考:https://bosh.io/docs/release.html

Deployment

一个Deployment是一组VM的集合,由指定的stemcell镜像启动,用于部署对应release的系统。官方描述为:A deployment is a collection of VMs, built from a stemcell, that has been populated with specific releases and disks that keep persistent data. These resources are created based on a manifest file in the IaaS and managed by the BOSH Director, a centralized management server.
在Bosh的概念里,一个Deployment对应一个release,Deployment的具体配置,写在Deployment manifest里,在部署过程中提供。
Deployment参考:https://bosh.io/docs/deployment.html

阿里云上部署Bosh

1. 创建ECS

通过阿里云控制台创建一个ECS(包年包月、按量均可),用于安装bosh-init。方便起见,下文以bosh-init指代这台ECS。

推荐配置:
规格:2核4G及以上
镜像:Ubuntu 14.04 64位
系统盘:40GB以上,高效云盘
网络类型:VPC实例,选择在上一步创建好的VPC和虚拟交换机,公网IP可以选择不分配。
image

2. 给bosh-init配置公网IP

因为bosh-init是VPC实例,需要给bosh-init绑定弹性公网IP,让bosh-init可以通过公网访问。

按需购买弹性公网IP,并给bosh-init绑定弹性公网IP
image

3. 安装bosh-init

参考文档:http://bosh.io/docs/install-bosh-init.html

  1. SSH登陆到bosh-init这台ECS
  2. 下载bosh-init,下载地址见:http://bosh.io/docs/install-bosh-init.html
  3. 执行权限
    chmod +x ~/Downloads/bosh-init-*
  4. 移动到/usr/local/bin
    sudo mv ~/Downloads/bosh-init-* /usr/local/bin/bosh-init
  5. 验证安装成功
    bosh-init -v
  6. 安装对应环境,笔者使用的是Ubuntu的机器
    sudo apt-get install -y build-essential zlibc zlib1g-dev ruby ruby-dev openssl libxslt-dev libxml2-dev libssl-dev libreadline6 libreadline6-dev libyaml-dev libsqlite3-dev sqlite3
  7. 确保已经安装Ruby 2+环境
    image

4. 下载bosh-release

bosh-release是开源的,可以从Bosh官网下载:
https://bosh.io/releases/github.com/cloudfoundry/bosh?all=1

笔者使用的是255.3版本的bosh-release
image

5. 下载cpi-release

CPI近期会开源,请关注:
https://github.com/alibaba/opstools

6. 配置manifest

根据以下模板,新建一个manifest文件bosh.yml,在模板中填充阿里云资源相关的内容。

---
name: bosh

releases:
- name: bosh
  url: file:///root/downloads/bosh-255.3.tgz
- name: bosh-aliyun-cpi
  url: file:///root/downloads/bosh-aliyun-cpi.tgz

resource_pools:
- name: vms
  network: private
  cloud_properties:
    instance_type: ecs.n4.large   # <--- 实例规格

networks:
- name: private
  type: manual
  subnets:
  - range: 10.0.0.0/8
    gateway: 10.0.0.1
    cloud_properties: {
      SecurityGroupId: SECURITY_GROUP_ID,    # <--- 安全组ID
      VSwitchId: VSWITCH-ID    # <--- 虚拟交换机ID
    }
- name: public
  type: vip

jobs:
- name: bosh
  instances: 1

  templates:
  - {name: nats, release: bosh}
  - {name: redis, release: bosh}
  - {name: postgres, release: bosh}
  - {name: blobstore, release: bosh}
  - {name: director, release: bosh}
  - {name: health_monitor, release: bosh}
  - {name: registry, release: bosh}
  - {name: aliyun_cpi, release: bosh-aliyun-cpi}

  resource_pool: vms

  networks:
  - name: private
    static_ips: [10.0.0.2]    # <--- ECS内网IP
    default: [dns, gateway]
  - name: public
    static_ips: [STATIC_IP]   # <--- 弹性公网IP

  properties:
    nats: &nats
      address: 127.0.0.1
      user: nats
      password: nats-password

    redis:
      listen_address: 127.0.0.1
      address: 127.0.0.1
      password: redis-password

    postgres: &db
      listen_address: 127.0.0.1
      host: 127.0.0.1
      user: postgres
      password: postgres-password
      database: bosh
      adapter: postgres

    registry: &registry
      address: 127.0.0.1
      host: 127.0.0.1
      db: *db
      http: {user: admin, password: admin, port: 25777}
      username: admin
      password: admin
      port: 25777

    blobstore: &blobstore
      address: 127.0.0.1
      port: 25250
      provider: dav
      director: {user: director, password: director-password}
      agent: {user: agent, password: agent-password}


    director:
      address: 127.0.0.1
      name: my-bosh
      db: *db
      cpi_job: aliyun_cpi
      max_threads: 10
      user_management:
        provider: local
        local:
          users:
          - {name: admin, password: admin}
          - {name: hm, password: hm-password}

    hm:
      director_account: {user: hm, password: hm-password}
      resurrector_enabled: true

    aliyun: &aliyun
      access_key_id: ACCESS_KEY_ID # <--- 阿里云 Access Key ID
      access_key: ACCESS_KEY # <--- 阿里云 Access Key Secret
      default_key_name: bosh
      default_security_groups: [bosh]
      region_id: cn-hangzhou  # <--- 阿里云 Region

    ntp: &ntp [0.pool.ntp.org, 1.pool.ntp.org]

cloud_provider:
  template: {name: aliyun_cpi, release: bosh-aliyun-cpi}

  mbus: "https://mbus:mbus-password@10.0.0.2:6868" # <--- ECS内网IP

  properties:
    aliyun: *aliyun
    agent:
      mbus: "nats://nats:nats-password@10.0.0.2:4222"  # <--- ECS内网IP
      blobstore:
        provider: "dav"
        options:
          endpoint: "http://10.0.0.2:25250"  # <--- ECS内网IP
          user: "agent"
          password: "agent-password"
    blobstore: {provider: local, path: /var/vcap/micro_bosh/data/cache}
    ntp: *ntp
    nats: *nats
    registry: *registry
    blobstore: *blobstore

7. 部署Bosh

执行部署命令:
bosh-init deploy bosh.yml

一个部署过程的示例:
image

8. 验证Bosh

我们用Bosh CLI验证Bosh是否部署成功。
Bosh CLI是Bosh官方提供的,用于和Bosh交互的命令行工具。在部署完成Bosh之后,用Bosh CLI和Bosh交互,执行相关命令,进行下一步Cloud Foundry的部署。

安装Bosh CLI

Bosh CLI可以安装在任意一台ECS上,或者本地主机上。
安装Bosh CLI:https://bosh.io/docs/bosh-cli.html

验证Bosh

执行Bosh CLI命令:
bosh target 10.0.0.2
笔者的Bosh CLI安装在同一个安全组的ECS上,因此可以和部署Bosh的ECS进行内网通讯,直接通过内网IP,target到Bosh。如果需要通过公网通讯,需要给部署Bosh的ECS绑定弹性公网IP,或者使用NAT网关产品,保证网络能通。

如图显示,成功连接到目标Bosh,验证Bosh成功。
bosh releasesbosh stemcells这两条命令,使用Bosh部署Cloud Foundry的时候会用到,我们下节细讲。
image

三、部署Cloud Foundry

基本概念

首先我们也需要了解用Bosh部署Cloud Foundry过程中的几个基本概念。

Bosh CLI

上一节讲到,我们需要使用已经部署成功的Bosh来部署Cloud Foundry,通过Bosh CLI和Bosh进行交互,执行相关部署命令。因此,使用Bosh部署Cloud Foundry之前,首先需要了解Bosh CLI命令的使用。

Bosh CLI几个基本命令:

1.连接到指定Bosh
bosh target [DIRECTOR_URL]

2.列出当前release仓库中所有的release
bosh releases

3.上传release到Bosh的release仓库,只有仓库里的release可以用于部署
bosh upload release [RELEASE_FILE]

4.列出当前stemcell仓库里的所有stemcell
bosh stemcells

5.上传stemcell到Bosh的stemcell仓库,只有仓库里的stemcell可以用于部署
bosh upload stemcell STEMCELL_PATH
bosh upload stemcell STEMCELL_URL

6.列出当前所有的Deployment
bosh deployments

7.列出当前Deployment的信息
bosh deployment

8.切换到指定manifest对应的Deployment
bosh deployment [MANIFEST_PATH]

9.执行部署当前Deployment
bosh deploy

Bosh CLI官网参考:http://bosh.io/docs/sysadmin-commands.html

CPI

在上一步部署Bosh中,已经部署好的Bosh中已经包含了CPI组件,因此在部署Cloud Foundry中不再需要CPI-release

stemcell

和上一步部署Bosh中类似。

cf-release

Cloud Foundry官网提供的压缩包,包含Cloud Foundry所有组件的源码。

Deployment manifest

Deployment的配置文件,主要描述了用哪个stemcell,用哪个cf-release,需要部署哪些CF组件,需要多少VM,VM规格信息,VM的IP信息,具体哪个VM部署哪个CF组件,等等......

部署Cloud Foundry流程

1. 下载cf-release

cf-release是开源的,可以从Bosh官网下载:
http://bosh.io/releases/github.com/cloudfoundry/cf-release?all=1

笔者部署用的是215版本的cf-release
image

2. 登陆到安装有Bosh CLI的机器

我们需要用Bosh CLI和Bosh进行交互,执行部署Cloud Foundry命令

3. 用Bosh CLI连接到部署好的Bosh

bosh target 10.0.0.2

4. 上传cf-release

上传下载完成的cf-release,执行以下Bosh CLI命令:
bosh upload release <release_file>
image

5. 配置manifest

根据以下模板,新建一个manifest文件cf.yml,在模板中填充阿里云资源相关的内容。

---
name: ali-cf
director_uuid: BOSH_DIRECTOR_UUID  # <--- Bosh Director UUID

releases:
- {name: cf, version: 215}

networks:
- name: private
  type: manual
  subnets:
  - range: 10.0.0.0/8
    gateway: 10.0.0.1
    #dns: [10.0.0.2]
    reserved: ["10.0.0.2"]
    static: ["10.0.0.3 - 10.0.0.100"]
    cloud_properties:
      SecurityGroupId: SECURITY_GROUP_ID  # <--- 安全组ID
      VSwitchId: VSWITCH_ID  # <--- 虚拟交换机ID

resource_pools:
- name: small_ecs
  network: private
  cloud_properties:
    instance_type: ecs.n1.tiny  # <--- 实例规格

compilation:
  workers: 1
  network: private
  reuse_compilation_vms: true
  cloud_properties:
    instance_type: ecs.n1.medium  # <--- 实例规格

update:
  canaries: 1
  max_in_flight: 1
  serial: false
  canary_watch_time: 30000-600000
  update_watch_time: 5000-600000

jobs:
- name: nats
  instances: 1
  resource_pool: small_ecs
  templates:
  - {name: nats, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.20]  # <--- ECS内网IP

- name: nfs
  instances: 1
  persistent_disk: 50
  resource_pool: small_ecs
  templates:
  - {name: debian_nfs_server, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.21]  # <--- ECS内网IP

- name: postgres
  instances: 1
  persistent_disk: 50
  resource_pool: small_ecs
  templates:
  - {name: postgres, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.22]  # <--- ECS内网IP
  update:
    serial: true

- name: cloud_controller
  instances: 2
  resource_pool: small_ecs
  templates:
  - {name: cloud_controller_ng, release: cf}
  - {name: cloud_controller_worker, release: cf}
  - {name: cloud_controller_clock, release: cf}
  - {name: nfs_mounter, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.23, 10.0.0.33]  # <--- ECS内网IP
  propertis:
    nfs_server:
      address: 10.0.0.21
      allow_from_entries: [10.0.0.0/24]

- name: hm9000
  instances: 1
  resource_pool: small_ecs
  templates:
  #  - {name: consul_agent, release: cf}
  - {name: hm9000, release: cf}
  #  - {name: metron_agent, release: cf}
  - {name: route_registrar, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.24]  # <--- ECS内网IP

- name: doppler_z1
  instances: 1
  resource_pool: small_ecs
  templates:
  - {name: doppler, release: cf}
  networks:
  - name: private
  properties:
    doppler: {zone: z1}
    doppler_endpoint:
      shared_secret: PASSWORD

- name: loggregator_trafficcontroller_z1
  instances: 1
  resource_pool: small_ecs
  templates:
  - {name: loggregator_trafficcontroller, release: cf}
  - {name: metron_agent, release: cf}
  - {name: route_registrar, release: cf}
  networks:
  - name: private
  properties:
    traffic_controller: {zone: z1}
    route_registrar:
      routes:
      - name: doppler
        registration_interval: 20s
        port: 8081
        uris:
        - "doppler.REPLACE_WITH_SYSTEM_DOMAIN"
      - name: loggregator
        registration_interval: 20s
        port: 8080
        uris:
          - "loggregator.REPLACE_WITH_SYSTEM_DOMAIN"

- name: uaa
  instances: 1
  resource_pool: small_ecs
  templates:
  - {name: uaa, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.25]  # <--- ECS内网IP
  properties:
    login:
      catalina_opts: -Xmx768m -XX:MaxPermSize=256m
    uaa:
      admin:
        client_secret: PASSWORD
      batch:
        password: PASSWORD
        username: batch_user
      cc:
        client_secret: PASSWORD
      scim:
        userids_enabled: false
        users:
        - cps@aliyun.com|Cps123456|scim.write,scim.read,openid,cloud_controller.admin
    uaadb:
      address: 10.0.0.22  # <--- postgres组件内网IP
      databases:
      - {name: uaadb, tag: uaa}
      db_scheme: postgresql
      port: 5524
      roles:
      - {name: uaaadmin, password: uaa-password, tag: admin}

- name: router
  instances: 1
  resource_pool: small_ecs
  templates:
  - {name: gorouter, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.27]  # <--- ECS内网IP
  properties:
    dropsonde: {enabled: true}

- name: dea_ng
  instances: 1
  resource_pool: small_ecs
  templates:
  - {name: dea_next, release: cf}
  networks:
  - name: private
    static_ips: [10.0.0.26]  # <--- ECS内网IP

properties:
  networks: {apps: private}
  app_domains: [DOMAIN]  # <--- domain
  domain: DOMAIN  # <--- domain
  system_domain: DOMAIN  # <--- domain
  system_domain_organization: default_organization

  cc:
    allow_app_ssh_access: false
    bulk_api_password: PASSWORD
    db_encryption_key: PASSWORD
    default_running_security_groups: [public_networks, dns]
    default_staging_security_groups: [public_networks, dns]
    install_buildpacks:
    - {name: java_buildpack, package: buildpack_java}
    - {name: ruby_buildpack, package: buildpack_ruby}
    - {name: nodejs_buildpack, package: buildpack_nodejs}
    - {name: go_buildpack, package: buildpack_go}
    - {name: python_buildpack, package: buildpack_python}
    - {name: php_buildpack, package: buildpack_php}
    - {name: staticfile_buildpack, package: buildpack_staticfile}
    - {name: binary_buildpack, package: buildpack_binary}
    internal_api_password: PASSWORD
    quota_definitions:
      default:
        memory_limit: 102400
        non_basic_services_allowed: true
        total_routes: 1000
        total_services: -1
    security_group_definitions:
    - name: private
      rules: []
    srv_api_uri: http://api.DOMAIN  # <--- domain
    staging_upload_password: PASSWORD
    staging_upload_user: staging_upload_user

  ccdb:
    address: 10.0.0.22  # <--- postgres组件内网IP
    databases:
    - {name: ccdb, tag: cc}
    db_scheme: postgres
    port: 5524
    roles:
    - {name: ccadmin, password: cc-password, tag: admin}

  databases:
    databases:
    - {name: ccdb, tag: cc, citext: true}
    - {name: uaadb, tag: uaa, citext: true}
    port: 5524
    roles:
    - {name: ccadmin, password: cc-password, tag: admin}
    - {name: uaaadmin, password: uaa-password, tag: admin}
  dea_next:
    advertise_interval_in_seconds: 5
    heartbeat_interval_in_seconds: 10
  
  etcd:
    machines: [10.0.0.24]  # <--- hm9000组件内网IP

  hm9000:
    url: http://hm9000.DOMAIN  # <--- domain
    
  nats:
    machines: [10.0.0.20]  # <--- nats组件内网IP
    password: nats-password
    port: 4222
    user: nats

  nfs_server:
    no_root_squash: true
    address: 10.0.0.21  # <--- nfs组件内网IP
    allow_from_entries: [10.0.0.0/24]
  
  uaa:
    no_ssl: true
    clients:
      gorouter:
        authorities: clients.read,clients.write,clients.admin,route.admin,route.advertise
        authorized-grant-types: client_credentials,refresh_token
        scope: openid,cloud_controller_service_permissions.read
        secret: PASSWORD
      cloud_controller_username_lookup:
        authorities: scim.userids
        authorized-grant-types: client_credentials
        secret: PASSWORD
      login:
        authorities: oauth.login,scim.write,clients.read,notifications.write,critical_notifications.write,emails.write,scim.useridsassword.write
        authorized-grant-types: authorization_code,client_credentials,refresh_token
        override: true
        redirect-uri: http://login.DOMAIN:8080/auth/cloudfoundry/callback  # <--- domain
        scope: openid,oauth.approvals,cloud_controller.read,cloud_controller.write
        secret: PASSWORD

    url: http://uaa.DOMAIN  # <--- domain

6. 新建cf.yml对应的Deployment

bosh deployment cf.yml

7. 执行部署命令

bosh deploy

8. 验证Cloud Foundry

部署完成之后,执行以下命令,查看Cloud Foundry部署详情:
bosh vms
image

至此,Cloud Foundry在阿里云上部署成功。

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
【AAAI 2024】再创佳绩!阿里云人工智能平台PAI多篇论文入选
阿里云人工智能平台PAI发表的多篇论文在AAAI-2024上正式亮相发表。AAAI是由国际人工智能促进协会主办的年会,是人工智能领域中历史最悠久、涵盖内容最广泛的国际顶级学术会议之一,也是中国计算机学会(CCF)推荐的A类国际学术会议。论文成果是阿里云与浙江大学、华南理工大学联合培养项目等共同研发,深耕以通用人工智能(AGI)为目标的一系列基础科学与工程问题,包括多模态理解模型、小样本类增量学习、深度表格学习和文档版面此次入选意味着阿里云人工智能平台PAI自研的深度学习算法达到了全球业界先进水平,获得了国际学者的认可,展现了阿里云人工智能技术创新在国际上的竞争力。
|
1月前
|
弹性计算 安全 数据安全/隐私保护
2024年阿里云幻兽帕鲁Palworld联机服务器搭建部署指南,图文教程
近年来,幻兽帕鲁以其独特的游戏魅力,迅速成为玩家们的热门选择。对于许多想要与好友一起体验这款游戏的玩家来说,如何搭建一个稳定的联机服务器成为了他们关注的焦点。今天,我将为大家带来一篇简单易懂的图文教程,让你轻松搭建幻兽帕鲁的联机服务器,与好友们畅快游戏。
|
1月前
|
弹性计算 运维 安全
2024年阿里云一键搭建部署幻兽帕鲁服务器解决方案
幻兽帕鲁火了,为了确保畅快体验游戏,构建高效、稳定的游戏服务器至关重要。幸运的是,阿里云为您提供了快速、简便的服务器搭建解决方案,即使您对技术知识了解有限,也能在短短一分钟内轻松完成《幻兽帕鲁》游戏的联机服务器搭建!
1449 4
|
1天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
1天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
3天前
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等
|
6天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat
|
10天前
|
存储 缓存 Java
阿里云OSS实战从入门到大神
说起阿里云OSS,那作用和功能都是非常强大的,它可以存放图片,音频,视频等资源文件,这些资源文件,你不必存放到服务器的硬盘里,这样既可以节省服务器硬盘空间,又可以降低服务器的读写压力,非常适合大并发的架构。
51 0
|
30天前
|
域名解析 弹性计算 数据可视化
如何使用云服务器ECS搭建网站?阿里云云服务器ECS部署网站新手教程
本文介绍了在阿里云ECS上自助建站的流程。建站方式包括自助建站、模板建站和定制建站,适合个人或小企业用户。建站步骤涉及准备服务器、配置安全组规则、部署网站、购买和备案域名以及解析域名。此外,文章还提及了产品计费和常见问题,提供相关服务如架构设计、迁云服务和基础设置服务等。
379 0
|
1月前
|
弹性计算 运维 安全
手把手教你入门部署幻兽帕鲁服务器:2024年阿里云搭建幻兽帕鲁Palworld联机服务器新手教程
手把手教你入门部署幻兽帕鲁服务器:2024年阿里云搭建幻兽帕鲁Palworld联机服务器新手教程。对于热衷《幻兽帕鲁》这款开放世界生存制作游戏的粉丝而言,拥有个人游戏服务器无疑是令人心动的。这款由Pocketpair开发的游戏,在2024年1月18日推出了其抢先体验版,它凭借广阔的游戏世界和丰富的玩法——如收集神奇的生物“帕鲁”,让它们参与战斗、建造、农耕和工业生产等——赢得了大量玩家的喜爱。现在,我将为大家详细指导如何在阿里云服务器上轻松一键部署《幻兽帕鲁》的联机服务器。
1083 2

热门文章

最新文章