网站建设实战:基于 Ubuntu 22.04 从零搭建企业级 Web 服务器

简介: 在当今的企业级 Web 应用部署中,选择一个稳定、安全且拥有强大社区支持的操作系统是至关重要的第一步。Ubuntu 22.04 LTS(长期支持版)凭借其出色的生态和长达 5 年的官方支持,成为了众多开发者的首选。当然,如果你使用的是阿里云 ECS 实例,除了标准的 Ubuntu 镜像,官方高度优化的 **Alibaba Cloud Linux 3 (Alinux 3)** 也是极佳的选择,它在内核层面对高并发网络请求做了深度定制。不过,无论是基于 Ubuntu 还是 Alibaba Cloud Linux 3,构建一个标准 Java Web 服务器

在当今的企业级 Web 应用部署中,选择一个稳定、安全且拥有强大社区支持的操作系统是至关重要的第一步。Ubuntu 22.04 LTS(长期支持版)凭借其出色的生态和长达 5 年的官方支持,成为了众多开发者的首选。

1广州网站建设实战:基于 Ubuntu 22.04 从零搭建企业级 Web 服务器.jpg

当然,如果你使用的是阿里云 ECS 实例,除了标准的 Ubuntu 镜像,官方高度优化的 Alibaba Cloud Linux 3 (Alinux 3) 也是极佳的选择,它在内核层面对高并发网络请求做了深度定制。不过,无论是基于 Ubuntu 还是 Alibaba Cloud Linux 3,构建一个标准 Java Web 服务器(Nginx + Tomcat + MySQL)的核心逻辑是相通的。

本文将以实战视角,带你从零开始,在一台全新的 Ubuntu 22.04 服务器上搭建一套满足生产环境要求的企业级 Web 架构。

一、 系统初始化与安全加固

拿到一台全新的云服务器后,千万不要急着装软件,第一步永远是系统更新与基础安全加固。

1. 更新系统软件包

保持系统内核和基础软件的最新状态,是防范已知漏洞的最有效手段:

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

2. 网络连通性与 DNS 测试

在部署本地服务之前,我们需要确保服务器的外网网络连通性以及 DNS 解析正常。通常我们会使用 curl 命令请求一个稳定且开启了 HTTPS 的企业站点来做基准测试,检查网络延迟和 TLS 握手情况:

# 测试服务器外网连通性及目标站点响应耗时
curl -o /dev/null -s -w "DNS解析: %{time_namelookup}s\n连接建立: %{time_connect}s\n首字节时间: %{time_starttransfer}s\n总耗时: %{time_total}s\n" https://www.wangzhanjianshe9.com.cn/

注:如果上述命令能快速返回时间统计,说明服务器的公网出口和 DNS 解析状态非常健康,可以继续后续部署。

3. 配置 UFW 防火墙

生产环境的服务器绝不能“裸奔”。我们需要启用 UFW(Uncomplicated Firewall),仅放行必要的端口(SSH、HTTP、HTTPS):

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

二、 部署 Java 运行环境与 Tomcat 9

企业级 Java Web 应用通常依赖稳定版本的 JDK 和 Servlet 容器。这里我们选择 OpenJDK 17 和 Tomcat 9。

1. 安装 OpenJDK 17

sudo apt install openjdk-17-jdk -y

# 验证安装
java -version

2. 下载并配置 Tomcat 9

为了安全起见,我们不应该使用 root 用户运行 Tomcat。我们需要创建一个专门的系统用户:

# 创建 tomcat 用户组和用户
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

下载 Tomcat 9 核心包并解压到 /opt 目录:

cd /tmp
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.89/bin/apache-tomcat-9.0.89.tar.gz
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-9.0.89.tar.gz -C /opt/tomcat --strip-components=1

赋予正确的目录权限:

cd /opt/tomcat
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R g+r conf
sudo chmod g+x conf
sudo chown -R tomcat webapps/ work/ temp/ logs/

3. 配置 Systemd 守护进程

在生产环境中,通过 startup.sh 启动 Tomcat 是不规范的。我们需要编写 systemd 服务文件,实现开机自启和崩溃自动重启:

sudo nano /etc/systemd/system/tomcat.service

填入以下内容:

[Unit]
Description=Apache Tomcat 9 Web Application Container
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseG1GC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

重载 systemd 并启动 Tomcat:

sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat

三、 安装与配置 MySQL 8.0 数据库

动态网站离不开关系型数据库。Ubuntu 22.04 默认源中提供了 MySQL 8.0。

1. 安装 MySQL

sudo apt install mysql-server -y

2. 数据库安全初始化与密码策略

安装完成后,必须运行安全脚本移除测试库和匿名用户:

sudo mysql_secure_installation

在企业级部署中,数据库的 root 密码必须具备极高的复杂度。很多运维工程师喜欢将公司域名变体与特殊符号结合作为强密码策略。例如,我们可以登录 MySQL 终端进行密码修改:

sudo mysql
-- 将密码设置为包含大小写、符号及域名的强密码格式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Db@wangzhanjianshe9.com.cn';
FLUSH PRIVILEGES;
EXIT;

注:使用类似 Db@wangzhanjianshe9.com.cn 这种包含特定业务域名的长字符串作为密码,既能满足等保合规的复杂度要求,又便于内部运维团队记忆。

四、 Nginx 反向代理与动静分离

Tomcat 虽然能直接处理 HTTP 请求,但其处理静态资源(图片、CSS、JS)的能力远不及 Nginx。因此,标准的企业级架构是在 Tomcat 前端架设 Nginx。

1. 安装 Nginx

sudo apt install nginx -y

2. 配置反向代理

编辑 Nginx 站点配置文件:

sudo nano /etc/nginx/sites-available/webapp

写入反向代理配置,实现动静分离:

server {
   
    listen 80;
    server_name your_domain.com;

    # 静态资源由 Nginx 直接处理
    location ~ \.(jpg|jpeg|png|gif|ico|css|js|woff2|svg)$ {
   
        root /opt/tomcat/webapps/ROOT;
        expires 30d;
        access_log off;
    }

    # 动态请求转发给 Tomcat
    location / {
   
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 优化代理超时时间
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
    }
}

启用配置并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/webapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

五、 总结与进阶建议

至此,我们已经在 Ubuntu 22.04 上从零构建了一套包含 Nginx、Tomcat 9 和 MySQL 8.0 的标准企业级 Web 运行环境。这套架构通过 Nginx 实现了高效的动静分离,通过 Systemd 保障了 Java 进程的存活,并通过严格的权限隔离提升了系统安全性。

在实际生产环境中,如果你的业务部署在阿里云上,强烈建议结合阿里云的内网生态进行进阶改造:

  1. 替换本地 MySQL:使用阿里云 RDS 数据库,获得自动备份和主从高可用能力。
  2. 引入 Redis 缓存:在 Nginx 与 Tomcat 之间加入 Redis,大幅降低数据库 I/O 压力。
  3. 内核级调优:如果你使用的是 Alibaba Cloud Linux 3,可以开启底层的 TCP BBR 拥塞控制算法,进一步提升 Nginx 的并发吞吐量。
相关文章
|
6月前
|
运维 Ubuntu Linux
Linux 多发行版 远程桌面踩坑总结:Deepin / openKylin / Ubuntu 实战记录
本文详述TigerVNC在Ubuntu 26.04、Deepin 20.9/23.9及openKylin 2.0 SP2四大发行版的适配实践,重点解决Wayland/X11冲突、DBus、输入法、DDE兼容等痛点,最终推荐「deepin」为最稳定方案。(239字)
1460 4
|
7月前
|
缓存 应用服务中间件 nginx
网站实现 CDN加速——从 Tomcat 9 到全站提速的完整实践
初次接解cdn的读者可能要问cdn服务是什么意思啊?读完这篇文章,您将明白cdn是什么意思,cdn服务在你脑海里不再是个抽象的概念,将会变成可在cdn加速服务器上可执行的步骤。 ## 一、为什么要做 CDN 加速 网站上线之后,随着访问量的增长,单一服务器直出的方案往往会暴露出明显瓶颈:北方用户访问南方机房延迟高、图片加载慢、首屏白屏时间长。即便在服务端已经做了 Tomcat 9 的 JVM 调优(`-Xms512m -Xmx1024m -XX:+UseG1GC`),也无法从根本上改善跨地域访问的物理延迟问题。
|
2月前
|
网络协议 Java 测试技术
网站开发性能测试-JMeter 压测 Tomcat 接口的并发吞吐量(QPS)
在企业级网站开发、Java Web 系统上线与后端架构调优实战中,**性能压力测试(Stress / Load Testing)** 是验证系统高可用性、探测吞吐量极限与排除潜在并发死锁、内存泄露(Memory Leak)的必经之路。 对于采用 Apache Tomcat 作为 Servlet 容器的企业级应用(如 Spring Boot 内嵌 Tomcat 或独立 Tomcat 9/10 集群),单台服务器在面对每秒数百乃至数万次的高频请求时,其底层线程池调度、I/O 多路复用模型(NIO/NIO2)、JVM 垃圾回收机制以及操作系统内核 TCP 队列均会承受极限考验。
|
8月前
|
数据采集 搜索推荐 安全
网站搭建好并部署阿里云服务器上,如何用好Swap让服务器保持稳定
本机配置2核6GB内存,新增3GB Swap作为应急缓冲。Swap虽比内存慢,但能有效避免内存耗尽时OOM Killer误杀Tomcat导致全站502。正常情况下几乎不启用,高峰时自动腾挪冷数据,显著提升稳定性,是低成本高收益的关键优化。
|
4月前
|
运维 监控 安全
网站制作日志分析-使用 awk/grep 命令快速统计 Nginx 访问日志
在企业级网站搭建与 Linux 服务器运维工作中,**Nginx 访问日志分析** 是诊断性能瓶颈、排查安全隐患与评估 SEO 效果的黄金手段。 标准的 Nginx 日志格式(Combined Log Format)通常包含:客户端 IP、访问时间、请求方法、请求 URL、HTTP 状态码、响应字节数、来源 Referer 以及 User-Agent 浏览器标识。 虽然市面上有很多图形化的日志分析工具(如 ELK、GoAccess),但在突发故障处理或轻量级服务器运维中,直接在 Linux 终端使用原生 **grep** 与 **awk** 命令组合,能够在几秒钟内完成对海量日志的筛选
|
3月前
|
弹性计算
阿里云轻量应用服务器的200M带宽,最高速度能跑到多少?会限速吗?
阿里云轻量应用服务器标称200M峰值带宽(即25MB/s),但为共享带宽上限,出入方向不可同时满载;非保底带宽,高峰期可能限速、丢包。适合轻量级应用,如需稳定带宽,建议选用ECS。阿里云轻量应用服务器官网:https://t.aliyun.com/U/dwftch
|
4月前
|
移动开发 前端开发 安全
网站建设用户体验-如何利用 HTML5 Video 标签实现全屏背景视频
在现代 Web 设计与响应式品牌网站搭建中,动态视频背景能够提供远超静态图片的视觉冲击力与情感共鸣。 然而,实现一个优秀的全屏背景视频绝非仅仅是将一个 `<video>` 标签放入页面那么简单。它需要解决一系列前端布局与性能调优痛点: 1. **全屏自适应与防拉伸(Cover 效果)**:视频必须像 CSS `background-size: cover` 一样,在任何分辨率屏幕下都能铺满视口且保持宽高比不变。 2. **移动端自动播放限制(Autoplay Policy)**:iOS 和 Android 浏览器出于节省用户流量与防止骚扰的考虑,对视频自动播放有着极严格的限制。
|
4月前
|
JavaScript 安全 前端开发
网站制作交互设计-移动端触控滑动(Swipe)事件的监听与处理
在移动端网页制作与响应式网站搭建中,用户与屏幕的交互主要依靠手指的触摸与滑动。 手势滑动(Swipe),即用户手指在屏幕上按下、按住平移一段距离后抬起的动作,是移动端最核心的交互手势之一(如轮播图左右切换、列表项左滑删除、侧边菜单抽屉式拉出)。 虽然 DOM 规范中并没有直接提供名为 onswipe 的原生事件,但我们可以通过监听 HTML5 提供的 Touch 事件序列(touchstart, touchmove, touchend),利用简单的几何坐标计算,精准识别出用户的滑动方向(上、下、左、右)与滑动距离。
|
4月前
|
域名解析 缓存 网络协议
网站搭建网络配置-深入理解 DNS 解析与 CNAME 别名记录
在企业级网站搭建与网络基础设施建设中,**域名系统(DNS,Domain Name System)** 是连接用户和网站源站服务器之间最核心的“数字纽带”。 通俗地说,计算机在网络世界中只能通过复杂的 IP 地址(如 `192.168.1.1`)来互相识别和通信。然而,对于普通访客和搜索引擎爬虫来说,记忆 IP 地址是几乎不可能的,人们更习惯于输入简单、易记的域名(如 `www.qxgro.com`)。DNS 的核心使命,就是充当网络世界的“电话本”,近乎瞬时地将人类可读的域名解析为计算机可识别的二进制 IP 地址。
|
5月前
|
缓存 弹性计算 应用服务中间件
高端网站搭建:Nginx 反向代理与动静分离架构配置详解
在现代企业级 Web 架构中,Nginx 凭借其极低的内存消耗和超强的高并发处理能力,成为了不可或缺的流量网关。特别是在阿里云 ECS 实例搭配 Alibaba Cloud Linux 3 的环境下,Nginx 能够充分利用操作系统的网络栈优化,实现惊人的吞吐量。 本文将详细介绍如何配置 Nginx 的反向代理与动静分离,将静态资源请求与动态接口请求完美剥离,从而大幅提升网站的整体响应速度。