在自有Linux服务器上通过个人域名部署ShinyApp的最简方法咨询
最简Shiny应用自有服务器域名访问部署方案
所有操作均基于你已完成CentOS系统初始化、Shiny Server安装、域名购买的前提,全程无额外成本,操作如下:
1. 部署应用到Shiny Server默认目录
Shiny Server安装完成后默认站点根目录为/srv/shiny-server/,直接上传应用即可完成基础部署:
- 确认Shiny Server运行状态:
systemctl status shiny-server,未运行则执行启动命令:systemctl start shiny-server && systemctl enable shiny-server - 把本地包含
app.R(或ui.R+server.R)的应用文件夹(示例命名为myapp)上传到服务器/srv/shiny-server/目录下 - 配置目录权限:
chown -R shiny:shiny /srv/shiny-server/myapp - 验证基础访问能力:在浏览器打开
http://你的服务器公网IP:3838/myapp,确认能正常访问应用后再进行后续操作
2. 配置域名解析
登录你的域名服务商后台,添加A记录:
- 主机记录:填你要使用的域名前缀,比如要使用
shiny.example.com访问就填shiny,要直接用根域名example.com访问就填@ - 记录值:填你的CentOS服务器公网IP
- TTL选择默认值即可,配置完成后等待1-10分钟生效,可通过本地执行
ping 你的域名验证解析是否指向服务器IP
3. 配置Nginx反向代理实现域名访问
用Nginx做反向代理即可直接通过域名访问应用,无需加端口后缀:
- 安装Nginx:
yum install -y nginx - 启动Nginx并设置开机自启:
systemctl start nginx && systemctl enable nginx - 新建Shiny应用配置文件:
/etc/nginx/conf.d/shinyapp.conf,写入以下内容:
server { listen 80; server_name 替换为你的实际域名; location / { proxy_pass http://127.0.0.1:3838/替换为你的应用文件夹名/; 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; # 适配Shiny的WebSocket连接要求 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } }
- 验证Nginx配置合法性:
nginx -t,返回success则执行重载命令:systemctl reload nginx - 放开系统防火墙端口:
firewall-cmd --add-service=http --add-service=https --permanent && firewall-cmd --reload,如果你的服务器有云服务商安全组,同步放开80、443端口 - 此时直接在浏览器输入你的域名即可正常访问Shiny应用
可选:配置免费HTTPS访问
如果需要升级为HTTPS协议,可使用免费的Let's Encrypt证书自动配置:
- 安装证书工具:
yum install -y certbot python3-certbot-nginx - 执行自动配置命令:
certbot --nginx -d 你的域名,按照提示输入邮箱、同意用户协议即可完成配置,证书会自动续期无需手动维护
内容的提问来源于stack exchange,提问作者TobKel
相关产品推荐
相关产品推荐

