# 安装Linux操作系统
这里以 ubuntu-24.04 为例,在虚拟机上安装 ubuntu-24.04.1-live-server-amd64 服务器版,安装过程略,但有几点需要注意的地方:
# 1. 虚拟机设置
1)虚拟机设置中的网络配置,建议将网络连接设置为:桥接模式。注:桥接模式将宿主Windows系统同属于一个网络
2)虚拟机设置中的显示器,将3D图像中的 加速 3D 图形(3) 前的✓去掉。如果不去掉✓,会影响系统稳定。
3)安装完成操作系统后,把虚拟机设置中的 CD/DVD(SATA) 设置状态的 启动时连接 前的✓去掉。如果不去掉✓,将会启动不了系统。
# 2. 启用 root 用户
默认 root 用户没有启用,需要通过设置root用户密码来启用root:
kedao@kedao:~$ sudo passwd root
[sudo] password for kedao:
New password:
Retype new password:
passwd: password updated successfully;
2
3
4
5
# 3. 设置 sudo 免密
切换到root用户,修改文件 /etc/sudoers,文件默认为只读,需设置编辑权限,然后编辑 /etc/sudoers 文件
kedao@kedao:~$ su - root
root@kedao:~# chmod u+w /etc/sudoers
root@kedao:~# vi /etc/sudoers
2
3
在文件末尾并增加一行(注:kedao 为你的用户名):
kedao ALL=(ALL) NOPASSWD: ALL
修改完成,切换回 kedao 用户
root@kedao:~# su - kedao
# 4. 设置静态ip
检查 NetworkManager 服务状态,查看是否已安装:
kedao@kedao:~$ sudo systemctl status NetworkManager
如果没有安装,则执行命令 sudo apt install network-manager 进行安装:
kedao@kedao:~$ sudo apt install network-manager
编辑 netplan 配置文件,这个文件位于 /etc/netplan/ 目录下
kedao@kedao:~$ ls /etc/netplan/
50-cloud-init.yaml
2
查看网络接口:
kedao@kedao:/$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:0d:ca:59 brd ff:ff:ff:ff:ff:ff
altname enp2s0
inet 192.168.43.5/24 metric 100 brd 192.168.43.255 scope global dynamic ens32
valid_lft 2602sec preferred_lft 2602sec
inet6 fe80::20c:29ff:fe0d:ca59/64 scope link
valid_lft forever preferred_lft forever
2
3
4
5
6
7
8
9
10
11
12
13
14
网络接口名称为:ens32 编辑 50-cloud-init.yaml 文件
kedao@kedao:~$ sudo vi /etc/netplan/50-cloud-init.yaml
在 50-cloud-init.yaml 文件中配置静态IP
network:
version: 2
renderer: networkd
ethernets:
ens32:
dhcp4: no
addresses:
- 192.168.43.30/24
routes:
- to: default
via: 192.168.43.1
nameservers:
addresses:
- 192.168.43.1
- 8.8.8.8
2
3
4
5
6
7
8
9
10
11
12
13
14
15
应用Netplan配置及验证配置:
kedao@kedao:~$ sudo netplan apply
kedao@kedao:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:0d:ca:59 brd ff:ff:ff:ff:ff:ff
altname enp2s0
inet 192.168.43.30/24 brd 192.168.43.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe0d:ca59/64 scope link
valid_lft forever preferred_lft forever
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 5. 调整系统内核参数
编辑文件 /etc/sysctl.conf:
kedao@kedao-dev:~$ sudo vi /etc/sysctl.conf
写入如下参数:
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 7672460
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=8192
2
3
4
5
6
7
8
9
10
11
12
执行命令生效
kedao@kedao-dev:~$ sudo sysctl -p
编辑文件 /etc/security/limits.conf:
kedao@kedao-dev:~$ sudo vi /etc/security/limits.conf
写入如下参数:
* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock 50000000
* hard memlock 50000000
2
3
4
5
6
7
8
修改完成,重启系统使参数生效。
kedao@kedao-dev:~$ sudo reboot
# 6. 设置时区
查看系统默认设置的时区,执行命令 timedatectl
kedao@kedao:/opt/kedao/bin$ timedatectl
Local time: Sun 2025-04-27 00:53:27 UTC
Universal time: Sun 2025-04-27 00:53:27 UTC
RTC time: Sun 2025-04-27 00:53:26
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
2
3
4
5
6
7
8
如果不是北京时间,则修改时区为北京时间,执行命令 timedatectl set-timezone Asia/Shanghai,修改后再次执行命令 timedatectl 查看修改结果
kedao@kedao:/opt/kedao/bin$ sudo timedatectl set-timezone Asia/Shanghai
kedao@kedao:/opt/kedao/bin$ timedatectl
Local time: Sun 2025-04-27 08:53:40 CST
Universal time: Sun 2025-04-27 00:53:40 UTC
RTC time: Sun 2025-04-27 00:53:40
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
2
3
4
5
6
7
8
9
# 开发环境设置
# 1. 安装 g++ gcc
查看 g++、gcc 的版本,如果已安装,则跳过该步:
kedao@kedao:~$ gcc --version
Command 'gcc' not found, but can be installed with:
sudo apt install gcc
kedao@kedao:~$ g++ --version
Command 'g++' not found, but can be installed with:
sudo apt install g++
2
3
4
5
6
安装 build-essential,build-essential包含了g++和gcc,以及其他一些编译工具,如make
kedao@kedao:~$ sudo apt update
kedao@kedao:~$ sudo apt install build-essential
2
# 2. 安装 GDB
查看 GDB 的版本,如果没有安装,则进行安装,操作如下:
kedao@kedao:~$ gdb --version
Command 'gdb' not found, but can be installed with:
sudo apt install gdb
kedao@kedao:~$ sudo apt install gdb
2
3
4
# 3. 安装 JDK
检查是否安装了 JDK :
kedao@kedao:~$ javac -version
Command 'javac' not found, but can be installed with:
sudo apt install openjdk-17-jdk-headless # version 17.0.14+7-1~24.04, or
sudo apt install openjdk-21-jdk-headless # version 21.0.6+7-1~24.04.1
sudo apt install default-jdk # version 2:1.17-75
sudo apt install openjdk-11-jdk-headless # version 11.0.26+4-1ubuntu1~24.04
sudo apt install openjdk-8-jdk-headless # version 8u442-b06~us1-0ubuntu1~24.04
sudo apt install ecj # version 3.32.0+eclipse4.26-2
sudo apt install openjdk-19-jdk-headless # version 19.0.2+7-4
sudo apt install openjdk-20-jdk-headless # version 20.0.2+9-1
sudo apt install openjdk-22-jdk-headless # version 22~22ea-1
2
3
4
5
6
7
8
9
10
11
如果没有安装,执行 sudo apt install default-jdk 进行安装,操作如下:
kedao@kedao:~$ sudo apt install default-jdk
查看JDK的版本
kedao@kedao:~$ javac -version
javac 21.0.6
kedao@kedao:~$ java -version
openjdk version "21.0.6" 2025-01-21
OpenJDK Runtime Environment (build 21.0.6+7-Ubuntu-124.04.1)
OpenJDK 64-Bit Server VM (build 21.0.6+7-Ubuntu-124.04.1, mixed mode, sharing)
2
3
4
5
6
查看JDK的安装路径:
kedao@kedao:~$ sudo update-alternatives --config java
There is 1 choice for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 auto mode
1 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 manual mode
Press <enter> to keep the current choice[*], or type selection number:
2
3
4
5
6
7
8
9
可以看到安装路径是:/usr/lib/jvm/java-21-openjdk-amd64 设置环境变量 JAVA_HOME,可以在 /etc/environment 文件中添加环境变量,或者在 /etc/profile 或 /etc/profile.d/ 目录下的脚本文件中添加。例如,编辑 /etc/environment 文件:
kedao@kedao:~$ sudo vi /etc/environment
在 /etc/environment 文件中添加 JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64",如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
2
使环境变量生效
kedao@kedao:~$ source /etc/environment
# 4. 安装 Maven
查看 Maven 的版本,如果没有安装,则 执行 sudo apt install maven 进行安装:
kedao@kedao:~$ mvn -v
Command 'mvn' not found, but can be installed with:
sudo apt install maven
kedao@kedao:~$ sudo apt install maven
2
3
4
查看 Maven 的版本,如下:
kedao@kedao:~$ mvn -v
Apache Maven 3.8.7
Maven home: /usr/share/maven
Java version: 21.0.6, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "6.8.0-58-generic", arch: "amd64", family: "unix"
2
3
4
5
6
设置环境变量,Maven 的安装路径为:/usr/share/maven:
kedao@kedao:~$ sudo vi /etc/environment
在 /etc/environment 文件中添加 MAVEN_HOME="/usr/share/maven",如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
MAVEN_HOME="/usr/share/maven"
2
3
使环境变量生效
kedao@kedao:~$ source /etc/environment
# 5. 安装 Python3 和 pip3
查看 Python3 和 pip3 的版本,如果已经安装则不用再安装:
kedao@kedao:~$ python3 --version
Python 3.12.3
kedao@kedao:~$ pip3 --version
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
kedao@kedao:~$
kedao@kedao:~$ sudo apt install python3-pip
2
3
4
5
6
7
# 6. 安装 Node.js
查看版本,执行命令 node -v 和 npm -v: 如没有安装,不推荐执行命令 sudo apt install nodejs 安装(这样安装的版本比较旧),使用 NodeSource Node.js 二进制发行版进行
kedao@kedao:~$ node -v
Command 'node' not found, but can be installed with:
sudo apt install nodejs
kedao@kedao:~$ npm -v
Command 'npm' not found, but can be installed with:
sudo apt install npm
2
3
4
5
6
安装 更新包管理器和安装依赖
kedao@kedao:~$ sudo apt update
kedao@kedao:~$ sudo apt install curl software-properties-common
2
添加NodeSource Node.js PPA
kedao@kedao:~$ curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
安装Node.js:
kedao@kedao:~$ sudo apt install nodejs
# 7. 安装 UnixODBC
查看 UnixODBC 的版本,如没安装,执行命令 sudo apt install unixodbc odbcinst unixodbc-dev 进行安装:
kedao@kedao:~$ sudo apt install unixodbc odbcinst unixodbc-dev
# 8. 安装数据库驱动
这里使用的是 PostgreSQL 16,所以安装 PostgreSQL 对应的驱动程序 安装系统依赖:
kedao@kedao:~$ sudo apt install -y systemtap-sdt-dev libicu-dev libreadline-dev zlib1g-dev libssl-dev libpam0g-dev libxml2-dev libxslt1-dev libldap-dev libsystemd-dev gettext tcl-dev libpython3-dev libperl-dev
设置自动存储库:
kedao@kedao:~$ sudo apt install curl ca-certificates
kedao@kedao:~$ sudo install -d /usr/share/postgresql-common/pgdg
kedao@kedao:~$ sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
kedao@kedao:~$ sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
2
3
4
安装 PostgreSQL 的驱动程序:
kedao@kedao:~$ sudo apt update
kedao@kedao:~$ sudo apt install odbc-postgresql libpq-dev
2
# 9. 配置ODBC
查看odbc的驱动信息:
kedao@kedao:~$ cat /etc/odbcinst.ini
[PostgreSQL ANSI]
Description=PostgreSQL ODBC driver (ANSI version)
Driver=psqlodbca.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
[PostgreSQL Unicode]
Description=PostgreSQL ODBC driver (Unicode version)
Driver=psqlodbcw.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
有两个驱动 PostgreSQL ANSI 和 PostgreSQL Unicode,在配置 /etc/odbc.ini 时,使用 PostgreSQL ANSI,编辑 /etc/odbc.ini :
kedao@kedao:~$ sudo vi /etc/odbc.ini
增加节点 [ myPgDB ],内容如下:
[myPgDB]
Description = link to pg
Driver = PostgreSQL ANSI
Database = asv_db
Servername = 192.168.43.135
UserName = postgres
Password = postgres
Port = 5432
ReadOnly = 0
ConnSettings = set client_encoding to UTF8
2
3
4
5
6
7
8
9
10
执行命令 sudo odbcinst -i -d -f /etc/odbc.ini 刷新配置:
kedao@kedao:~$ sudo odbcinst -i -d -f /etc/odbc.ini
odbcinst: Driver installed. Usage count increased to 1.
Target directory is /etc
2
3
测试连接,执行 isql -v myPgDB,如:
kedao@kedao:~$ isql -v myPgDB
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| echo [string] |
| quit |
| |
+---------------------------------------+
2
3
4
5
6
7
8
9
10
至此,开发服务器的必要工具配置完成。