云服务器项目部署

项目部署的相关概念

关于部署流程,主要包含以下两个方面:部署方案、部署环境:

部署方案

  1. 分析项目的产品需求文档,定好部署方案的方向
  2. 分析项目开发文档,按照功能边界,设计部署的结点
  3. 分析项目功能软件,合理的取舍,选符合当前业务场景的
  4. 梳理项目部署涉及到的部署软件实现方案,根据上面第2点确定的结点,确定初版部署方案
  5. 根据项目实际情况,调整优化并确定项目部署方案

部署环境

  • 个人开发环境:

工作人员:自己
工作平台:个人笔记本、公司配的电脑
平台特点:环境是自己配的,团队中不同的个人开发环境可以不一样
工作内容:项目的子模块,子功能
完成标准:完成领导安排的内容[项目的功能子模块开发]

  • 公司开发环境:

工作人员:开发团队
工作平台:公司内部服务器
平台特点:服务器环境和线上的服务器环境完全一致
工作内容:项目子模块间的功能联调
完成标准:项目阶段开发、调试完成

  • 项目测试环境:

工作人员:测试团队
工作平台:公司内部服务器
平台特点:服务器环境和线上的服务器环境完全一致
工作内容:项目功能/非功能/探索等测试
完成标准:项目阶段功能正常运行

  • 项目预发布环境:

工作人员:运维团队
工作平台:公司线上服务器组中的一台
平台特点:服务器环境和线上的服务器环境完全一致
工作内容:特殊功能测试(比如支付)、数据压力测试、其他安全测试等
完成标准:项目阶段功能正常运行,最后一道防线

  • 项目生产环境:

工作人员:运维团队
工作平台:公司线上服务器组
平台特点:标准线上的服务器环境
工作内容:代码部署和维护、记录内部架构文档
完成标准:项目正常运行

前端项目部署

之前我们的开发并没有把项目上传到码云上面,所以我们接下来我们先创建一个码云仓库。

git remote add origin https://gitee.com/mooluo/luffyproject_pc.git
git add .
git commit -m "项目完成"
git push orgin master

自动化程序会将打包的文件自动生成到项目的dist文件夹中。

npm run build
注意,编译的文件,必须要通过http协议才能访问到,直接点击index.html,是无法访问的。

因为根据我们上面的部署方案,我们需要安装nginx来运行这个项目。

后端项目部署

使用docker进行容器化管理进行持续集成部署

更新ubuntu的apt源索引

sudo apt-get update

安装包允许apt通过HTTPS使用仓库

sudo dpkg --configure -a
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

添加Docker官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置Docker稳定版仓库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
添加仓库后,更新apt源索引

sudo apt-get update
安装最新版Docker CE(社区版)

```sudo apt-get install docker-ce````
检查Docker CE是否安装正确

sudo docker run hello-world

  1. 启动与停止
    安装完成Docker后,默认已经启动了docker服务,如需手动控制docker服务的启停,可执行如下命令
  • 启动docker
    ```sudo service docker start````
  • 停止docker
    sudo service docker stop
  • 重启docker
    sudo service docker restart
  • 列出镜像
    docker image ls
  • 拉取镜像
    docker image pull library/hello-world
  • 删除镜像
    docker image rm 镜像id/镜像ID
  • 创建容器
    docker run [选项参数] 镜像名 [命令]
  • 停止一个已经在运行的容器
    ```docker container stop 容器名或容器id````
  • 启动一个已经停止的容器
    docker container start 容器名或容器id
  • kill掉一个已经在运行的容器
    docker container kill 容器名或容器id
  • 删除容器
    docker container rm 容器名或容器id

把前端项目通过nginx容器来运行

  • 在docker中下载nginx镜像
    docker image pull nginx
  • 使用git把码云上面的编译过的vue项目克隆到服务器/home
  • 阿里云服务器中,我们从码云克隆下来的前端项目: /home/luffyproject_pc/dist
    git clone 项目git地址
  • 创建nginx容器,并以80端口对外提供服务
    docker run -itd -p 80:80 -v /home/luffyproject_pc/dist:/usr/share/nginx/html nginx
  • 启动nginx容器中的nginx【容器ID通过docker container ls --all可以查看到】
    docker container exec -itd [容器ID] nginx

    “”"
    /etc/nginx # nginx容器中nginx的配置目录
    /usr/share/nginx/html # nginx容器中www目录
    “”"

Nginx+uwsgi
Nginx是一款基于异步框架的轻量级/高性能的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·赛索耶夫)所开发,最初供俄国大型网站Rambler.ru及搜寻引擎Rambler使用。

后端项目部署到docker容器中
在项目中复制开发配置文件dev.py 到生产配置prod.py

修改配置中的地址相关即可。

"""
Django settings for luffy project.
​
Generated by 'django-admin startproject' using Django 2.2.1.
​
For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/
​
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""import os
​
 #Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

#新增一个系统导包路径
import sys
sys.path.insert(0,os.path.join(BASE_DIR,"apps"))

#Quick-start development settings - unsuitable for production
#See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/#SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '!!t0^(#x0l@!pp6@^!0u5lyq+4ctyui)sxmsc4*r7644@(4uh@'#SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
​
ALLOWED_HOSTS = [
    'luffy.pythonyuan.com',
    'api.pythonyuan.com',
]#CORS组的配置信息
CORS_ORIGIN_WHITELIST = (
    'luffy.pythonyuan.com:80',
)
#允许ajax跨域请求时携带cookie
CORS_ALLOW_CREDENTIALS = True#Application definition
​
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',# cors跨域组件
    'corsheaders',
    'rest_framework',
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值