Asp.net Core项目部署到CentOS上并使用Nginx反向代理

1. 在发布项目之前,将项目的端口进行配置,如5000:

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                //配置访问端口
                .UseUrls("http://*:5000");
    }

http://*:5000路径匹配很多路径,如localhost:5000 ,  127.0.0.1:5000 , ip:5000

2. 配置CentOS的文件上传功能

安装开启vsftpd

#安装ftp功能
yum install -y vsftpd
#启动ftp功能
systemctl start vsftpd
#配置开机启动
systemctl enable vsftpd

修改配置

#打开配置文件 
vi /etc/vsftpd/vsftpd.conf
#禁用匿名用户
anonymous_enable=NO

创建ftp用户及配置密码,修改权限

#创建用户
useradd -d /var/www -s /sbin/nologin userName
#修改密码
passwd userName
#配置权限
chmod 777 /var/www

配置防火墙,开放文件上传功能

#开放ftp功能
firewall-cmd --add-service=ftp --permanent
#重启防火墙
firewall-cmd --reload

关闭SELinux内核

#查看内核状态
sestatus
#关闭内核 
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 
#重启系统
reboot

3. 安装.Net Core SDK

#获取资源
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

#更新yum
sudo yum -y update

#安装SDK
sudo yum -y install dotnet-sdk-2.1

#检测效果
dotnet --version

4. 配置Nginx

安装Ngixn反向代理

#获取资源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#安装nginx
sudo yum -y install nginx

启动nginx,设置开机启动

#启动nginx
sudo systemctl start nginx

#nginx开机启动
sudo systemctl enable nginx

防火墙开放80端口

#防火墙开放80端口
firewall-cmd --add-port=80/tcp --permanent

#重启防火墙
firewall-cmd --reload

新增配置文件夹

#新增文件夹
sudo mkdir /etc/nginx/server
#打开默认配置文件
sudo vi /etc/nginx/nginx.conf
#在http属性下增加:
include /etc/nginx/server/*.conf;

新增配置文件

#新建配置文件
sudo vi /etc/nginx/server/default.conf

#配置如下所示
server {
    listen       80;        #监听端口
    server_name  www.aa.com; #监听的域名
    location / {            #转发
        proxy_pass https://localhost:5000; 
    }
    error_page   500 502 503 504  /50x.html;   #错误页
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

关于负载均衡

upstream serverswitch {
    server 127.0.0.1:8080;
    server 127.0.0.1:8090;
}
server {
    listen       80;        #监听端口
    server_name   www.aa.com; #监听的域名
    location / {            #转发
        proxy_pass https://serverswitch; 
    }
    error_page   500 502 503 504  /50x.html;    #错误页
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

5. 将项目发布到本地

右键项目---发布---发布到文件夹

6. 在系统上创建目录,修改权限

#项目根目录
sudo mkdir -p /webroot/helloworld

#应用目录
sudo mkdir -p /webroot/helloworld/app

#日志目录
sudo mkdir -p /webroot/helloworld/logs

#修改读写权限
sudo chmod 777 /webroot/helloworld/app
sudo chmod 777 /webroot/helloworld/logs

7. 配置启动关闭脚本

启动脚本配置

#创建启动脚本
sudo vi /webroot/helloworld/start.sh

#以下是脚本内容

#!/bin/sh
cd $(cd "$(dirname "$0")"; pwd)
APP_NAME=HelloWorld.dll    #这里是项目主类库
echo "start begin..."    #向命令行发出提示
echo $APP_NAME

cd app
nohup  dotnet $APP_NAME >>../logs/info.log 2>>../logs/error.log &
cd ..

sleep 5

if test $(pgrep -f $APP_NAME|wc -l) -eq 0
then
   echo "start failed"
else
   echo "start successed"
fi

关闭脚本

#创建关闭脚本
sudo vi /webroot/helloworld/stop.sh

#以下是脚本内容
#!/bin/sh
cd $(cd "$(dirname "$0")"; pwd)
APP_NAME=HelloWorld.dll    #项目主类库
    
PROCESS=`ps -ef|grep $APP_NAME|grep -v grep  |awk '{ print $2}'`
while :
do
  kill -9 $PROCESS > /dev/null 2>&1
  if [ $? -ne 0 ];then
   break
  else
   continue
fi
done

echo 'stop success!'

8. 配置开机启动

#将停止脚本的执行权限开启
sudo chmod +x /webroot/helloworld/stop.sh

#创建服务
sudo vi /usr/lib/systemd/system/helloworld.service


#以下是文件的内容
[Unit]
Description=helloworld
After=network.target

[Service]
WorkingDirectory=/webroot/helloworld/app
ExecStart=/usr/bin/dotnet /webroot/helloworld/app/helloworld.dll
ExecStop=/webroot/helloworld/stop.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

配置服务开机启动

#设置服务开机启动
sudo systemctl enable helloworld

#启动服务
sudo systemctl start helloworld

猜你喜欢

转载自blog.csdn.net/Day_and_Night_2017/article/details/90174655