ASP. NET Core 응용 프로그램 발표 및 배치 안내
이 편 은 주로 어떤 내용 을 포함 하고 있 습 니까?
도구 & 버 전
운영 체제
Windows 10
개발 도구
Visual Studio 2017(15.7.5)
SDK
.NET Core SDK 2.1
전송 도구
FlashFxp
도구 & 버 전
Linux Server
CentOS 7
SDK
.NET Core SDK 2.1
전송 도구
Vsftp
역방향 에이전트
Nginx 1.12.2
준비 작업
설명 하 다.
SDK
.NET Core SDK 2.1
프로젝트 템 플 릿
ASP.NET Core Web App(MVC)
항목 이름
HelloWeb
솔 루 션 이름
HelloWeb
솔 루 션 루트 디 렉 터 리
D:ProjectsTestHelloWeb
프로젝트 생 성 완료 후 Program. cs 파일 을 수정 하여 수 동 으로 시작 할 Url 을 http: / *: 5000 으로 지정 해 야 합 니 다.
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseUrls("http://*:5000");
}
http://*:5000
호 환 http://localhost:5000
, http://127.0.0.1:5000
, http:// ip:5000
가능 하여 리 눅 스 서버 에 배치 한 후 테스트 할 수 있 습 니 다.2. 현지 에 발표
1. 명령 행 발표
cmd 명령 행 에서 작업 하기
# (HelloWeb.csproj )
d: && cd D:\Projects\Test\HelloWeb\HelloWeb
# publish
dotnet publish -c release
#dotnet publish -h publish
#-c release Release
2. Visual Studio 그래 픽 인터페이스 조작
발표 가 완료 되면 D: Projects TestHello WebHello WebbinReleasenetcoreapp 2.1 publish 에서 발 표 된 파일 출력 을 볼 수 있 습 니 다.
cmd 명령 행 에서 동작:
#
d: && cd D:\Projects\Test\HelloWeb\HelloWeb\bin\Release
etcoreapp2.1\publish
#
dotnet HelloWeb.dll
#
Hosting environment: Production
Content root path: D:\Projects\Test\HelloWeb\HelloWeb\bin\Release
etcoreapp2.1\publish
Now listening on: http://[::]:5000
Application started. Press Ctrl+C to shut down.
브 라 우 저 를 통 해 접근: localhost: 5000, 정상 여 부 를 검증 합 니 다.
배치
1. 환경 설정 & 시작 테스트
XShell 을 통 해 CentOS 7 서버 에 연결 하여 작 동 합 니 다.
#
sudo mkdir -p /webroot/helloweb
#
sudo mkdir -p /webroot/helloweb/app
#
sudo mkdir -p /webroot/helloweb/logs
#
sudo chmod 777 /webroot/helloweb/app
sudo chmod 777 /webroot/helloweb/logs
#
sudo firewall-cmd --add-port=5000/tcp --permanent
#
sudo firewall-cmd --reload
명령 으로 시작:
# app dotnet
cd /webroot/helloweb/app/
dotnet HelloWeb.dll
# , :
Hosting environment: Production
Content root path: /webroot
Now listening on: http://[::]:5000
Application started. Press Ctrl+C to shut down.
이때 브 라 우 저 를 통 해 접근
http://:5000
하면 됩 니 다.사이트 스타일 이 제대로 불 러 오지 않 았 다 면 wwroot 아래 의 정적 파일 을 방문 할 때 404 일 것 입 니 다.
이것 은 ASP. NET Core 기본 값 이 명령 실행 중인 디 렉 터 리 를 응용 루트 디 렉 터 리 로 파일 을 읽 기 때 문 입 니 다.
따라서 HelloWeb. dll 이 있 는 디 렉 터 리 에서 dotnet 명령 을 실행 해 야 합 니 다. 그렇지 않 으 면 wwroot 디 렉 터 리 의 정적 파일 을 읽 을 수 없습니다.
2. 시작 스 크 립 트 설정
시작 하 는 방식 을 표시 합 니 다. XShell 의 연결 창 을 닫 으 면 이 응용 프로그램의 진행 이 꺼 집 니 다.그래서 nohup 명령 으로 시작 할 수 있 습 니 다. 스 크 립 트 예제:
nohup dotnet HelloWeb.dll &
nohup 은 프라이버시 가 시작 되 기 때문에 닫 힌 프로그램 은 프로 세 스 id 를 찾 아야 닫 을 수 있 습 니 다. 따라서 아예 시작 을 설정 하고 스 크 립 트 를 중단 하 는 것 이 더 편리 합 니 다.
sudo vi /webroot/helloweb/start.sh
스 크 립 트 내용:
#!/bin/sh
cd $(cd "$(dirname "$0")"; pwd)
APP_NAME=HelloWeb.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/helloweb/stop.sh
스 크 립 트 내용:
#!/bin/sh
cd $(cd "$(dirname "$0")"; pwd)
APP_NAME=HelloWeb.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!'
#
sh /webroot/helloweb/start.sh
#
start begin...
HelloWeb.dll
start successed
#
sh /webroot/helloweb/stop.sh
#
stop success!
4. 시동 & 역방향 프 록 시 설정
1. 시동 설정
sudo chmod +x /webroot/helloweb/stop.sh
#
sudo vi /usr/lib/systemd/system/helloweb.service
#
[Unit]
Description=helloweb
After=network.target
[Service]
WorkingDirectory=/webroot/helloweb/app
ExecStart=/usr/bin/dotnet /webroot/helloweb/app/HelloWeb.dll
ExecStop=/webroot/helloweb/stop.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
여러 버 전의. NET Core 환경 을 설정 했다 면 / usr / bin / dotnet 를 대응 하 는 경로 로 바 꾸 는 것 을 기억 하 세 요.
#
sudo systemctl enable helloweb
#
sudo systemctl start helloweb
2. Nginx 역방향 프 록 시 설정
#
sudo vi /etc/nginx/conf.d/helloweb.conf
#
server {
listen 80; # 80
server_name helloweb.mydomain.com; #
location / { #
proxy_pass http://localhost:5000;
}
error_page 500 502 503 504 /50x.html;#
location = /50x.html {
root /usr/share/nginx/html;
}
}
sudo nginx -s reload
#
sudo firewall-cmd --add-port=80/tcp --permanent
#
sudo firewall-cmd --reload
그리고 브 라 우 저 를 통 해 접근:
helloweb.mydomain.com
하면 됩 니 다.본 고 는 나의 독립 블 로그 에 첫 발 을 내 디 뎠 다.https://ken.io/note/asp.net-c...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ASP. NET Core 응용 프로그램 발표 및 배치 안내프로젝트 를 로 컬 디 렉 터 리 에 발표 합 니 다 왼쪽 에서 폴 더 를 선택 하고 설정 을 만 듭 니 다 XShell 을 통 해 CentOS 7 서버 에 연결 하여 작 동 합 니 다. 사이트 디 렉 터 리 를 만...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.