기존반든ec2의 vpc 변경 못하게 만들어놨다.

기존에 ec2가있을때 모든것을(안의 세부적인내용까지) 복사하고싶을때 

 

 

 

 

 

ec2 작업- 이미지 및 템플릿 - 이미지생성 

 

 

 

이름설정 후 생성

 

 

 

 

 

상태가 대기중이다가

 

 

 

 

 

 

이렇게 사용가능으로 바뀌면 

 

 

 

 

선택해서 ami로 인스턴트시작하기를 누른다 

 

 

 

 

기존 인스턴트만드는것과 비슷하게 이름 설정 후 (기존저장된게 아닌 다른 머신으로 바꿀수도있다.)

 

 

 

 

유형과 키페어 보안그룹 모드 설정 후 인스턴트 시작 하면 저장했던게 그대로 만들어진다.

 

내부의 서버 재시작만 해주면된다.

반응형

'aws' 카테고리의 다른 글

https 적용 (로드밸런스)  (0) 2023.03.16
aws route53 도메인 설정하기 (가비아)  (0) 2023.01.02
ec2 생성  (0) 2022.11.29
vpc 설정  (0) 2022.11.29

Elastic Load Balancer을 사용하여 https 설정 후 

 

access로그에 계속 ELB-HealthChecker/2.0라고 떠서 다른로그를 볼수가없을때

 

 

 

ubuntu

cd /etc/nginx/sites-enabled/

nano 자신의 설정값 접속 

 

 

map $http_user_agent $ignore_ua {
default                 1;
"ELB-HealthChecker/2.0" 0;
}

server {
        client_max_body_size 0;
        listen 80;
        server_name 내아이피주소;

        location = /favicon.ico { access_log off; log_not_found off; }

        location / {
                access_log /자신경로/logs/nginx_access.log combined if=$ignore_ua;
                error_log  /자신경로/logs/nginx_error.log;

                include proxy_params;
                proxy_pass http://unix:/tmp/test.sock;
        }
}

 

 

sudo systemctl restart nginx

반응형

'python > fastapi' 카테고리의 다른 글

jwt access refresh token에 대한 정의  (0) 2022.09.07
sqlmodel create_all table생성 안될때  (0) 2022.08.31
[Errno 48] Address already in use  (0) 2022.08.29

https 적용하는 방법은 크게 2가지다 

cloudfront 사용 or load balancing 사용 

로드밸런스를 사용하겠다.

 

route53에 도메인과 ec2가 생성되어있다는 전제로 시작한다.

 

 

1.Certificate Manager에 들어가서 인증서 생성 요청

 

 

 

 

다음

 

 

 

 

원하는 도메인 주소를 입력 후 생성 (단일로 써도되지만 *.을 쓰면 모두적용된다) 다른건 건들게없다 

 

 

 

 

다만든후 인증서를 클릭한다

 

 

 

인증서 상세페이지에 도메인부분에 Route 53에서 레코드생성

 

 

 

 

route53에 구매한 도메인이 뜰거다 레코드생성 

 

 

 

route 53에서 구매한 도메인에 들어가면 인증서에 등록된 cname 이름,값 들이 들어가있다.

 

 

 

2.ec2로와서 로드밸런싱-대상그룹 을 클릭 후 생성 

 

 

 

 

대상그룹 이름만 쓰고 다른건 건들게없다 

 

 

 

 

생성 후 아래 화면에서 보류중인것으로 포함을 꼭눌러야한다

 

 

 

 

 

내려갔으면 대상 그룹 생성 

 

 

 

 

 

3.이제 ec2의 로드밸런서 생성

 

 

 

application load balancer를 클릭

 

 

 

 

 

밸런서 이름을 적고 ex)test-ALB

 

 

 

 

가지고있는 기본 vpc의 서브넷들 모두 선택

 

 

 

 

보안그룹 설정후 https를 사용할거기때문에 https만 있어도되지만 http도 사용하려면 리스터 추가로 http도 추가해준다 

 

 

 

 

 

인증서는 아까 만든 인증서 선택 그다음 로드밸런서 생성

 

 

 

 

로드밸런서 상태가 active로바뀌면 사용가능

 

 

 

 

 

4.이제 route53으로 돌아와서 가지고있는 도메인 클릭 후 레코드 생성 클릭 후 

원하는 이름과 ,레코드유형 A

별칭 선택 후 load balancer -리전 서울- 아까만든 밸런서클릭하고 만들면 잠시후에 적용된다

 

 

vpc 기본설정대신 만들어서했더니 문제가생겨서 고생을 하였다..

반응형

'aws' 카테고리의 다른 글

ec2 복사하여 재생성 ami  (0) 2023.03.17
aws route53 도메인 설정하기 (가비아)  (0) 2023.01.02
ec2 생성  (0) 2022.11.29
vpc 설정  (0) 2022.11.29

링크를 누르면 앱내의 특정페이지로 가게끔 작업하자

 

다이나믹링크 패키지 설치 

https://pub.dev/packages/firebase_dynamic_links

 

링크 만드는방법중 파이어베이스 내에서 만드는방법과 코드로 따로만드는방법이있는데 

코드로 만들어야 유동적인 파라미터값을 넣을수 있어서 코드로 만드는방법을 사용한다.

 

 

링크생성부분

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/?name='hoho'&age='30' "), //이름과 나이를 파라미터로
  uriPrefix: "https://example.page.link",//파베에있는 https://page.link로 끝나는 메인링크
  androidParameters: const AndroidParameters(packageName: "com.example.app"),
  iosParameters: const IOSParameters(bundleId: "com.example.app"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

 

링크생성 완료 

 

 

 

 

앱 링크받을 셋팅

링크를 열기위한 셋팅을 먼저 해줘야한다.

android

android-app-src-main-AndroidManifest.xml로 들어가서

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>

application-activity안에 넣는다 

 

<application
    android:name="${applicationName}"
    android:icon="@mipmap/launcher_icon"
    android:usesCleartextTraffic="true">
    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:exported="true"
        android:hardwareAccelerated="true"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:windowSoftInputMode="adjustResize">
        <meta-data
            android:name="io.flutter.embedding.android.NormalTheme"
            android:resource="@style/NormalTheme" />

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data
                android:host="example.page.link" //파베에있는메인주소
                android:scheme="https"/>
        </intent-filter>
    </activity>

 

ios

xcode로 들어가서 

Runner - Singning & Capabilities - +Capability클릭하여 Associated Domains를 추가한다 

domains에 applinks:파베에있는메인주소

ex)applinks:example.page.link을 추가한다

 

 

 

 

링크받는부분

이제 main에서 꺼진상태에서 값받는부분과 포,백그라운드 상태서 값받는부분을 넣고 

//앱꺼졌을시
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
handleLinkData(initialLink);

//포그라운드,백그라운드용
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  handleLinkData(dynamicLinkData);
}).onError((error) {
  print("@@dynamic link listen error=${error}");
});
void handleLinkData(PendingDynamicLinkData? data) {
  final Uri? uri = data?.link;
  if (uri != null) {
    final queryParams = uri.queryParameters;
    if (queryParams.isNotEmpty) {
      String? name = queryParams["name"];
      String? age = queryParams["age"];
      if (name != null) {
        //name with 이동처리 
      }
      if (age != null) {
        //age with 이동처리
      }
      // verify the username is parsed correctly
      print("@@My name is: $name / age is $age");
    }
  }
}

 

만약 셋팅이 잘못되었다면

 

앱이 깔려있어도 앱에 접속이안되고 다운받는 스토어로 갈것이다.

 

 

참고:

https://firebase.google.com/docs/dynamic-links/flutter/create?hl=ko

https://firebase.google.com/docs/dynamic-links/flutter/receive?hl=ko

반응형

'flutter > study' 카테고리의 다른 글

flutter fcm push  (0) 2023.03.30
google map 연동  (0) 2022.09.25
money comma  (0) 2021.11.05
flutter 현지화  (0) 2021.07.28
TextField 사용시 바깥부분 터치시 focus 잃게하는방법  (0) 2021.07.28

ios

xcode - Runner-AppDelegate.swift에 들어간다 

 

import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    self.window.makeSecure()
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
    override func applicationWillResignActive(
      _ application: UIApplication
    ) {
      self.window.isHidden = true;
    }
    override func applicationDidBecomeActive(
      _ application: UIApplication
    ) {
      self.window.isHidden = false;
    }

}
  extension UIWindow {
    func makeSecure() {
     let field = UITextField()
     field.isSecureTextEntry = true
     self.addSubview(field)
     field.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
     field.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
     self.layer.superlayer?.addSublayer(field.layer)
     field.layer.sublayers?.first?.addSublayer(self.layer)
   }
 }

 

빨간 부분을 추가하면 캡쳐서 검은화면으로 나온다.

 

 

android

https://pub.dev/packages/flutter_windowmanager/example

라이브러리 설치 후 main에 넣는다

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
  runApp(MyApp());
}

 

캡처시 문구가뜬다.

 

 

참고:
https://stackoverflow.com/questions/52317217/flutter-disable-screenshot-capture-for-app

https://stackoverflow.com/questions/72380810/how-to-prevent-taking-screen-shoot-in-flutter-ios

반응형

 

flutter 만깔고 터미널에 adb명령어를 치면 adb command not found 이라고 뜬다면

 

finder- 자기계정폴더 - command+ shift + . 을 눌러서 숨겨진 폴더보기 활성화 후 

zprofile을 찾아서 연 후 

export PATH=~/Library/Android/sdk/tools:$PATH
export PATH=~/Library/Android/sdk/platform-tools:$PATH

값을 넣고 저장 

source ~/.zprofile

입력하면 adb 명령어가 발동

 

 

참고:https://stackoverflow.com/questions/10303639/adb-command-not-found

반응형

aws route 53에 들어가서 호스팅역역-호스팅 영역 생성 클릭

 

 

 

 

타 사이트에서 구매한 도메인 이름을 입력 후 호스팅 영역 생성

 

 

 

 

만들면 유형 NS와 SOA를 가진 같은 레코드가 2개 생김 이값들을 도메인 구입한 사이트에 들어가서 입력해줘야한다

 

 

 

가비아->내 도메인 네임서버 설정에 들어간다

 

 

 

 

 

aws의 NS 타입 의 값/트래픽 라우팅 대상 값들을 뒤에 . 빼고 다 넣고 적용 

 

 

 

이제 다시 route 53으로 돌아와 생성한 주소를 선택 후 레코드생성 클릭

 

 

 

 

이제 실제 사용가능하게 도메인을 생성해야한다.

빈칸으로 생성시 원하는 도메인으로 접속가능 

레코드에 이름을 붙이면 도메인앞에 추가로 붙는다ex) 원래 도메인 test.kr -> test.test.kr

이제 값에 ec2에서 생성한 고정 ip주소값을 넣고 레코드 생성 하면 끝 

 

 

 

 

 

A유형으로 만들어지고 대략 하루이상 지나면 적용이 된다 바로적용안됨

반응형

'aws' 카테고리의 다른 글

ec2 복사하여 재생성 ami  (0) 2023.03.17
https 적용 (로드밸런스)  (0) 2023.03.16
ec2 생성  (0) 2022.11.29
vpc 설정  (0) 2022.11.29

필요 라이브러리 

qrcode -qr코드 생성

https://pypi.org/project/qrcode/

reportlab - 대량생성한 qr코드 이미지를 하나의 pdf 로 만들어줌

https://pypi.org/project/reportlab/

 

c = canvas.Canvas('/Users/thomas/Desktop/coupon/coupons.pdf')
y = 0
x = 0
for i in range(0, 100):
        uuid1 = shortuuid.uuid()
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=5,
            border=3,
        )
        qr.add_data(uuid1)
        qr.make(fit=True)
        img = qr.make_image(fill_color=(255, 126, 54), back_color="white").convert('RGB')
        
        # 중앙에 이미지 추가를 원할시 
        # face = Image.open('/Users/thomas/Desktop/images/Image.jpg')
        # face.thumbnail((60, 60))
        # pos = ((img.size[0] - face.size[0]) // 2, (img.size[1] - face.size[1]) // 2)
        #
        # img.paste(face, pos)
        
       	img.save(f"/Users/thomas/Desktop/coupon/qrcode-쿠폰{i}.png")
        
        x += 1
        if i % 10 == 0:
            y += 1
            x = 1
            
        c.drawImage(f'/Users/thomas/Desktop/coupon/qrcode-쿠폰{i}.png', x * 1.5 * cm, y * 1.5 * cm, 1.5 * cm,1.5 * cm)
        
        
c.showPage()
c.save()

포샵에서 열면 

 

참고:

https://stackoverflow.com/questions/26474277/grouping-images-to-one-image

반응형

vpc 먼저 해야 ec2를 만들수있다.

 

ec2로 와서 인스턴스 시작 클릭

 

 

 

 

이름과 사용할 서버 클릭(ex-ubuntu)

 

 

 

 

키페어 생성 or 선택 (생성해서 저장하면 pem생성자를 가진 키)

네트워크 설정에 vpc와 서브넷은 vpc에 만든게 자동으로 들어가 있음 (복수면 직접 선택)

퍼블릭 ip 자동할당 활성화, 기존보안그룹 선택 클릭 (vpc만들때 하나 기본으로 만들어진 default)

이정도 하고 인스턴스 시작 

 

 

 

 

 

만들었다고 ssh로 접속하려하면 안된다.

ec2 -> 보안그룹 -> 인바운드 규칙 -> 인바운드 규칙 편집 클릭

 

 

 

 

규칙추가-> 유형 ssh 설정, 내 ip 클릭,설명 입력 후 규칙 저장 하면 끝

 

ssh접속할때 pem키와 id를 ubuntu로 해야 접속이 가능하다! 

반응형

'aws' 카테고리의 다른 글

ec2 복사하여 재생성 ami  (0) 2023.03.17
https 적용 (로드밸런스)  (0) 2023.03.16
aws route53 도메인 설정하기 (가비아)  (0) 2023.01.02
vpc 설정  (0) 2022.11.29

기본 vpc가 없을때 

기본생성할수있고 직접만들수있다 

 

 

기본생성방법

vpc 에 들어가 작업-기본vpc생성 클릭 

=========================================================================

직접생성

 

1.vpc 만들기

 

vpc생성하기 클릭

 

 

 

 

이름과 10.0.0.0/16 입력 후 생성

 

 

 

2.서브넷 만들기

 

서브넷 생성 클릭

 

 

 

 

vpc id는 아까만든거 하나 있는데 클릭 , 이름과 가용영역, 10.0.0.0/24 입력 후 생성

 

 

 

 

3.인터넷 게이트웨이 생성

 

인터넷 게이트웨이 생성 클릭

 

 

 

이름 입력후 생성 

 

 

 

 

만들면 위에 녹색으로 vpc에 연결하기 클릭

 

 

 

 

사용가능한 vpc 설정 후 연결 

 

 

 

 

4.라우팅 테이블 생성

_는 기본으로 만들어진것임 무시하고 라우팅 테이블생성 클릭

 

 

 

 

이름과 vpc설정 후 생성 

 

 

 

생성 후 클릭 후  서브넷 연결 클릭하여 서브넷 연결 편집 클릭

 

 

 

만든 서브넷 클릭하여 연결 저장 

 

 

 

 

이제 라우팅 클릭하여 라우팅 편집 클릭

 

 

 

 

 

0.0.0.0/0 과 ::/0 각각 적어주고 대상엔 인터넷 게이트웨이 클릭하면 자동으로 만든게 뜸 설정 후 저장 

 

 

public으로 쓸것만 만들었다 . private도  public이라 만들었던것을 private으로 추가로 생성 private은 라우팅편집 없음 

 

반응형

'aws' 카테고리의 다른 글

ec2 복사하여 재생성 ami  (0) 2023.03.17
https 적용 (로드밸런스)  (0) 2023.03.16
aws route53 도메인 설정하기 (가비아)  (0) 2023.01.02
ec2 생성  (0) 2022.11.29

+ Recent posts