记录自己搭建Ubuntu18.04 Server的全部过程,有不足之处请见谅!!!
1、前置工作
本文做出以下假设:
- 您已熟悉Linux操作系统
- 您拥有(或能够独立创建)一台Ubuntu Server
本文采用Vmware 虚拟机创建Ubuntu 18.04 Server
- 镜像获取:Ubuntu 18.04.5 LTS (Bionic Beaver)
- Vmware:VMware15.5
- SecureCRT:SecureCRT
搭建Ubuntu18.04 Server 教程:VMware 安装 Ubuntu Server 18.04.5 LTS
2、Server准备工作
- 设置root密码: - sudo passwd root
- 更改镜像源: - 备份源配置文件: - sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 在源配置文件前添加阿里云镜像源配置 : - sudo vim /etc/apt/sources.list- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14- deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
 
 deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
 
 deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
 
 deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
 
 deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
 
- 执行更新命令 : - sudo apt-get clean、- sudo apt-get update
- 查看Java、Python、MySql、Tomcat、nginx、SqlServer环境 
- Java: - java -version
- Python: - python 或 python3
- MySql: - mysql -version
- Redis: - redis-server -v
- Tomcat:{待补充} 
- Docker: - docker -v
- nginx:{待补充} 
- SqlServer:{待补充} 
2.0 安装文件上传工具
| 1 |  | 
2.1 安装Mysql环境
- 安装Mysql: - 1 
 2- apt-get install mysql-server
 apt-get install mysql-client
- 检测安装是否成功: - mysql
- 修改bind-address(允许远程主机访问): - vim /etc/mysql/mysql.conf.d/mysqld.cnf- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 [mysqld_safe]
 socket = /var/run/mysqld/mysqld.sock
 nice = 0
 [mysqld]
 #
 # * Basic Settings
 #
 user = mysql
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 port = 3306
 basedir = /usr
 datadir = /var/lib/mysql
 tmpdir = /tmp
 lc-messages-dir = /usr/share/mysql
 skip-external-locking
 #
 # Instead of skip-networking the default is now to listen only on
 # localhost which is more compatible and is not less secure.
 # bind-address = 127.0.0.1
 # 注释掉绑定的ip地址- mysql -u root -p123456 默认安装的话密码是任何字符都可以,也就是没有密码。 
- 修改默认编码格式: - vim /etc/mysql/mysql.conf.d/mysqld.cnf- 更改前编码:
 - 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- mysql> STATUS
 --------------
 mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using EditLine wrapper
 Connection id: 6
 Current database:
 Current user: root@localhost
 SSL: Not in use
 Current pager: stdout
 Using outfile: ''
 Using delimiter: ;
 Server version: 5.7.31-0ubuntu0.18.04.1 (Ubuntu)
 Protocol version: 10
 Connection: Localhost via UNIX socket
 Server characterset: latin1 #
 Db characterset: latin1 # 默认编码,需要修改为utf-8
 Client characterset: utf8
 Conn. characterset: utf8
 UNIX socket: /var/run/mysqld/mysqld.sock
 Uptime: 26 min 3 sec
 Threads: 1 Questions: 15 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.009
 --------------
 mysql>- * 更改:`root@ubuntu:vim /etc/mysql/mysql.conf.d/mysqld.cnf`- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- [mysqld]
 #
 # * Basic Settings
 #
 user = mysql
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 port = 3306
 basedir = /usr
 datadir = /var/lib/mysql
 tmpdir = /tmp
 lc-messages-dir = /usr/share/mysql
 skip-external-locking
 character-set-server=utf8 # 添加该句
 #
 # Instead of skip-networking the default is now to listen only on
 # localhost which is more compatible and is not less secure.
 # bind-address = 127.0.0.1- 重启服务,更改后编码:
 - 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- mysql> STATUS
 --------------
 mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using EditLine wrapper
 Connection id: 2
 Current database:
 Current user: root@localhost
 SSL: Not in use
 Current pager: stdout
 Using outfile: ''
 Using delimiter: ;
 Server version: 5.7.31-0ubuntu0.18.04.1 (Ubuntu)
 Protocol version: 10
 Connection: Localhost via UNIX socket
 Server characterset: utf8
 Db characterset: utf8
 Client characterset: utf8
 Conn. characterset: utf8
 UNIX socket: /var/run/mysqld/mysqld.sock
 Uptime: 5 sec
 Threads: 1 Questions: 5 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 1.000
 --------------
 mysql>
- 授权远程登录: - 1 
 2
 3- mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
 Query OK, 0 rows affected, 1 warning (0.00 sec)- 1 
 2- mysql> FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
- 进行远程连接: 使用Navicat进行连接,如果不能连接;请百度开放Ubuntu的3306端口。 
- 修改MySql用户密码:{待补充} 
2.2 安装Java环境
- 下载JDK
| 1 |  | 
- 安装JDK - 1 
 2
 3
 4
 5- #上传jdk到/export/software路径下去,井解压
 tar -zxvf jdk-8u161-linux-x64.tar.gz -C /export/servers/
 mv jdk1.8.0_161 jdk
- 配置JDK环境变量 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- vi /etc/profile
 添加以下内容:
 export JAVA_HOME=/export/servers/jdk
 export PATH=$PATH:$JAVA_HOME/bin
 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 修改完成之后记得source /etc/profle生效
 source /etc/profile
- JDK环境验证 - 1 - java -version
2.3 配置python环境
- 检测python3、pip3: - python3、- pip3 install numpy
- 安装python3、pip3: - apt-get install python3、- apt-get install python3-pip
- 收集和安装依赖: 
| 1 |  | 
- 安装conda环境:官网 - 选择合适的Anaconda版本地址:https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh 
- 下载安装包: - 1 
 2
 3- cd /export/software/
 wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
 bash Anaconda3-4.4.0-Linux-x86_64.sh
 
一路回车;
- 修改环境变量: - 1 - vi ~/.bashrc- 在bashrc文件的最后添加:export PATH=”/home/用户名/anaconda3/bin:$PATH”。(vi编辑器中按i进入编辑模式) - 如: - export PATH="/root/anaconda3/bin:$PATH"
- 更新 - .bashrc使得环境变量生效:- source ~/.bashrc
- 更改镜像源: - 1 
 2
 3
 4
 5
 6- 修改了清华源,
 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
 conda config --set show_channel_urls yes
- 升级conda: - 1 
 2
 3- conda update conda
 conda update anaconda
 conda update python
- 
- 环境管理: 
- conda常用命令 - 查看当前系统下的环境
 - 1 - conda info -e
 - 创建新的环境
 1 
 2
 3
 4# 指定python版本为2.7,注意至少需要指定python版本或者要安装的包# 后一种情况下,自动安装最新python版本
 conda create -n env_name python=2.7
 # 同时安装必要的包
 conda create -n env_name numpy matplotlib python=2.7- 环境切换
 1 
 2
 3
 4# 切换到新环境# linux/Mac下需要使用source activate env_name
 activate env_name
 #退出环境,也可以使用`activate root`切回root环境
 deactivate env_name- 移除环境 - 1 - conda remove -n env_name --all
 - 给某个特定环境安装package - 1 - conda install -n env_name pandas
 - 查看已经安装的package - 1 
 2
 3- conda list
 # 指定查看某环境下安装的package
 conda list -n env_name
- 查找包 - 1 - conda search pyqtgraph
 - 更新包 - 1 
 2- conda update numpy
 conda update anaconda- 卸载包
 - 1 - conda remove numpy
 
2.4 Redis环境配置:here
- 安装redis: - 1 - $ sudo apt-get install redis-server- 或者:
 - 1 
 2
 3
 4- $ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
 解压:tar -zxf redis-5.0.5.tar.gz
 进入redis目录:cd redis-5.0.5
 编译:make
- 配置:参照here 
2.5 Tomcat :官网
- 下载Tomcat 9.0.38: - 1 - wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38.tar.gz
- 解压到指定目录: - tar -zxvf apache-tomcat-9.0.38.tar.gz -C /export/servers/
- 重命名文件名: - mv apache-tomcat-9.0.38/ tomcat9
- 更改启动脚本 - startup.sh:- 1 
 2
 3
 4
 5
 6
 7
 8- #set java environment
 export JAVA_HOME=/export/servers/jdk
 export JRE_HOME=${JAVA_HOME}/jre
 export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
 export PATH=${JAVA_HOME}/bin:$PATH
 #tomcat
 export TOMCAT_HOME=/export/servers/tomcat9
- 启动Tomcat: - ./startup.sh
2.6 Docker 环境安装
安装参考:菜鸟教程
- 查看Linux的IP地址 - 1 - ip addr
- 使用客户端连接Linux 
2.6.1 在Linux上安装docker
步骤:
- 检查内核版本,必须是3.10及以上: - uname -r
- 启动docker: - systemctl start docker
- 查看docker版本: - docker -v
- 开机启动docker: - systemctl enable docker
- 停止docker: - systemctl stop docker
2.6.2 Docker常用命令&操作
2.6.2.1 镜像操作
| 操作 | 命令 | 说明 | 
|---|---|---|
| 检索 | docker search 关键字 eg:docker search redis | 我们经常要去docker hub上检索镜像的详细信息,如镜像的tag | 
| 拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签 | 
| 列表 | docker images | 查看所有的本地镜像 | 
| 删除 | docker rmi images-id | 删除指定的本地镜像 | 
2.6.2.2 容器操作
软件镜像(QQ安装程序)—-运行镜像—-产生一个容器(正在运行的软件,运行的QQ) ;
步骤:
- 搜索镜像:docker search tomcat
- 拉取镜像:docker pull tomcat
- 根据镜像启动容器: docker run --name mytomcat -d tomcat:latest
- 查看运行中的容器:docker ps
- 停止运行中的容器:docker stop 容器的id
- 查看所有的容器: docker ps -a
- 启动容器: docker start 容器id
- 删除一个容器:docker rm 容器id
- 启动一个做了端口映射的tomcat: docker run -d -p 8888:8080 tomcat- -d:后台运行
- -p:将主机端口映射到容器的一个端口 主机端口:容器内部端口
 
- 关闭Linux的防火墙:- 查看防火墙状态:service firewalld status
- 关闭防火墙:service firewalld stop
 
- 查看防火墙状态:
- 查看容器的日志: docker logs container-name/container-id
- 更多命令参看:[https: //docs.docker .com/engine/reference/commandline/docker/](https: //docs.docker .com/engine/reference/commandline/docker/)- 可以参考每一个镜像的文档
 
2.6.2.3 安装MySql示例
| 1 |  | 
- 错误的启动
| 1 |  | 
- 正确的启动
| 1 |  | 
- 做了端口映射
| 1 |  | 
- 几个其他的高级操作
| 1 |  | 
2.6.2.4 安装zookeeper
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
- zookeeper 是CP 强一致性的
访问hub.docker.com 主要是获得安装软件的信息及文档
- 安装步骤:
| 1 |  | 
- 进入zookeeper shell终端
| 1 |  | 
- 启动zookeeper 服务
| 1 |  | 
- 启动客户端:
| 1 |  | 
- 在客户端操作
| 1 |  | 
- json解析后的内容
| 1 |  | 
3、Linux系统目录结构
| 目录 | 说明 | 
|---|---|
| / | 虚拟目录的根目录,通常不会在这里存储文件 | 
| /bin | 二进制目录,存放用户级的GNU工具 | 
| /boot | 启动目录,存放启动文件 | 
| /dev | 设备目录,系统在这里创建设备节点 | 
| /etc | 系统配置文件目录 | 
| /home | 主目录,系统在这里创建用户目录 | 
| /lib | 库目录,存放系统和应用程序的库文件 | 
| /media | 媒体目录,可移动媒体设备的常用挂载点 | 
| /mnt | 挂载目录,另一个可移动媒体设备的常用挂载点 | 
| /opt | 可选目录,常用于存放第三方软件包和数据文件 | 
| /proc | 进程目录,存放现有硬件及当前进程的相关信息 | 
| /root | root用户的主目录 | 
| /sbin | 系统二进制目录,存放许多gnu管理员级工具 | 
| /run | 运行目录,存放系统运作时的运行时数据 | 
| /srv | 服务目录,存放本地服务的相关文件 | 
| /sys | 系统目录,存放系统硬件信息的相关文件 | 
| /tmp | 临时目录,可以在该目录中创建删除临时工作文件 | 
| /usr | 用户二进制目录,大量用户级的gnu工具和数据文件存储 | 
| /var | 可变目录,用以存放经常变化的文件,比如日志文件 | 
- 个人目录 - 1 
 2
 3
 4
 5
 6
 7- mkdir -p /export/data # 存放一些数据文件
 mkdir -p /export/software # 存放安装包
 mkdir -p /export/servers # 软件安装目录:jdk、tomcat等
 cd /home/username/ # 进入用户个人空间