Linux服务器部署.NET Core项目:发布文件上传及XAMPP运行异常求助
.NET Core 项目 Linux 服务器部署指南
一、发布文件上传到服务器的几种方法
- SCP 命令:本地终端直接传输,示例命令:
scp -r /本地发布文件夹/* 服务器用户名@服务器IP:/服务器目标路径 - SFTP 工具:用FileZilla、WinSCP这类图形化工具,连接服务器后直接拖拽文件到目标目录,操作直观适合新手。
- Git 同步:如果项目托管在Git仓库,服务器克隆仓库后直接拉取发布文件,适合需要频繁更新的场景。
二、XAMPP部署失败的原因
.NET Core项目是独立运行的Web应用,依赖.NET Core Runtime或SDK,并非PHP这类可直接放入Apache htdocs目录解析的项目。你看到文件夹目录是因为Apache默认开启了目录浏览功能,仅将发布文件作为静态资源展示,并未启动你的.NET Core应用。
三、正确部署的两种主流方案
方案1:直接运行应用(测试/小流量场景)
- 服务器安装.NET Core Runtime:
- 先导入微软包签名密钥:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.deb - 安装ASP.NET Core Runtime(以6.0版本为例):
sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-6.0
- 先导入微软包签名密钥:
- 进入服务器上的发布文件目录,启动应用:
dotnet 你的项目名称.dll
应用默认监听5000端口,服务器开放该端口后,即可通过http://服务器IP:5000访问。 - 后台运行应用(避免终端关闭后进程终止):
使用nohup命令:nohup dotnet 你的项目名称.dll > log.txt 2>&1 &
应用日志会输出到log.txt文件,方便后续排查问题。
方案2:Apache反向代理(生产环境,支持域名/SSL)
- 先按照方案1安装好.NET Core Runtime,确保应用能正常启动。
- 启用Apache的反向代理模块:
sudo a2enmod proxy proxy_http proxy_html rewrite
重启Apache使配置生效:sudo systemctl restart apache2 - 创建Apache虚拟主机配置文件(示例路径:
/etc/apache2/sites-available/你的项目.conf),内容如下:<VirtualHost *:80> ServerName 你的域名(或服务器IP) ProxyPreserveHost On ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/ ErrorLog ${APACHE_LOG_DIR}/你的项目-error.log CustomLog ${APACHE_LOG_DIR}/你的项目-access.log combined </VirtualHost> - 启用该虚拟主机配置:
sudo a2ensite 你的项目.conf
再次重启Apache:sudo systemctl restart apache2 - 设置.NET Core应用开机自启(通过systemd服务实现):
创建服务文件(示例路径:/etc/systemd/system/你的项目.service),内容如下:
执行以下命令使服务生效:[Unit] Description=你的.NET Core项目服务 [Service] WorkingDirectory=/服务器上的发布文件目录 ExecStart=/usr/bin/dotnet /服务器上的发布文件目录/你的项目名称.dll Restart=always RestartSec=10 User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.targetsudo systemctl daemon-reloadsudo systemctl enable 你的项目.servicesudo systemctl start 你的项目.service
配置完成后,应用会随服务器开机自动启动,异常退出时也会自动重启。
四、常见问题排查
- 访问出现502错误:检查.NET Core应用是否正常运行(执行
ps aux | grep dotnet),以及5000端口是否被占用(执行netstat -tulpn | grep 5000)。 - 权限不足问题:确保发布文件目录和日志目录拥有
www-data用户的读写权限,可执行命令:sudo chown -R www-data:www-data /发布文件目录路径。
内容的提问来源于stack exchange,提问作者Pangomi IT
相关产品推荐
相关产品推荐

