Linux服务器部署.NET Core网站运行速度更快,最近打算把原来windows server上的网站迁到linux的云服务器上。 顺便记录一下CentOS7安装.NET运行环境,安装和配置Ngnix的过程。
首先安装.NET运行时
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum install -y dotnet-runtime-6.0
sudo yum install aspnetcore-runtime-6.0
安装后可以通过dotnet --info查看安装信息
发布网站,上传到服务器
这个很简单,右键Visual Studio项目解决方案,选择发布到文件夹即可。
目标运行时选择可移植或者Linux。
我没装ftp,所以直接把发布的文件夹压缩成zip格式,然后放到服务器上。
然后在CentOS服务器上通过wget -P /webs https://xxx/xx.zip命令把发布程序下载下来了。
这里我把xx.zip文件下载到/webs文件夹下面。
下载完成后,进入文件所在文件夹
cd /webs
然后运行命令解压文件
unzip dd.zip -d mvcweb
如果没有zip工具可以安装一下
yum install -y unzip zip
安装Ngnix
先安装Ngnix依赖包
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
然后下载nginx安装包
http://nginx.org/en/download.html 这是nginx官方下载网站,我们选择nginx-1.22.1
wget -P /webs http://nginx.org/download/nginx-1.22.1.tar.gz
这里我们也是下载到/webs文件夹下。下载完成后进入下载文件夹,解压nginx安装包。
tar -zxvf nginx-1.22.1.tar.gz
进入解压后的文件夹
cd nginx-1.22.1
然后配置Nginx
./configure
编译安装
make
make install
安装完成后修改nginx代理配置
vi /usr/local/nginx/conf/nginx.conf
这里修改Server下面的listen改为80,server_name改为公网IP或者域名。
然后在Location下面加上 proxy_pass http://localhost:5000; 这个地址为dotnet运行的地址(不设置端口的话默认5000端口)。
运行nginx
cd /usr/local/nginx/sbin
./nginx
启动.Net Core网站
cd /webs/mvcweb
dotnet DotNetCoreWeb.dll
这里默认以5000端口启动网站。
然后通过公网或者域名就能访问到网站了。
防火墙端口设置
如果无法访问的话可以尝试防火墙打开80端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent
这里permanent参数的意思是永久生效,没有此参数重启后失效
firewall-cmd --reload
重新载入防火墙
firewall-cmd --zone=public --list-ports
查看已经开启的端口
如果是使用例如阿里云等云服务器的话,端口安全控制可能是在控制台操作的。以本文为例,使用了阿里云的云服务器,可以在安全规则里加入一条80端口允许入站请求就可以了。
以上的操作过程可以保证让网站运行并且可以使用80端口访问。实际发布网站还需要做一些配置,比如作为服务启动,多域名多站点部署等,在后面的文章里详细介绍。
上面截图记录了网站成功运行了。有个地方值得注意的是程序读取文件时的路径,在Windows服务器上是不区分/和\的,但是在Linux里使用\是会找不到目录报错的。