[架构之美]Ubuntu 系统上搭建内网穿透并结合 Nginx 的详细步骤(十三)

下面是Ubuntu 系统上搭建内网穿透并结合 Nginx 的详细步骤,适用于将本地服务暴露到公网访问的场景:

一、方案选择

1. 工具选型
  • frp(推荐):需公网服务器作为中转,稳定性高,适合长期使用
  • ngrok:提供临时域名,适合快速测试,免费版有连接限制
  • Cloudflare Tunnel:无需公网IP,但需域名托管在Cloudflare
2. 网络拓扑
公网用户 <--> [公网服务器:80/443] <--frp--> [内网Ubuntu主机:本地端口]
                    ↑
                  Nginx(SSL卸载/域名分流)

二、使用 frp + Nginx 实现内网穿透

1. 准备公网服务器
  • 假设公网服务器 IP:123.123.123.123
  • 域名:example.com(需解析到该IP)
<
<think>好的,我现在需要在Ubuntu系统上部署和配置一个可以公网访问的网站。首先,我需要了解整个过程的大致步骤。根据用户提供的引用内容,有几个关键点需要注意:安装运行环境、部署服务器软件(比如Odoo或Redmine)、配置数据库(如MySQL)、处理端口访问(比如8069或9200),以及可能的公网访问工具如cpolar。 首先,引用[1]提到要安装网站所需的运行环境,包括数据库。这里可能需要安装Apache或Nginx作为Web服务器,以及PHP、Python或其他后端语言的支持。例如,引用[4]中提到了使用Apache和Passenger,还有MySQL,这可能是一个典型的LAMP(Linux, Apache, MySQL, PHP/Python/Perl)堆栈。因此,我应该考虑安装LAMP环境。 接下来,安装数据库。根据引用[1]和[4],MySQL是常用的选择。安装MySQL后需要配置用户和权限,确保网站可以连接。 然后,部署网站代码。用户可能需要将网站文件放置在Apache或Nginx的目录下,比如/var/www/html,配置虚拟主机。例如,引用[2]提到部署Odoo服务器,这可能涉及到特定的配置文件和启动服务。 公网访问方面,引用[3]提到使用cpolar来映射本地端口到公网,这样可以通过公网IP和端口访问网站。另一种方法是配置服务器的防火墙(如UFW)打开HTTP(80)和HTTPS(443)端口,设置端口转发或使用动态DNS服务,如果服务器有公网IP的话。 另外,引用[4]中提到了安装ruby-dev解决依赖问题,这说明在部署过程中可能会遇到缺少依赖包的情况,需要根据错误提示安装相应的开发工具和库。 现在,我需要将这些步骤整理成一个清晰的流程:安装Web服务器、数据库,配置环境,部署网站代码,处理公网访问,以及解决可能的依赖问题。同时,需要注意安全性,比如配置防火墙,使用HTTPS等。 可能的遗漏点包括域名绑定、SSL证书安装、定期维护和备份策略。但用户当前的问题主要聚焦在部署和公网访问,所以这些可能是进阶步骤。 总结步骤应该是: 1. 安装必要的软件(Apache/Nginx, MySQL, PHP等)。 2. 配置数据库。 3. 部署网站代码到服务器目录。 4. 配置Web服务器虚拟主机。 5. 开放防火墙端口或使用内网穿透工具。 6. 测试访问,处理依赖或错误。 需要确保每一步都正确执行,验证每个环节是否正常工作。例如,安装完成后,先本地访问测试,再配置公网访问。</think>在Ubuntu系统上部署可公网访问的网站需遵循以下步骤结合环境配置、服务部署和网络设置: --- ### **1. 安装运行环境** - **安装LAMP堆栈** 执行命令安装Apache、MySQL和PHP: ```bash sudo apt update sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql ``` 验证安装: ```bash sudo systemctl status apache2 # Apache应显示为运行状态 curl http://localhost # 应返回Apache默认页 ``` - **配置MySQL** 运行安全脚本创建数据库用户: ```bash sudo mysql_secure_installation sudo mysql -u root -p CREATE DATABASE mywebsite; # 创建数据库 CREATE USER 'webuser'@'localhost' IDENTIFIED BY '密码'; GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES; ``` --- ### **2. 部署网站代码** - **上传代码到服务器目录** 将网站文件(如HTML/PHP)放置到Apache默认目录: ```bash sudo cp -r /本地路径/* /var/www/html/ sudo chown -R www-data:www-data /var/www/html/ # 设置权限 ``` --- ### **3. 配置Web服务器** - **设置虚拟主机(可选)** 编辑Apache配置文件: ```bash sudo nano /etc/apache2/sites-available/mywebsite.conf ``` 添加以下内容(示例): ```apache <VirtualHost *:80> ServerAdmin admin@example.com ServerName mywebsite.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> ``` 启用配置重载服务: ```bash sudo a2ensite mywebsite.conf sudo systemctl reload apache2 ``` --- ### **4. 配置公网访问** - **方法一:直接开放端口** 若服务器有公网IP: 1. 开放防火墙端口: ```bash sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS ``` 2. 通过浏览器访问公网IP(如`http://203.0.113.10`)[^3]。 - **方法二:内网穿透工具(无公网IP时)** 使用如cpolar暴露本地服务到公网: 1. 安装cpolar注册账户: ```bash curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash sudo systemctl enable cpolar ``` 2. 创建隧道映射80端口: ```bash cpolar http 80 ``` 3. 访问cpolar生成的公网URL(如`http://abcd1234.cpolar.io`)[^3]。 --- ### **5. 处理依赖问题** 若部署中出现类似`ruby-dev缺失`的错误(如引用[4]),需安装开发包: ```bash sudo apt install -y ruby-dev libxml2-dev # 根据具体报错调整包名 ``` --- ### **6. 验证与后续优化** - **本地测试** 在服务器内执行`curl http://localhost`确认网站正常运行。 - **HTTPS配置** 使用Certbot申请免费SSL证书: ```bash sudo apt install certbot python3-certbot-apache sudo certbot --apache -d mywebsite.com ``` - **定期维护** 更新系统补丁备份数据库: ```bash sudo apt upgrade -y mysqldump -u webuser -p mywebsite > mywebsite_backup.sql ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼岛_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值