搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习

首先安装源

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
然后安装.Net SDK

sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2
然后检查一下:

dotnet --version
执行这条命令如果打印出了版本号说明安装成功了,我的版本是2.2.102

然后由于我们需要在云端服务器上搭建,所以需要将本地的文件上传到服务器端,这里我使用ftp

第二步:Ubuntu18.04搭建ftp服务器

这里参考:https://blog.csdn.net/zxw136511485/article/details/79460671

                 https://www.cnblogs.com/xuanxufeng/p/6235494.html

首先安装vsftpd

sudo apt-get update
sudo apt-get install vsftpd
然后配置vsftpd,编辑/etc/vsftpd.conf这个文件

添加如下内容(至于这些什么意思可以参考上面的两个链接)

userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/allowed_users
seccomp_sandbox=NO
write_enable=YES
utf8_filesystem=YES

 

搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习


然后创建一个名为allowed_users的文件,这个文件里的内容就是你需要ftp传输的用户名称

vim /etc/allowed_users
(vim编辑器在打开一个不存在的文件时会自动创建该文件)

搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习

然后保存,接着重启服务:

sudo /etc/init.d/vsftpd restart
如果没问题,那我们的ftp服务器算是搭建好了,然后测试方式链接里都有的这里就不在阐述了。

如果在使用ftp上传时出现权限问题或者无法创建文件等情况,那很大可能就是服务器当前文件夹的权限不足,此时使用chmod命令提升权限,我一般直接给成777(所有权限),假设我要操作的文件夹是wwweb,举例如下:

sudo chmod 777 wwweb
到现在我们的运行环境也算是搭建好了,接下来我需要在windows10环境下使用VS2017来发布一个ASP.Net Core应用程序到我们的远程服务器上去

第三步:windows10中VS2017环境中:

搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习

首先新建一个项目如图,接着选择一个web窗体应用程序然后打开,默认会有一个示例网站,所以我们不需要写什么,直接发布我们的网站

搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习

由于我们使用的是ftp,所以直接选择使用ftp进行发布(这里有个细节没有说,我在服务器端创建了一个文件夹来保存我上传的网站)

搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习

然后保存,接着点发布,等待一定时间,网站就发布出去了!

网站发布完成后我们就可以在该目录下使用以下命令来启动我们的网站(我的网站名字是Hello_WebApplication)

dotnet Hello_WebApplication.dll
注意1:如果你使用的是dotnet run命令出现了一下这个问题:

Couldn't find a project to run. Ensure a project exists in /home/mine_web/wwweb/myfirstweb, or pass the path to the project using --project.

那么问题和解决方法在这里:https://*.com/questions/51926016/trying-to-run-a-net-core-helloworld-console-app-on-ubuntu

注意2:如果使用上面的命令出现如下警告,此时网站不能被正常打开:

Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.

Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to bind to https://localhost:5001 on the IPv6 loopback interface: 'Cannot assign requested address'.

此时使用这个命令解决:

dotnet Hello_WebApplication.dll --server.urls http://127.0.0.1:5000

这里参考了:https://cloud.tencent.com/developer/ask/23273

到这里我们的网站还不算完,这样做下来,只是能在服务器中访问,外网是不能访问的,所以我们还需要nginx反向代理:

第四步:nginx反向代理的安装和配置

sudo apt-get install nginx
配置

sudo vim /etc/nginx/sites-available/default
将这个配置文件内的这部分内容替换或者直接添加到最后,如下:

server {
    listen 80;
    server_name www.your_domain_name.com;
    location / {
        proxy_pass http://localhost:5000;
        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;
    }
}
然后保存,重新加载nginx即可:

sudo nginx -t
sudo nginx -s reload
此时就可以实现在外网使用域名或者ip地址去访问这个示例了。