ubuntu16.04 + nginx + asp.net core webapi + vue + mssql2017
如果还没安装ubuntu系统,请参考这里 虚拟机安装ubuntu16.04详细步骤
1.安装 asp.net core2.2
官方链接
只需要安装 ASP.NET Core 运行时,因为它同时包括 .NET Core 和 ASP.NET Core 运行时。
- 在终端中,运行以下命令。 每台计算机只需要执行一次此操作。
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
- 在终端中,运行以下命令 安装 ASP.NET Core 运行时。
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install aspnetcore-runtime-2.2
2.安装 nginx
终端执行以下命令
# 安装nginx
sudo apt-get install nginx -y
# 启动nginx
sudo service nginx start
打开浏览器输入127.0.0.1 显示如下内容则表示安装成功
3.安装 mssql2017
3.1. 导入公共存储库 GPG 密钥:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
3.2. 注册 Microsoft SQL Server Ubuntu 存储库
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"
3.3. 运行以下命令以安装 SQL Server:
sudo apt-get update
sudo apt-get install -y mssql-server
3.4. 包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本。
sudo /opt/mssql/bin/mssql-conf setup
3.5. 完成配置后,验证服务是否正在运行:
systemctl status mssql-server --no-pager
3.6. 如果计划远程连接,可能还需要在防火墙上打开 SQL Server TCP 端口(默认值为 1433)。
- 一般情况下,Ubuntu安装好的时候,iptables会被安装上。如果没有,执行下面命令
sudo apt-get update
sudo apt-get install iptables
- 安装完后,开放8000端口,使用下面命令:
sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
- 保存规则
iptables-save
3.7. 安装 SQL Server 命令行工具
- 导入公共存储库 GPG 密钥。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- 注册 Microsoft Ubuntu 存储库。
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
- 更新源列表,并使用 unixODBC 开发人员包运行安装命令。
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
- 可选:向 bash shell 中的 PATH 环境变量添加 /opt/mssql-tools/bin/ 。
要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH : (因为我要在外部通过mssql管理工具连接linux的数据库,所以我执行了下面的命令)
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
重要 提示内存不足
在执行安装的过程中会遇到sqlservr: This program requires a machine with at least 2000 megabytes of memory.
解决方法:
cd /opt/mssql/bin/ # 进入目录
mv sqlservr sqlservr.old # 保存备份文件
python # 使用python修改内存限制代码
>>>oldfile = open("sqlservr.old", "rb").read()
>>>newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")
>>>open("sqlservr", "wb").write(newfile)
>>>exit()
这样就把限制变成了512兆 ,再执行sudo /opt/mssql/bin/mssql-conf setup
重要 提示 /bin/bash: /opt/mssql/bin/sqlservr: Permission denied 执行 以下命令
chmod -v 777 /opt/mssql/bin/sqlservr
4.部署项目
4.1. 准备工作
- asp.net core webapi 项目
- vue 项目
需要把这两个项目先复制到ubuntu里面,如下图所示
4.2. nginx配置文件
因为要使用nginx做asp.net core网站的反向代理,我们需要修改nginx的默认配置文件/etc/nginx/sites-enabled/default ,将以下内容替换默认配置:
upstream api {
server 127.0.0.1:5000;
}
# api项目
server {
listen 8080; # 监听8080端口 转发到 5000
server_name localhost:8080;
location /{
proxy_pass http://api;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# vue 项目
server {
listen 80;
listen [::]:80;
server_name localhost:80;
root /home/su/public/vue-admin/dist; # 项目的根目录
index index.html; # 首页
location / {
try_files $uri $uri/ @router;
}
location @router {
rewrite ^.*$ /index.html last;
}
}
如果文件只读,需要执行如下命令修改权限(需要root)
修改后,重启 nginx 执行如下命令
nginx -t # 检查配置文件
nginx -s reload # 重启nginx
4.3. 守护进程
在/etc/systemd/system 下新建文件,文件名以.service结尾,配置内容为(注意:中文注释需要删掉,否则部分 Linux 服务器会报错):
[Unit]
Description=ShopApi #服务描述,随便填就好
[Service]
WorkingDirectory=/home/su/public/shopapi #工作目录,填你应用的绝对路径
ExecStart=/usr/bin/dotnet /home/su/public/shopapi/App.dll #启动:前半截是你dotnet的位置(一般都在这个位置),后半部分是你程序入口的dll,中间用空格隔开
Restart=always
RestartSec=25 #如果服务出现问题会在25秒后重启,数值可自己设置
SyslogIdentifier=ShopApi
User=root #配置服务用户,越高越好
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
写完配置文件后保存,输入指令确认服务:
systemctl enable (你的服务名).service
例如:
systemctl enable core.api.service
然后启动服务
systemctl start core.api.service
然后查看一下服务状态 出现状态说明服务运行正常。
systemctl status core.api
再次输入127.0.0.1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」