GVKun编程网logo

从零开始搭建实验室 Ubuntu 服务器 | 深度学习工作站(ubuntu上搭建服务器)

1

在本文中,您将会了解到关于从零开始搭建实验室Ubuntu服务器|深度学习工作站的新资讯,同时我们还将为您解释ubuntu上搭建服务器的相关在本文中,我们将带你探索从零开始搭建实验室Ubuntu服务器|

在本文中,您将会了解到关于从零开始搭建实验室 Ubuntu 服务器 | 深度学习工作站的新资讯,同时我们还将为您解释ubuntu上搭建服务器的相关在本文中,我们将带你探索从零开始搭建实验室 Ubuntu 服务器 | 深度学习工作站的奥秘,分析ubuntu上搭建服务器的特点,并给出一些关于apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu、Django + Gunicorn + Nginx 部署 Ubuntu 服务器、dockerized mailcow 服务器 + 单独的 mariadb,python web 服务器、gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器的实用技巧。

本文目录一览:

从零开始搭建实验室 Ubuntu 服务器 | 深度学习工作站(ubuntu上搭建服务器)

从零开始搭建实验室 Ubuntu 服务器 | 深度学习工作站(ubuntu上搭建服务器)

一个标准的数据分析码农必须要配一台超薄笔记本和一台高性能服务器,笔记本是日常使用,各种小问题的解决,同时也是用于远程连接终端服务器;高性能服务器就是核心的处理数据的平台,CPU、内存、硬盘容量、GPU 等都必须要能满足数据分析和建模的要求。

笔记本强烈建议是 Mac 家的,无论是流畅度、美学、做工都绝对秒杀其他平台,唯一的缺点就是贵;服务器没有选择,只能用 Linux 了,ubuntu 也是强烈推荐。目前除了打游戏,好像实在是找不到需要用 Windows 的理由了,奈何马上要奔 3 了,游戏最多也就是偶尔消遣一下,真要像大学时代钻研一门游戏,那还真的是没有精力。

 

手头有台闲置的电脑,想搭建一台服务器,为今后的实验室搭建做准备(NGS 数据分析,深度学习建模)。

专业的事情还是交给专业的人来办,如果有大量的数据分析要求,建立一个 IT 部门是必须的,SEG 等任务调度系统也是必不可少的,这个时候舍不得花钱那就只能忍受龟速的分析进度了。

先明确自己的使用目的,再来考虑配置设备,否则只会造成资源的损失(金钱、计算资源、精力等)。建议先尽量用免费的,充分了解了之后再入手,Google Colab 和 Kaggle Kernel 先用起来。

 

参考: 

使用 AMD CPU,打造自己的深度学习服务器

深度学习工作站攒机指南

 

目的:

  • 远程数据分析站
  • 实验室网站
  • 数据库网站
  • FTP 网站

 

启动盘

制作 U 盘启动盘,安装 Ubuntu 系统

方法很多,装 win 就用老毛桃,简单快速。

装 Linux 就用 rufus,Ubuntu 官方推荐的安装器。推荐还是装 desktop 把,server 是纯命令行,起点有点高。

关于 u 盘分区的选择,频繁穿插于 mac 于 pc 之间者,大批量拷贝大型文件者,请用 exfat。

 

分区

菜鸟方案

“/” 与 swap 两个分区就可以应付绝大多数的应用

常用方案

分为 3 个区

1. 挂载点 /;主分区;安装系统和软件;大小为 30G;分区格式为 ext4;

2. 挂载点 /home;逻辑分区;相当于 “我的文档”;大小为硬盘剩下的;分区格式 ext4;

3. swap;逻辑分区;充当虚拟内存;大小等于内存大小(本人 2G);分区格式为 swap

4. /boot ;引导分区;逻辑分区; 大小为 200M ;分区格式为 ext4;

Ps:(本人安装的是 Ubuntu14.04 版本,100G 硬盘分区方案)

 

安装

Dell F12 F8,进入 U 盘启动,建议把第三方库全部勾选,以免后面出现驱动问题。

Ubuntu 基本环境配置

第一步,脱离鼠标:最全整理 | 121 个 Ubuntu 终端常用快捷键

初始化 Ubuntu root 密码

sudo passwd root

安装 git

apt-get update && apt-get install git-core

ssh 开放远程登录

dpkg -l | grep ssh
sudo apt-get install openssh-server

ubuntu 开启 SSH 服务远程登录

vim

env

gcc

常用 lib

 

流程工具管理

conda

现在必须装 python3 版本的了,python2 已经不再维护。 

python 环境配置

 

R 环境配置

 

 

番外篇

硬盘 U 盘挂载

sudo fdisk -l
mount -t vfat /dev/sdb1 /media 
umount /media/

 

网络访问

可以访问 Google 等,但是不能访问国内的网站,没有 eth0。

解决办法:下载 e1000e-3.5.1.tar.gz

解决 Ubuntu 网络连接问题

sudo make install
sudo modprobe e1000e 
sudo dhclient eth0
vi /etc/network/interface
sudo /etc/init.d/networking restart

make

rpm

chrome

cannot resolve hostname

no ethernet connection 

eth0,eth1,eth2…… 代表网卡一,网卡二,网卡三……lo 代表 127.0.0.1,即 localhost

linux eth0 网卡配置详解

macchanger 修改 MAC 地址

# macchanger
ifconfig eth0
ifconfig eth0 down
macchanger -r eth0
ifconfig eth0 up
macchanger --version    查看当前软件的版本
macchanger -s eth0    查看指定网卡的MAC地址
macchanger -e eth0    修改为同一个厂家的随机MAC地址
macchanger -a eth0    修改为不同厂家同一类型的随机MAC地址
macchanger -A eth0    修改为不同厂家不同类型的随机MAC地址
macchanger -r eth0    修改为完全随机的MAC地址
macchanger -l        显示知名厂家的MAC地址段
macchanger --list=Cisco    显示指定厂家关键词的MAC地址段
macchanger -m xx:xx:xx:xx:xx:xx    修改为指定的mac地址
macchanger -mac=xx:xx:xx:xx:xx:xx 功能同上

几个重要的文件:

/etc/network/interface
/etc/resolv.conf
/etc/resolvconf/resolv.conf.d/base

 

使用 ifconfig 后发现没有 ipv4 地址

auto eth0
         iface eth0 inet dhcp
    静态分配的配置方法:
         auto eth0
         iface eth0 inet static
         address 192.168.205.139
         netmask  255.255.255.0
         gateway  192.168.205.1

 

当我们无法获取 ip 地址时可以使用 dhcp 来动态获取 ip 地址,安装 dhcpcd5 和 dhcpcd-gtk

sudo apt-get install dhcpcd5
sudo apt-get install dhcpcd-gtk


使用 ifconfig 查看网卡名称,比如我本子上的有线网无法获取到 ipv4,而我的有线网卡的名称为 enp7s0,那么使用下面的命令即可获取到 ipv4 地址

dhcpcd enp7s0  

可以成功获取 IP 地址

 

又有个问题,ping 百度能找到百度的 IP 地址,但是就是 ping 不通:destination host unreachable 

网上类似问题:ping 网关 出现 Destination host unreachable

 

驱动下载

 

ftp 服务器

 

实验室网站服务器

  • R shiny,开发简单,但是功能受限
  • tripal,专业的基因组学网站,参考文章:Extension modules for storage, visualization and querying of genomic, genetic and breeding data in Tripal databases

 

docker 的利弊

 

其他:

第一次碰到这种邪门的事,一台电脑可以访问一些网站,却无法访问另一些网站,不是 DNS 解析的问题,因为 IP 都无法访问。后来有人解释说是局域网内把该网卡给封了,导致这个物理网卡在局域网内无法访问某些特定的 IP。

换台电脑就好了,果然各种千奇百怪的问题都有。

 

apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu

apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu

当运行apt-get update后出现如下错误时:
E: Some index files Failed to download,they have been ignored,or old ones used instead.

可以将目录下/var/lib/apt/lists/partial/所有的文件清掉,再次运行apt-get update即可!自带源在大陆不好。


出现以下错误:

ubuntu:Tempory failure resolving ''cn.archive.ubuntu.com ubuntu


修改dns:

1,重启生效:

sudovi/etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)

在里面插入:
nameserver8.8.8.8
nameserver8.8.4.4

如果有多个DNS就一行一个

修改好保存,然后执行

sudoresolvconf-u

再看/etc/resolv.conf,最下面就多了2行:

cat/etc/resolv.conf
#Dynamicresolv.conf(5)fileforglibcresolver(3)generatedbyresolvconf(8)
#DONOTEDITTHISFILEBYHAND--YOURCHANGESWILLBEOVERWRITTEN
可以看到我们的设置已经加上了,然后再ping一个域名,当时就可以解析了,无需重启。


2,重启失效:

配置文件地址 /etc/resolv.conf

使用编辑器打开

改为如下内容:
search localdomain
nameserver 202.96.128.86 希望修改成的DNS
nameserver 202.96.128.166 备用DNS

重启网络:sudo /etc/init.d/networking restart。即可

Django + Gunicorn + Nginx 部署 Ubuntu 服务器

Django + Gunicorn + Nginx 部署 Ubuntu 服务器

Django + Gunicorn + Nginx 部署服务器

获取腾讯云 root权限

本人的服务器使用的是腾讯云,腾讯云默认是没有开放 root 用户的,我们来创建 root 用户。 创建 root 账号并设置密码。

sudo passwd root

设置 root 账户登录需要密码。

sudo vim /etc/ssh/sshd_config 

修改 without-password 为 yes。

PermitRootLogin yes

重启 ssh 服务。

sudo service ssh restart

关闭窗口,重新使用 root 账号登录。 PS: 平时的话我们使用用户账号登录就行了,上面只是为了获取 root 权限。

更新下系统

sudo apt-get update

sudo apt-get upgrade

安装必要的软件

这里我们需要用到的软件有: NginxPytohn3Gitpipvirtualenv

sudo apt-get install nginx

sudo apt-get install python3

sudo apt-get install python3-pip

sudo apt-get install git

sudo pip3 install virtualenv

启动 Nginx服务

sudo service nginx start

在浏览器中输入域名,如果能成功看到 Nginx 欢迎页面,便说明我们的Nginx 服务是成功启动的。

部署 Django 代码

我们将从本地上传到 GitHub 的代码下载到我们的服务器中(这里以我的博客代码为例)。 我们还要设置 Django 代码的存放路径,我的路径是在 /home/ubuntu/sites/weixuqin.cn 下。

mkdir -p /home/ubuntu/sites/weixuqin.cn

cd /home/ubuntu/sites/weixuqin.cn

git clone https://github.com/weixuqin/django_blog.git

创建虚拟环境并激活

virtualenv --python=python3 env

source env/bin/activate

接下来我们便可以在虚拟环境中通过 pip 安装需要的依赖库了。

移动到下载好的源码目录:django_blog,安装需要的依赖库。

cd django_blog

pip install -r requirements.txt

收集静态文件

python manage.py collectstatic

安装 mysql 由于我的博客使用的是 MySQL 数据库,Linux 并没有带有 MySQL,所以需要我们另外安装。 使用 apt-get 安装并设置密码。

sudo apt-get install mysql-server

安装完成后进入数据库。

mysql -u root -p

创建名为 blog 的数据库。

create database blog;

在 settings.py 中设置 debug 为 False,同时设置可用域名,并修改数据库密码,

DEBUG = False

ALLOWED_HOSTS = [''*'']

DATABASES = {
    ''default'': {
        ''ENGINE'': ''django.db.backends.mysql'',
        ''NAME'': ''blog'',
        ''USER'':''root'',
        ''PASSWORD'': '''',
        ''HOST'': ''localhost'',
        ''PORT'': '''',
    }
}

生成数据库文件和创建一个Django 超级用户。

python manage.py makemigrations

python manage.py  migrate

python manage.py createsuperuser

更改 MySQL 数据库默认编码格式

liunx 上 MySQL 数据库的默认编码方式不是 utf8,一定要自己更改后使用,刚开始自己使用默认方式创建数据库,结果到了管理后台写文章的时候发现文章全部乱码(如下图),所以一定要注意数据库编码格式。

进入 MySQL,查看 MySQL 编码。

show variables like ''%character%'';

可以看到数据库默认编码为 latin1

需要修改MySQL 配置文件: /etc/mysql/my.cnf 打开 my.cnf ,在各项中添加如下语句。

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8

保存并退出。

再次执行 show variables like ''%character%''; ,便可以看到编码已经修改了。

删除原来创建的数据库,并重新创建一个同名数据库,执行 python manage.py migrate , 再次打开后台编写文章,我们的文章便不再显示乱码了。

Nginx 部署

在服务器 /etc/nginx/sites-available/ 目录下新建一个配置文件(这里以我的为例)。

sudo vim django_blog 打开文件。

server {
    charset utf-8;
    listen 80;
    server_name weixuqin.cn;

    location /media  {
        alias /home/ubuntu/sites/weixuqin.cn/django_blog/uploads;
    }

    location /static {
        alias /home/ubuntu/sites/weixuqin.cn/django_blog/staticfiles; 
    }

    location / {
        proxy_set_header Host $host;
        proxy_pass http://unix:/tmp/weixuqin.cn.socket;
    }
}

设置监听端口,指定媒体文件和静态文件存放地址等。.socket 文件会自动生成,我们可以不用去管这个文件。

创建一个符号链接,将上述配置文件放到启用的网站列表中区。被启用网站的目录在 /etc/nginx/sites-enabled/ 。

sudo ln -s /etc/nginx/sites-available/django_blog /etc/nginx/sites-enabled/django_blog

使用 Gunicorn 管理进程

我们使用 gunicorn 来管理多个进程。

在虚拟环境下安装。

pip install gunicorn

移动到 django 项目中,用 Gunicorn 启动服务器进程。

gunicorn --bind unix:/tmp/weixuqin.cn.socket django_blog.wsgi:application

在浏览器中输入域名,便能看到访问成功了。

PS: 如果输入域名后还是出现 Nginx 的欢迎界面,可能是 /etc/nginx/site-enabled/ 的默认文件 default覆盖了我们自定义的配置文件,将 default 删除即可,并重新启动 Nginx。

sudo rm default

sudo service nginx reload

创建 Gunicorn自启动脚本

如果手动启动 Gunicorn,一旦服务器重启后我们便需要再次执行启动命令,未免太过麻烦,我们创建脚本来实现 Gunicorn 的自动启动。

在 /etc/init/ 下新建一个 .conf 文件。

sudo vim /etc/init/gunicorn-weixuqin.cn.conf
start on net-device-up
stop on shutdown

respawn

setuid ubuntu
chdir /home/ubuntu/sites/weixuqin.cn/django_blog

exec ../env/bin/gunicorn --bind unix:/tmp/weixuqin.cn.socket django_blog.wsgi:application
  • start on net-device-up 只在服务器联网时启动 Gunicorn。
  • 进程崩溃后,respawn 自动重启 Gunicorn。
  • setuid 以 ubuntu 用户的身份运行 Gunicorn 进程。
  • chdir 指定 Gunicorn 运行目录(项目目录)。
  • exec 开启服务器进程。

启动 gunicor

sudo start gunicorn-weixuqin.cn

如果以后更新了代码,只需重启下 Nginx 和 Gunicorn 就行了。

sudo service nginx reload

sudo restart gunicorn-weixuqin.cn

到这里,如果一路顺利的话,打开浏览器输入你的域名,便能看到正确部署后的 Django 项目生成后的页面了。

(比如我的)

PS: 为啥数据库类型不支持 emoji 表情符号的,我明明在 Markdown 写了好多好玩的表情符号(╯-_-)╯~╩╩

欢迎大家访问我的博客 weixuqin.cn

dockerized mailcow 服务器 + 单独的 mariadb,python web 服务器

dockerized mailcow 服务器 + 单独的 mariadb,python web 服务器

如何解决dockerized mailcow 服务器 + 单独的 mariadb,python web 服务器

我已经在我的服务器上安装了 mailcow-dockerized,但不知道如何设置另一个容器/图像来使用同一服务器创建/运行网站。有人可以告诉如何让 sql/mariadb 服务器与 python/django 网站一起使用(python venv 正在工作,但我需要在 python 应用程序中使用 sql 数据库。

https://mailcow.github.io/mailcow-dockerized-docs/

gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器

gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器

如何解决gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器

我们正在尝试应用 gRPC 双向流式传输。原型:

  1. message Request {
  2. oneof requestTypes{
  3. ConfigRequest configRequest = 1;
  4. DataRequest dataRequest = 2;
  5. }
  6. }
  7. message ConfigRequest {
  8. request_quantity = 1;
  9. ...
  10. }
  11. message DataRequest {
  12. string id = 1;
  13. bytes data = 2;
  14. ...
  15. }
  16. service Service {
  17. rpc FuncService(stream Request) returns (stream Response);
  18. }

客户端用 C# 编写并包含异步。 如有必要,我可以澄清客户端代码。 服务器端在python中。 Python代码:

  1. def FuncServe(self,request_iterator,context):
  2. i = 0
  3. for request in request_iterator:
  4. ...
  5. if (i==request_quantity):
  6. break
  7. i+=1

问题是服务器在处理请求时循环挂起,所以我引入了一个 if-break 语句。到目前为止,一切正常,但我们希望在并非配置中规定的所有请求都已到达时计算出该选项。在这种情况下,我们无法避免在循环中挂起并捕获它。此外,我无法将循环移动到单独的线程中来控制执行时间,它由于迭代器为空而结束。 我将非常感谢在这个循环问题上的帮助。

我们今天的关于从零开始搭建实验室 Ubuntu 服务器 | 深度学习工作站ubuntu上搭建服务器的分享已经告一段落,感谢您的关注,如果您想了解更多关于apt-get update 失败 ubuntu:Tempory failure resolving 'cn.archive.ubuntu.com ubuntu、Django + Gunicorn + Nginx 部署 Ubuntu 服务器、dockerized mailcow 服务器 + 单独的 mariadb,python web 服务器、gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器的相关信息,请在本站查询。

本文标签: