반응형

nginx로 서버를 만들고나면 https 설정이 필요하다.

 

그리고 여기에서 SSL 인증서가 필요하다.

 

유료 인증서도 있지만 무료로 받는 방법도있다.

 

물론 제한적 무료다. (3개월 마다 갱신해야 한다. 물론 자동화하여 평생 무료로 쓸 수 있다.)

 

 

 

1. Let’s Encrypt 설치 (ubuntu 24.04 환경)

 

sudo apt-get update
sudo apt-get install certbot
sudo apt-get install python3-certbot-nginx

 

위의 3가지 커맨드로 리스트 업데이트 및 'certbot'을 설치한다.

 

 

2. 도메인 연결

 

서버의 ip주소를 도메인과 연결한다. (가비아 등등)

 

 

3. ubuntu에서 인증서(certbot) 설정하기

 

sudo certbot --nginx -d example.com -d www.example.com

 

example.com에 내 도메인을 넣으면된다.

 

커맨드를 입력하면 몇가지 질문을 한다.

 

1) E-mail address : 사용자 확인 겸 인증서 만료가 다가오면 메일로 알려주는 역할을 한다. 자주 사용하는 메일을 입력해준다.

2) 서비스 동의 : 서비스 동의 사항이다. 그냥 'Y'를 입력한다.

3) E-mail 제공 동의 : 제단에 E-mail주소를 공유할지 선택한다.

 

** 이미 nginx를 설정해 놓은 상태여서 도메인을 따로 묻지는 않는다.

 

 

4. nginx를 재실행 한다.

systemctl restart nginx.service
systemctl status nginx.service

 

 

certbot으로 인증서를 만들면 자동으로 nginx 설정파일을 자동으로 수정해준다.

 

아래 설정에서 '# managed by Certbot'이 붙은 내용이 자동으로 설정된 내용이다.

# /etc/nginx/sites-available/default

server {
    server_name   example.com www.example.com;
    location / {
	root /var/www/wwwroot;
	index index.html index.htm;
	try_files $uri $uri/ /index.html;
	expires 30d;
    }

    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}


server {
    # if ($host = example.com) {
        # return 301 https://$host$request_uri;
    # } # managed by Certbot

    listen        80;
    server_name   example.com;
    return 301 https://$host$request_uri; # managed by Certbot  
}

 

 

 

-- 인증서 만료일 확인 방법

sudo certbot certificates

 

 

5. 인증서 자동 갱신 방법

 

Let’s Encrypt 인증서는 90일 주기로 만료된다. (물론 재신청 가능하다.)

 

ubuntu의 crontab을 이용하여 주기적으로 인증서 갱신을 실행시켜 기한 제한 없이 사용하면 된다.

 

 

crontab -e

 

1 ~ 4중 하나를 선택한다. (에디터 선택, 아무거나 선택해도 무관)

 

 

0 12 * * * /usr/bin/certbot renew --quiet

 

에디터 주석 맨 밑에 위의 한줄을 추가한다.

 

인증서 만료일이 30일 이내인 경우 인증서를 갱신하는 코드이다.

 

앞 5개의 숫자는 순서 시점을 나타낸다. (서버 시간 기준)

 

분(0~59)   시간(0~23)   일(1~31)   월(1~12)   요일(0~7)  <*(별)을 설정한 경우 매번 실행>

 

 

crontab -l

 

위의 커맨드로 실행될 리스트를 확인한다.

반응형

'C# > Blazor' 카테고리의 다른 글

우분투 포트 여는 방법 (ubuntu ipstables)  (1) 2024.10.14
반응형

nginx로 blazor server app을 만들고 정상접속이 되는것을 확인했다.

 

그러다 서버를 재부팅 하게 되었는데 서버가 응답이 없다.

 

왜그런지 모르겠다.

 

포트 설정으로 포트도 열어 놨는데 안된다.

 

 

 

-- 해결책

포트를 다시 열었더니 된다.

 sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
 sudo iptables -I OUTPUT 1 -p tcp --dport 443 -j ACCEPT

 

포트를 다시 닫는건

iptables -I INPUT -p tcp --dport 80 -j DROP
iptables -I OUTPUT -p tcp --dport 443 -j DROP

 

iptables의 설정 내역을 보는 방법

iptables --list
iptables -L
반응형

'C# > Blazor' 카테고리의 다른 글

nginx SSL 설정하기 (Let’s Encrypt 인증서)  (0) 2024.10.15
반응형

1. Point

  • 엑셀 셀에 폰트, 색상(color), bold, italic 및 정렬을 적용
  • 스타일에 추가하여 여러 셀에 한번에 적하는 방법

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();

                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");



                // 셀에 적용할 스타일 생성
                var style1 = workbook.CreateCellStyle();
                style1.FillForegroundColor = HSSFColor.Blue.Index2;
                style1.FillPattern = FillPattern.SolidForeground;
                style1.Alignment = HorizontalAlignment.Center;
                style1.BorderBottom = BorderStyle.Medium;
                style1.BorderRight = BorderStyle.DashDotDot;

				
                // 폰트 설정
                IFont font1 = workbook.CreateFont();
                font1.FontName = "맑은 고딕";
                font1.Color = IndexedColors.Red.Index;
                font1.IsBold = true;
                font1.Underline = FontUnderlineType.Double;
                font1.IsItalic = true;
				
                // 앞서 설정한 셀 스타일에 폰트 추가
                style1.SetFont(font1);
                
                
                // 셀 선택 및 스타일 적용
                var cell2 = sheet1.CreateRow(0).CreateCell(0);
                cell2.CellStyle = style1;
                cell2.SetCellValue(0);



                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 엑셀 셀 스타일을 변수로 만들어 원하는 셀에만 적용
  • 셀 색상 넣기
  • 셀 테두리 설정

 

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


                // 셀에 적용할 스타일 생성
                var style1 = workbook.CreateCellStyle();
                style1.FillForegroundColor = HSSFColor.Blue.Index2;
                style1.FillPattern = FillPattern.SolidForeground;
                style1.Alignment = HorizontalAlignment.Center;
                style1.BorderBottom = BorderStyle.Medium;
                style1.BorderRight = BorderStyle.DashDotDot;

                // 스타일 적용할 셀 선택
                var cell2 = sheet1.CreateRow(0).CreateCell(0);
                cell2.CellStyle = style1;
                cell2.SetCellValue(0);


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • NPOI 엑셀 셀 크기 설정 방법
  • NPOI 엑셀 셀 크기 자동으로 설정 

 

 

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");

				
                IRow row = sheet1.CreateRow(0);
                // 셀 높이 (point 단위)
                row.Height = 30 * 80;
                row.CreateCell(0).SetCellValue("this is content");
                // Column 크기 자동
                sheet1.AutoSizeColumn(0);


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 엑셀 셀 병합 방법
  • 셀 병합 후 값 넣기

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


                // 셀 병합
                //// 시작 row, 끝 row, 시작 column, 끝 column
                sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));
				
                // 병합된 셀에 값 넣기 (항상 병합된 셀 중 첫칸 기준으로 데이터를 넣어야 한다)
                sheet1.CreateRow(0).CreateCell(0).SetCellValue("Cell Merge");
                // 병합된 셀 중간에 값을 넣으면 아무값도 써지지 않는다
                sheet1.CreateRow(1).CreateCell(3).SetCellValue("Cell Merge");


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 셀에 엑셀 함수를 넣어 계산하기

 

 

 

반응형

 

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();

                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


                // A1 ~ A11까지 0~10까지 숫자 넣기
                for (int i = 0; i < 11; i++)
                {
                    sheet1.CreateRow(i).CreateCell(0).SetCellValue(i);
                }


                // 셀에 함수 넣기
                // 엑셀에서 사용되는 함수에 앞에 '='만 빼고 넣으면 된다
                sheet1.CreateRow(11).CreateCell(0).SetCellFormula("sum(A1:A11)");


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 생성한 엑셀 시트의 셀에 값 넣기
  • 반복문을 이용한 셀 값넣기
  • 변수를 이용한 셀 값 넣기

 

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.core.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


				// 셀에 값 넣기
                var cell_1 = sheet1.CreateRow(0).CreateCell(0);

                cell_1.SetCellValue("Cell_A0");

                for (int i = 1; i < 11; i++)
                {
                    sheet1.CreateRow(i).CreateCell(0).SetCellValue("Cell_A" + i + " (for loop)");
                }

                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형

+ Recent posts