Ubuntu服务器环境搭建


官网下载ubuntu server 镜像,然后用uarlISO将服务器安装镜像写入到U盘。

插U盘根据命令行提示安装ubuntu,选择docker环境

更新网卡RTL8188CUS驱动(ubuntu 亲测有效,无报错,centos 8编译的时候报错,还没找到解决办法)

1
2
3
4
5
6
7
8
sudo apt-get update
sudo apt-get install git linux-headers-generic build-essential dkms
git clone --depth 1 https://github.com/pvaret/rtl8192cu-fixes.git
sudo dkms add ./rtl8192cu-fixes
sudo dkms install 8192cu/1.11
sudo depmod -a
sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
sudo reboot

配网

这个办法不能跟以往修改/etc/network/interface,这个方法一起配置使用,要把这文件清空配置

1
2
3
4
cd /etc/netplan/
ll
#发现了一个yaml文件,编辑一下
vim xx-xxxx-xxxx.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
renderer: NetworkManager
wifis:
wls33:
dhcp4: no
addresses:
- 192.168.18.123/24
gateway4: 192.168.18.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search: []
access-points:
"wifi_ssid":
password: '12345'
version: 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
改文件的编辑必须严格按照格式来,是分层的,用空格来退格
第一层-network:
第二层-- ethernets:
第三层--- ens33:
第四层---addresses: [192.168.0.122/24,] #这个逗号我看了网上有些有,有些没有,不知道怎么回事,但是试过了没影响
第四层----gateway4: 192.168.0.1
第五层 - - - - - - dhcp4: no
第六层 - - - - - - version:2
第六层 - - - - - - renderer:NetworkManager
第六层是系统原有的,我在前面填加了空格到对齐了第二层,否则后面会报错;
其中ens33是网卡的名称,可以用ifconfig命令获取;addresses还有gateway4根据实际情况来,dhcp4改成no是说不自动获取ip的意思,自动获取ip改为true;还有地址那一栏的解释如下:
上面修改完之后就是执行命令:sudo netplan apply 重启网络;
如果上面修改的文件里面有制表符的话就会报:
出现类似错误:line8 column 6:cloud not find expected ':' #提示是冒号:后面没加空格
出现类似错误:netplan found character that cannot start any token,#提示是没有按五个层次写配置文档,一定要下一层比上一层多空一格或以上。
出现类似错误: Invalid YAML: inconsistent indentation: #缩进不对,就是每一层没有严格缩进
总之:这里重启网络时报错,大多是层次不对、格式不对、没有空格。缩进不对
1
2
3
4
sudo apt install wpasupplicant
sudo apt install network-manager
sudo netplan generate
sudo netplan apply

挂载服务器到本地目录

1
2
3
4
5
sudo apt-get install sshfs
挂载:
sshfs username@sever_ip:/serv_workdir/ /localdir/
卸载
umount /localdir/

利用scp向服务器传送文件及文件夹

1
2
3
4
5
1.向服务器发送文件:
scp 本地目录/要发送的文件 服务器用户名@服务器IP:服务器目录
2.向服务器发送文件夹:
scp -r 本地目录/要发送的文件夹 服务器用户名@服务器IP:服务器目录
3.拉取服务器文件:跟上面差不多,两个路径交换一下即可

利用docker搭建开发环境

1
2
3
4
5
6
7
//先在源代码的环境下保存docker的镜像
docker save -o env.tar ubuntu-bbb-env:latest
//scp 发送docker 到服务器上
scp env.tar kenny@192.168.123.123:/home/kenny/
//输入密码
//在服务器上导入docker镜像
docker load -i env.tar

修改服务器时区

1
2
3
4
5
6
7
8
9
sudo tzselect
//选择Asia,输入4,然后enter
//选择国家China,输入9,然后enter
//选择北京时间,输入1,然后enter
//再输入1确认。
//创建时区软链
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
//查看时区,确认是否配置成功
timedatectl

docker免sudo操作

1
2
3
4
5
6
7
8
9
//添加docker用户组
sudo groupadd docker
//将当前用户添加到docker用户组
sudo gpasswd -a ${USER} docker
//重启 docker 服务
sudo service docker restart
//切换当前会话到新 group 或者重启 X 会话
newgrp - docker
//注意:最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。

docker导出镜像压缩包以及压缩包导入到docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
导入导出命令介绍
涉及的命令有export、import、save、load
save命令:
docker save [options] images [images...]
示例
docker save -o nginx.tar nginx:latest

docker save > nginx.tar nginx:latest
其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
load命令:
docker load [options]
示例
docker load -i nginx.tar

docker load < nginx.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
export命令:
docker export [options] container
示例
docker export -o nginx-test.tar nginx-test
其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)
import命令:
docker import [options] file|URL|- [REPOSITORY[:TAG]]
示例
docker import nginx-test.tar nginx:imp

cat nginx-test.tar | docker import - nginx:imp
区别:
export命令导出的tar文件略小于save命令导出的
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
建议:
可以依据具体使用场景来选择命令,若是只想备份images,使用save、load即可
若是在启动容器后,容器内容有变化,需要备份,则使用export、import

在ubuntu server上记录和查看日志

1
2
3
4
5
6
7
8
9
10
11
在ubuntu server 上记录和查看cron日志
1.安装rsyslog
apt-get install rsyslog
2.修改它的配置文件
vi /etc/rsyslog.d/50-default.conf
把cron那一行注释去掉
3.然后重启rsyslog、 cron
/etc/init.d/rsyslog restart
/etc/init.d/cron restart
4.查看cron log
vi /var/log/cron.log

搭建gitlab私人仓库

获取国内镜像

1
docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh

创建包

1
2
3
mkdir -p /home/software/gitlab/etc
mkdir -p /home/software/gitlab/logs
mkdir -p /home/software/gitlab/data

运行

1
docker run --detach --publish 8443:443 --publish 8090:80  --publish 8022:22  --name gitlab   --restart always --hostname 192.168.123.123  -v /home/software/gitlab/etc:/etc/gitlab -v /home/software/gitlab/logs:/var/log/gitlab  -v /home/software/gitlab/data:/var/opt/gitlab -v /etc/localtime:/etc/localtime:ro --privileged=true registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh
1
2
3
4
5
6
7
8
9
10
11
12
13
docker run \
--detach \
--publish 8443:443 \ # 映射https端口, 不过本文中没有用到
--publish 8090:80 \ # 映射宿主机8090端口到容器中80端口
--publish 8022:22 \ # 映射22端口, 可不配
--name gitlab \
--restart always \
--hostname 192.168.123.123 \ # 局域网宿主机的ip, 如果是公网主机可以写域名
-v /home/software/gitlab/etc:/etc/gitlab \ # 挂载gitlab的配置文件
-v /home/software/gitlab/logs:/var/log/gitlab \ # 挂载gitlab的日志文件
-v /home/software/gitlab/data:/var/opt/gitlab \ # 挂载gitlab的数据
-v /etc/localtime:/etc/localtime:ro \ # 保持宿主机和容器时间同步
--privileged=true registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh # 在容器中能以root身份执行操作

查看运行情况

1
2
docker ps
docker logs -f gitlab

访问

1
2
http://192.168.123.123:8090
第一次访问时,将被重定向到密码重置屏幕, 默认帐户的用户名是root, 登录后, 您可以更改用户名

← Prev Docker笔记 | Hexo博客搭建相关 Next →