분석을 다시 위대하게 하다

15507 단어 terraformawsnextjs
친애하는 독자 여러분, 만약 당신이 이 글을 읽고 있다면, 이것은 당신의 사이트 방문량을 측정할 방법을 찾고 있다는 것을 의미합니다.구글 분석을 쉽게 사용할 수 있다. 비록 무료이지만, 완전히 이해하고 사용하기는 확실히 어렵다.나는 다른 선택을 선택하기로 결정했다. 나는 왜 Plausible Analytics을 선택했는지 설명해 보려고 한다.

무엇이 합리적입니까?


그럴 듯하지만 그렇지 않은 분석은 에스토니아에서 만들어졌고, 현재도 에스토니아가 유지하고 있다.2018년 12월 출시돼 2019년 4월 출시된 이후 새로운 네트워크 분석 서비스다.그들은 구글의 분석을 대체하는 간단하고 프라이버시가 우호적이라고 말한다.

그것의 우세


내가 좋아하는'사이비'의 주요 특성 중 하나는 그것이 완전히 기원된 것이다.너는 그들의 GitHub repository에서 코드의 모습을 정확하게 볼 수 있고 심지어는 그것에 기여할 수도 있다.
스크립트가 1KB 밖에 없기 때문에 매우 빠르고 쉽게 통합할 수 있습니다.
구글 분석(Google Analytics)에 비해 그들은 GDPR과 PECR에 부합하도록 cookies를 전혀 사용하지 않는다.과자 플래카드에 안녕히 계세요.
그들은 장치, 사이트, 응용 프로그램에 걸쳐 사용자를 추적하지 않았다. 이것은 사용자의 행동을 이해하거나 이해할 수 없다는 것을 의미한다.
수집된 모든 데이터는 아래에서 찾을 수 있다.보시다시피 개인 데이터나 개인 신분 정보는 수집되지 않았습니다.하루가 끝날 때'사이비'는 내 사이트의 데이터의 전체적인 추세만 추적한다.

마지막으로 가장 중요하지 않은 것은 내가 원하는 곳에서 내가 그것을 위탁 관리하고 공개함으로써 모든 사람이 내가 방문할 수 있는 내용을 볼 수 있다는 것이다.

나 같은 독선적인 사람


이 작은 프로젝트에 대해 우리는 그들의 시작과 운행을 template으로 사용할 것이다. 이것은 우리의 합리적인 서버를 시작하는 데 필요한 모든 것을 갖추고 있다.
우리는 Terraform을 우리의 IaC(인프라를 코드로 하는) 도구로 사용하고 인프라를 AWS에 배치할 것이다.
구축할 내용은 다음과 같이 요약할 수 있습니다.

우선, 우리는 고립된 가상 네트워크에서 다른 AWS 자원을 시작할 수 있도록 VPC이 필요하다. 우리는 필요에 따라 이 자원을 정의할 수 있다.
resource "aws_vpc" "vpc" {
  cidr_block = "10.0.0.0/16"
}
그리고 겉과 속이 다른 사람들이 인터넷에 접근할 수 있도록 하기 위해서, 우리는 그것을 대중을 대상으로 하는 서브넷에 두어야 한다.모르는 사람들에게 만약에 하나의 서브넷이 하나의 루트표와 연결되면 이 루트표가 인터넷 인터페이스에 연결되는 루트를 가지면 이 서브넷을 공공 서브넷이라고 부른다.
resource "aws_subnet" "subnet" {
  vpc_id     = aws_vpc.vpc.id
  cidr_block = "10.0.0.0/24"
}

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.vpc.id
}

resource "aws_default_route_table" "rt" {
  default_route_table_id = aws_vpc.vpc.default_route_table_id
}

resource "aws_route" "r" {
  route_table_id         = aws_default_route_table.rt.id
  gateway_id             = aws_internet_gateway.gw.id
  destination_cidr_block = "0.0.0.0/0"
}
웹 서버의 안전을 확보하기 위해서는 보안 그룹이 필요합니다. 이 보안 그룹의 규칙은 웹 서버가 인터넷에서 온 입국 HTTP 요청에 응답하고 모든 출국 IPv4 데이터를 허용합니다.
resource "aws_default_security_group" "sg" {
  vpc_id = aws_vpc.vpc.id
}

resource "aws_security_group_rule" "i_http" {
  type              = "ingress"
  from_port         = 8000
  to_port           = 8000
  protocol          = "tcp"
  cidr_blocks       = ["0.0.0.0/0"]
  description       = "HTTP"
  security_group_id = aws_default_security_group.sg.id
}

resource "aws_security_group_rule" "e_all" {
  type              = "egress"
  from_port         = 0
  to_port           = 0
  protocol          = "-1"
  cidr_blocks       = ["0.0.0.0/0"]
  description       = "All protocols"
  security_group_id = aws_default_security_group.sg.id
}
몇 개의 자격 증명으로 웹 서버를 구성해야 하기 때문에 SSH가 접근해야 합니다.이 예를 단순화하려면 모든 IPV4에서 SSH에 액세스할 수 있지만 항상 IP 주소만 허용해야 합니다.
resource "aws_security_group_rule" "i_ssh" {
  type              = "ingress"
  from_port         = 22
  to_port           = 22
  protocol          = "tcp"
  cidr_blocks       = ["0.0.0.0/0"]
  description       = "SSH"
  security_group_id = aws_default_security_group.sg.id
}
현재 EC2 instance을 만듭니다. 웹 서버가 시작됩니다.
resource "aws_instance" "instance" {
  ami                         = "ami-0b3e57ee3b63dd76b"
  instance_type               = "t2.micro"
  subnet_id                   = aws_subnet.subnet.id
  associate_public_ip_address = true
  key_name                    = "plausible"
  user_data                   = file("script.sh")
  root_block_device {
    volume_size           = 8
    volume_type           = "gp2"
    encrypted             = true
    delete_on_termination = false
  }
}
SSH 키는 aws ec2 create-key-pair --key-name plausible --query "KeyMaterial" --output text > plausible.pem으로 생성됩니다.
모든 패키지를 자동으로 업데이트하고, 합리적인 서버를 더 빨리 시작할 수 있도록 Docker와 Docker compose를 설치하는 특정한 스크립트를 만들었습니다.
#!/bin/bash
yum update -y
amazon-linux-extras install -y docker
service docker start
usermod -a -G docker ec2-user
chkconfig docker on
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
reboot
현재 우리는 그들의 guide을 주목할 수 있다.
먼저 저장소를 다운로드해야 합니다.
$ curl -L https://github.com/plausible/hosting/archive/master.tar.gz | tar xz
$ cd hosting-master
그리고 필요한 환경 변수를 plausible-conf.env에 추가해야 합니다.
[email protected]
ADMIN_USER_NAME=XXX
ADMIN_USER_PWD=XXX
BASE_URL=http://1.2.3.4:8000 = the public IP of your EC2 instance
SECRET_KEY_BASE=XXX = a random base64 secret key
내 Gmail 계정을 사용하려면 Google App Password을 만들고 다음 환경 변수를 구성 파일에 추가해야 합니다.
SMTP_HOST_ADDR=smtp.gmail.com
SMTP_HOST_PORT=465
[email protected]
SMTP_USER_PWD=XXX = your Google App Password
SMTP_HOST_SSL_ENABLED=true
마지막으로 Dell은 docker-compose up -d을 사용하여 적절해 보이는 서버를 시작할 수 있습니다.
현재, 우리는 우리가 가장 좋아하는 브라우저에서 http://1.2.3.4:8000을 클릭하고, 우리의 합리적인 서버의 로그인 페이지를 볼 수 있어야 한다.등록 과정이 끝날 때, 우리는 스크립트가 있어야 한다. 우리는 우리 사이트에 추가하여 페이지 조회량을 수집하기 시작해야 한다.
다음 주.js 웹 사이트, _document.js 파일에 스크립트를 추가할 수 있습니다.
class MyDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx)
    return { ...initialProps }
  }

  render() {
    return (
      <Html>
        <Head>
          <script async defer data-domain="example.com" src="http://1.2.3.4:8000/js/plausible.js" />
        </Head>
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    )
  }
}
경탄할 만한!우리는 현재 http://1.2.3.4:8000을 통해 우리의 신뢰할 수 있는 서버를 보고 우리의 사이트에 어떤 방문이 있는지 볼 수 있다.

마무리


AWS 및 Terraform에 합리적인 서버를 설치, 구성 및 배포했습니다.망설이지 말고 documentation을 사용하여 더 나은 서버를 구성하십시오.
읽어주셔서 감사합니다!만약 당신이 이 글을 좋아하거나, 그것이 당신에게 도움이 된다면, 공유를 고려해 보세요.SSL 요청을 지원하기 위해 우리가 보기에 합리적인 서버를 업그레이드하기 위해 두 번째 블로그를 발표할 수도 있습니다.

좋은 웹페이지 즐겨찾기