网站建设实战:基于 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 的并发吞吐量。
相关文章
|
2月前
|
缓存 应用服务中间件 nginx
网站实现 CDN加速——从 Tomcat 9 到全站提速的完整实践
初次接解cdn的读者可能要问cdn服务是什么意思啊?读完这篇文章,您将明白cdn是什么意思,cdn服务在你脑海里不再是个抽象的概念,将会变成可在cdn加速服务器上可执行的步骤。 ## 一、为什么要做 CDN 加速 网站上线之后,随着访问量的增长,单一服务器直出的方案往往会暴露出明显瓶颈:北方用户访问南方机房延迟高、图片加载慢、首屏白屏时间长。即便在服务端已经做了 Tomcat 9 的 JVM 调优(`-Xms512m -Xmx1024m -XX:+UseG1GC`),也无法从根本上改善跨地域访问的物理延迟问题。
|
22天前
|
运维 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字)
336 4
|
21天前
|
缓存 弹性计算 应用服务中间件
高端网站搭建:Nginx 反向代理与动静分离架构配置详解
在现代企业级 Web 架构中,Nginx 凭借其极低的内存消耗和超强的高并发处理能力,成为了不可或缺的流量网关。特别是在阿里云 ECS 实例搭配 Alibaba Cloud Linux 3 的环境下,Nginx 能够充分利用操作系统的网络栈优化,实现惊人的吞吐量。 本文将详细介绍如何配置 Nginx 的反向代理与动静分离,将静态资源请求与动态接口请求完美剥离,从而大幅提升网站的整体响应速度。
|
3月前
|
数据采集 搜索推荐 安全
网站搭建好并部署阿里云服务器上,如何用好Swap让服务器保持稳定
本机配置2核6GB内存,新增3GB Swap作为应急缓冲。Swap虽比内存慢,但能有效避免内存耗尽时OOM Killer误杀Tomcat导致全站502。正常情况下几乎不启用,高峰时自动腾挪冷数据,显著提升稳定性,是低成本高收益的关键优化。
|
2月前
|
缓存 NoSQL 应用服务中间件
Redis 实现网站加速:在 Alibaba Cloud Linux 3 + Tomcat 9 架构下的缓存实战
Tomcat 9 的安装与配置流程——在 **Alibaba Cloud Linux 3**(即阿里云官方维护的企业级 Linux 发行版,基于 OpenAnolis 内核,与 CentOS 7/8 生态高度兼容)上,从下载压缩包、解压到 `/opt/tomcat9`,到配置 `systemd` 服务、编写 `setenv.sh` 优化 JVM 参数(`-Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200`),最终让 Tomcat 在 8080 端口稳定对外提供服务。
|
21天前
|
弹性计算 监控 Java
网站制作避坑指南:Tomcat 9 生产环境的 JVM 内存调优技巧
在 Java Web 应用部署中,Tomcat 是最常用的 Servlet 容器之一。然而,Tomcat 默认的 JVM 内存配置往往非常保守,根本无法满足生产环境的高并发需求。如果你使用的是阿里云 ECS 实例,并且搭载了针对云原生优化的 Alibaba Cloud Linux 3 操作系统,那么进行合理的 JVM 调优,将能最大化发挥云服务器的性能优势。 本文将结合实际生产经验,详细剖析 Tomcat 9 的 JVM 内存调优策略,带你避开常见的内存泄漏和频繁 GC(垃圾回收)陷阱。
|
2月前
|
负载均衡 关系型数据库 应用服务中间件
网站搭建好后采用高可用集群方案(Nginx 负载均衡 + 双机热备)实现网站稳定运行
网站建设好后,部署在云服务器上,网站的稳定运行直接关第到网站在搜索引挚排名中的表现,如果服务器中途崩溃,流量会被搜索引挚处罚, 最严重的结果就是网站流量给清零,这可不是站长们想要的结果,下面就详细说明通过负载均衡 + 双机热备方案实现网站稳定运行:
|
2月前
|
数据采集 开发框架 监控
【Azure Developer】IIS w3wp.exe 的 -m 参数:一个未被记录的管道模式标识
本文揭秘了IIS中未公开的`w3wp.exe -m`启动参数:`-m 0`表示Integrated管道模式(推荐),`-m 1`为Classic模式。该发现源于Application Insights自动检测失效的排查,解释了其为何不支持Classic模式——因HttpModule无法全面拦截请求。
183 12
|
2月前
|
存储 编解码 人工智能
阿里云服务器2核4G和4核8G租用价格:不同实例收费价格标准及最新活动价格
阿里云服务器提供2核4G与4核8G多种实例规格,价格从9.9元/月起,企业用户享199元/年特惠,满足不同性能需求。实例包括经济型e实例、通用算力型u1/u2i/u2a实例、计算型c9i实例等,适用于轻量级应用到企业级通用应用、视频处理、AI训练等多种场景。用户可根据业务需求选择实例规格与计费模式,长期使用建议包年包月。阿里云还提供优惠券和补贴活动,进一步降低成本,适合不同负载和预算的用户。
620 3
|
2月前
|
存储 人工智能 弹性计算
阿里云免费试用活动:云产品、解决方案、AI产品免费试用活动信息汇总
阿里云推出覆盖云产品、解决方案、AI产品的免费试用活动,降低用户使用门槛。云产品提供160+款零成本体验,含计算、存储、数据库等六大类。解决方案通过“试用点”验证技术方案,提供多种技术方案试用。AI产品提供超30款产品及7000万大模型tokens体验,含百炼平台、PAI平台等。用户注册并完成实名认证后可参与,试用活动助用户深入了解产品功能,验证产品性能,为采购决策提供依据,降低上云转型门槛。