Notice
Recent Posts
Archives
Today
Total
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Recent Comments
관리 메뉴

우당탕탕 개발일지

서버에서 c# 프로그램 실행하기 본문

Server

서버에서 c# 프로그램 실행하기

devchop 2023. 8. 7. 23:33

깃허브 주소 : https://github.com/devchop2/myFirstServer 

 

1. github에 테스트로 올려놓은 서버 프로젝트 (visual studio) 를 커밋해놓은 상태임. 현재는 리스너만 부착한 상태임. 

2. Digital Ocean을 사용중. 진짜 무작정 돈주고 빌림 ㅋ-ㅋ 임대한 서버에 ssh를 이용하여 접근해보자. private key 는 로컬에 저장되어있다.

## root : 유저이름, 뒤에는 ip 주소
ssh root@~.~.~.~

## git clone
## git clone <project address>
git clone https://github.com/devchop2/myFirstServer.git

 

#이슈1 

userName 과 password를 입력하라하는데 authentication fail exception 이 발생함. 

내 계정 비밀번호가 아니라 , access token 을 입력해줘야한다. 

github > 프로필 아이콘 > Setting > Developers > Personal Access Tokens > classic 에서 토큰을 하나 발급받은 다음 키를 복사한다.

로그인을 시도할때 계정은 ~~@gmail.com 을 입력하고 비밀번호 란에 발급받은 키를 넣어주면된다.

 

#이슈2

 현재 root계정으로 로그인하고있는데, 맨 처음 로그인 시에 유저를 하나 만든 후 권한을 부여하고 해당 유저로 접속하도록 하자. root게정을 사용하는것은 좋지 않다고 한다. 유저를 추가하고 권한을 부여하는 방법은 다음과 같다.(root계정과 같은 권한)

adduser rina #유저추가
chmod 740 /etc/sudoers #root 계정에서 해당 파일을 수정할 수 있도록 권한부여
vi /etc/sudoers 

#파일을 연 뒤 root ALL=(ALL:ALL) ALL 아래에 rina ALL=(ALL:ALL) ALL 을 추가한다.

chmod 440 /etc/sudoers #변경한 후 원상복구 해준다

su rina #유저변환

 

 

나의 경우 c# 콘솔 프로젝트를 실행하고 싶은데, 우분투에서 이 프로그램을 실행하기 위해서는  1) VS에서 .dll 형식으로 빌드, 2)그걸 우분투에서 실행 하는 순서로 된다고 한다.

 

3. 서버(우분투)에 .net 설치하기. 공식문서를 참고하도록 하자. 우분투 버전별로 설치 가능한 .net 버전이 다른것같은데, 우분투의 버전확인은 다음 명령어를 통해 확인 가능하다.

lsb_release -a

#설치완료시 --version 명령어를 통해 정상설치 확인하기
dotnet --version

https://learn.microsoft.com/ko-kr/dotnet/core/install/linux-ubuntu

 

.NET 및 Ubuntu 개요 - .NET

Ubuntu에 .NET SDK 및 .NET 런타임을 설치하는 다양한 방법을 보여 줍니다.

learn.microsoft.com

 

2. 로컬에서 프로젝트 경로 > bin/Debug/net7.0  으로 가보면 <프로젝트이름>.dll 과 <프로젝트이름>.runtimeconfig.json  두 개의 파일이 필요하다. 꼭 프로젝트 전체를 git설정을 해야하나 싶기도 하다.  실행이 정상적으로 되는것을 확인하였다. 로컬에서 프로젝트를 빌드한 다음 .dll과 .runtimeconfig.json 두 파일을 서버로 이동 ( 나의경우 프로젝트 전체가 깃설정되어있어서 우선 이걸 쓰도록한다. )

 

ipaddress를 외부에서 전달하고 싶어서, Main함수의 인자 string[] args 에 ipAdd를 넣도록 수정하였다.

public class Program
{
    static Listener _listener = new Listener();

    public static void Main(string[] args)
    {
        try
        {
        	//프로그램 실행할때 서버의 ipAdd를 같이 전달해야함.
            string ipAdd = "0.0.0.0";
            if (args != null && args.Length >= 1) ipAdd = args[0];

            Thread.Sleep(1000);
            int port = 8080;

            _listener.Init(ipAdd, port, () =>
            {
                return SessionManager.Instance.Generate();
            });


            while (true)
            {
                Thread.Sleep(250);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("[server] main thread exception. " + e.Message);
        }
    }
}

 

프로그램 실행은 다음시간에..!