热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AcWing《Linux基础课》第8讲租云服务器及配环境

8租云服务器及配环境8.1介绍云平台的作用存放docker容器,让计算在云端进行获得公网IP地址,让别人能访问到我们的服务任选一个云平台,按如下方式配置1核2GB(后期可以动态扩容




8 租云服务器及配环境


8.1 介绍

云平台的作用


  • 存放docker容器,让计算在云端进行
  • 获得公网IP地址,让别人能访问到我们的服务

任选一个云平台,按如下方式配置


  • 1核 2GB(后期可以动态扩容,前期配置低一些没关系)
  • 网络带宽采用按量付费,最大带宽拉满即可(费用取决于用量,与最大带宽无关)
  • 系统版本:Ubuntu 20.04 LTS(推荐用统一版本,避免后期出现配置不兼容的问题)

租到的服务器


  • 毛坯
    • 框架(DJango)
    • Thrift
  • 服务(MySQL等)
    • socket方式:IP:Port
    • http方式

不建议直接在毛坯服务器搭房子,而是先搭建docker,方便后期迁移到其它平台,而且用于标准化,提高开发效率。因此主要开发工作在毛坯服务器中的docker里。


8.2 基本配置

创建用户

用ssh登录后,创建用户acs

adduser acs

分配sudo权限

usermod -aG sudo acs # 给acs用户sudo权限

配置免密登录方式

在本地配置~/.ssh/config

把本地~/.ssh/id_rsa.pub复制到服务器的~/.ssh/authorzied_keys

配置新服务器的工作环境

把Ac Terminal的bashvimrctmux配置复制到服务器上

scp .bashrc .vimrc .tmux.conf server_name:

安装tmux

sudo apt-get update
sudo apt-get install tmux

打开tmux,在tmux安装docker,这样可防止终端异常关闭后,还能恢复到之前的进度。


8.3 docker安装与使用


8.3.1 安装

安装可参考官网教程

(1)配置仓库

sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

(2)安装docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装后可通过docker --version查看版本,如果出现则安装成功。

在使用前,可以给docker命令加上sudo权限,避免每次使用docker都要加上sudo$USER表示当前用户。执行下面命令后,会自动创建docker组,并让当前用户加入。

sudo usermod -aG docker $USER

8.3.2 使用教程

(1)基本原理

云平台有多种:轻量级云平台、ECS等。为了解决迁移困难,可把服务器配置到docker里,这样就能通过docker更换到不同的平台,减少迁移代价。

一个docker可以有多个镜像image,一个image可以有多个容器container。但这只是逻辑结构,而不是存储结构,docker不会真的一个个独立存储。镜像和容器的关系可以看做是印章和图案的关系。

在实际应用时,一个container是一个服务器。需要迁移时,在旧的云平台把container封装成image,然后在新的云平台读取image即可。

(2)镜像(Images)


  • 拉取镜像:docker pull ubuntu:20.04
  • 列举本地镜像:docker images
  • 删除镜像:docker image rm ubuntu:20.04docker rmi ubuntu:20.04
  • 创建某个container镜像:docker [container] commit CONTAINER IMAGE_NAME:TAG
  • 导出镜像ubuntu:20.04到文件ubuntu_20_04.tardocker save -o ubuntu_20_04.tar ubuntu:20.04
  • 从文件ubuntu_20_04.tar加载镜像ubuntu:20.04docker load -i ubuntu_20_04.tar

(3)容器(container)


  • 通过镜像创建容器:docker [container] create -it ubuntu:20.04
  • 列举本地容器:docker ps -a
  • 启动容器:docker [container] start CONTAINER
  • 停止容器:docker [container] stop CONTAINER
  • 重启容器:docker [container] restart CONTAINER
  • 通过镜像创建容器并启动:docker [container] run -itd ubuntu:20.04
  • 进入容器:docker [container] attach CONTAINER
    • 挂起容器:先按Ctrl-p,再按Ctrl-q
  • 在容器中执行命令:docker [container] exec CONTAINER COMMAND
  • 删除容器:docker [container] rm CONTAINER
  • 删除所有已停止的容器:docker container prune
  • 将容器CONTAINER导出到文件xxx.tardocker export -o xxx.tar CONTAINER
  • 将本地文件xxx.tar导入成镜像image_name:tagdocker import xxx.tar image_name:tag
  • 查看容器内进程:docker top CONTAINER
  • 查看所有容器状态:docker stats
  • 复制(类似scp):docker cp xxx CONTAINER:xxx
  • 重命名:docker rename CONTAINER1 CONTAINER2
  • 修改内存限制:docker update CONTARINER --memory 500MB

docker export./importdocker save/load的区别


  • export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
  • save/load会保存完整记录,体积更大

8.3.3 SSH登录docker

进入AC Terminal,然后

scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server_name: # 将镜像上传到自己的云端服务器
ssh server_name # 登录自己的云端服务器
docker load -i docker_lesson_1_0.tar # 将镜像加载到本地
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 将容器内的22端口(容器内的SSH端口)映射到本地的20000端口,然后创建并运行docker_lesson:1.0镜像
docker attach my_docker_server # 进入创建的docker容器
passwd # 设置root密码

注意,要先去云平台控制修改安全组配置,开放端口20000,IP填0.0.0.0/0表示所有都允许,协议选TCP,否则绑定端口的命令无效。

然后以云平台服务器的IP作为docker的IP,20000为端口号,就能以SSH方式访问docker

设置完就可使用SSH登录到docker内的服务器,可按照SSH一节设置免密登录等优化SSH登录方式,注意ssh需要加上参数-p 20000

如果apt-get下载软件较慢,可修改软件源到清华大学开源软件镜像站。

初次使用容器,用命令apt-get install sudo先安装sudo


8.4 作业核心代码

task1

(1)首先在腾讯云租一台云服务器。获取到公网IP后,在云服务器登录root账户,用passwd设置root账户密码,然后在目录~/.ssh下创建文件authorized_keys,把AC Terminal的公钥复制到该文件中。

(2)在AC Terminal修改~/.ssh/config文件

Host acs
HostName xxx.xxx.xxx.xxx
User root

(3)保存服务器别名

在AC Terminal执行

cd ~/homework/lesson_8/homework_0
echo "acs" > server_name.txt

task2

在AC Terminal用ssh acs登录到云服务器,执行如下命令

sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER

task3

(1)复制镜像

scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar acs: # 将镜像上传到自己租的云端服务器
ssh acs # 登录自己的云端服务器

(2)加载镜像

docker load -i docker_lesson_1_0.tar # 将镜像加载到本地

(3)打开端口

在云服务器控制台开启端口20000,IP设置为0.0.0.0/0,协议选TCP

(4)用镜像创建容器并绑定端口

docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 创建并运行docker_lesson:1.0镜像

(5)打开容器

docker attach my_docker_server # 进入创建的docker容器

(6)创建新用户

passwd # 设置root密码
adduser acs # 创建用户acs
su acs # 切换到acs用户

(7)添加SSH公钥

把AC Terminal的SSH公钥拷贝至服务器acs用户的~/.ssh/authorized_keys

cd ~
mkdir .ssh
vim .ssh/authorized_keys

(8)配置docker容器别名

在AC Terminal修改~/.ssh/config,加入如下配置信息,其中IP是云平台的服务器公网IP。

Host acs_docker
HostName xxx.xxx.xxx.xxx
User acs

(9)保存docker容器别名

在AC Terminal执行

cd ~/homework/lesson_8/homework_2
echo "acs_docker" > server_name.txt


推荐阅读
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一:跨域问题1、同源策略(浏览器的安全策略)    只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了  2、c ... [详细]
  • linux服务器时间同步失败解决方法
    linux服务器时间同步失败解决方法1、为什么会时间不同步:①计算机的时间是根据电脑晶振以固定频率震荡而产生的,由于晶振的不同或者老化,会 ... [详细]
author-avatar
将登太行的2602939913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有