5๋ถ ์์ฑ ์์ผ๋๋ฆฝ๋๋ค.
๋๋ง์ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค! ๊ทผ๋ฐ ํํ๊ฑด ์ซ์ด..
์ฌ์ด๊ฑฐ ์ข์ํ๊ณ ๊ท์ฐฎ์๊ฑฐ ์ซ์ดํ๋๋ฐ ์์ด๋ณด์ด๋๊ฑด ์ข์ํ๋ ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ, ๋ฒ์
์ข์ํ์์ฃ ? ์ ๋ ๊ทธ๋ ์ต๋๋ค.
์ง๊ธ ๋ณด๊ณ ๊ณ์๋ ๋ธ๋ก๊ทธ๋ ๋ฒจ๋ก๊ทธ ๊ฐ์
ํ๋ ์๋๋ณด๋ค ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
(์ฌ์ค์) ๋
ธ์ฝ๋๋ก ๋ธ๋ก๊ทธ ์ ์ - ๋ฐฐํฌ - DNS ์ฐ๊ฒฐ - ์ ๋๋ฆฌํฑ์ค - SEO ์ค์ ๊น์ง ํํ์
๋ ์ธ ๊ณ .
์ผํ ํฉ์๋ค
์ฌ๊ธฐ ๋ฒ์ ์น์ฌ์ดํธ์ ๋ธ๋ก๊ทธ ๊ฐํ๋๊ฐ ์์ต๋๋ค. ์ค๋์ ๋ ธ์ฝ๋ ๋ฐ์ด๋๊น ์ผํํ๋ฏ ํ๋ ๊ณจ๋ผ ๋ณด๊ฒ ์ต๋๋ค.
๋ธ๊น
๊ณจ๋๋์? ์ ๊ณจ๋์ต๋๋ค. Deploy ๋๋ฅด๋ฉด ๋ฐฐํฌ๊ฐ ๋ฉ๋๋ค.
์ง์ง ๋ฉ๋๋ค. ๊นํ๋ธ ๊ณ์ ์ฐ๊ฒฐ ํ ๋ ํฌ๋ ๋ง๋ค์ด์ค๋๋ค.
์ง์ง ๋ค ๋์โฆ โ๋๋ ๊ฐ๋ฐ์์โ ํฌ์ด ๋๋ ์๊ฐ์ ๋๋ค.
๋ด ๋๋ฉ์ธ์ด ์์ผ๋ฉด .. ์ข๊ฒ ๋ค
๋ธ๋ก๊ทธ๋ ๋ด๊ป๋ฐ ์ฃผ์๋ vercel.app ์ฐ๊ณ ์์ผ๋ฉด ์กฐ๊ธ.. ๋ญ๊ฐ.. ๋ญ๊ฐ์
์ธํฐ๋ท ์ฃผ์ ํ๋๊ณณ ์๋ฌด๋ฐ๋ ๊ฐ์ ๋๋ฉ์ธ ํ๋ ์ฌ์ค๋ฉด ๋ฉ๋๋ค.
๋์ถฉ ์๋ฌด๋ฐ์๋ ์ฌ๋ฉด ๋ฉ๋๋ค. ๊ณ ๋๋ โ๋ค์ด๋๋ฏน ํ๋ผ์ด์ฑโ ํ๋๊ฑฐ ์ง์ฆ๋์ ๊ฐ๋น์์์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ์๋ฌด๋ฐ์๋ ์ฌ์ธ์ ๋ด๋๋ด์ฐ์
๋ฒ์
์ ํ๋ก์ ํธ ํ์ด์ง - Settings - Domains ๋ค์ด๊ฐ์ ๋ฐฉ๊ธ ์ฐ ๋ด ๋๋ฉ์ธ์ ์ถ๊ฐํด ์ค๋๋ค.
์ ๋ ๋๋ฉ์ธ ๋ฃจํธ๋ ๋ค๋ฅธ ์ฉ๋๋ก ์ธ๊ฑฐ๋ผ ์๋ธ๋๋ฉ์ธ์ ๋ธ๋ก๊ทธ๋ฅผ ๋จน์์ต๋๋ค.
์๋ฌ๊ฐ ๋ฐํ
๋ฐ .. ์ ์์
๋๋ค. ๊ฑฑ์ ใดใด
์์์ ์ํค๋ ๋๋ก ๋ ์ฝ๋ ํ์
์ cname
, ํธ์คํธ์ ์๋ธ๋๋ฉ์ธ ์ด๋ฆ (๊ทธ๋ฅ ๋๋ฉ์ธ ์ธ๊ฑฐ๋ฉด @)
, ๊ฐ์ cname.vercel-dns.com.
๋ฃ์ด์ฃผ์ธ์. ๋ค์ ์ ์์ง ๋ง๊ธฐ
๊ทธ๋ฌ๊ณ ๋ฑ๋กํ๋ฉด .. ๋ฉ๋๋ค. ์ด์ ๋ด ๋๋ฉ์ธ์ผ๋ก ๋ธ๋ก๊ทธ ๋ค์ด๊ฐ์ โ๋๋ ๊ฐ๋ฐ์์ 2โ ์๊ฐ ์ฆ๊ธฐ์ญ์ผ
๊ทธ๋์ ๋ด๊ฐ ๋ญ ์ฐ๋ฉด ๋๊ฐ ๋ด?
์ ๋ธ๋ก๊ทธ๋ ์์ง ์๋ฌด๋ ์๋ณด๋๋ฐ์,
๋ฒ์
์์๋ ์ ๋๋ฆฌํฑ์ค๋ ๊ณต์ง๋ก ์ค๋๋ค โฆ ๋ ๋ด๊ณ ์ฐ๊ธฐ ์ ๊น์ง๋ ์ฐธ ์ฐฉํ ๋ฒ์
ํต๋๋ค. ํ ๋ฌ์ 2500 ์ด๋ฒคํธ๊น์ง ๋ฌด๋ฃ์ธ๋ฐ ์ ๋ธ๋ก๊ทธ๊ฐ 2500 ์ด๋ฒคํธ ์ด์ ์ผ์ด๋ ๋ฆฌ ๋ง๋ฌดํ๋ ์ถฉ๋ถํฉ๋๋ค.
๋ง์ ํ๋ ๋์ด๋ ์ถ๊ฐ ๊ณผ๊ธ์ ์์ต๋๋ค.
์ง๊ธ ์ฐ๊ณ ์๋ Astro
ํ๋ ์์ํฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก SSG ๋ชจ๋๋ก ๋์ํฉ๋๋ค. SSR ๋ชจ๋๋ก ์ฌ์ฉํด๋ .. ๋ญ .. ์๋ง .. ๋ ๊ฑฐ์
npm install @vercel/analytics
๊น์์ค๋๋ค.
Layout.astro
ํ์ผ์ ์ฐพ์์ ๋ฒ์
์ ๋๋ฆฌํฑ์ค ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ด์ค๋๋ค. ์คํฌ๋ฆฝํธ .. ๋ฅผ ์ฌ๋๊ฒ ๋ฌด๊ฒ์ง ์๋? 1.1kB ์ ๋๋ผ๊ณ ํฉ๋๋ค. ๋ํ๋ฏผ๊ตญ ํ์ค ํต์ ์๊ธ์ ๋ก ๋ฐ์ง๋ฉด 0.31์ ์ ๋ ๋ฉ๋๋ค.
<!doctype html>
<html lang="en">
<script>
import { inject } from "@vercel/analytics";
inject();
</script>
<Head title={`${title} | ${SITE.TITLE}`} description={description} />
<body>
<Header />
... ์ฝ๋๋ค ...
๋์ถฉ ์์ ์ฌ์ผ๋ฉด ๋ฉ๋๋ค.
ํ๊ณ ๋ฐฐํฌํ๋ฉด ์ง์ ~ ๋๋ฌ์ต๋๋ค.
๋ด๊บผ ๋ง๋ค๊ธฐ
๋ฒ์ ์์ ๋ฐฐํฌ๋ฅผ ๋ฒํผ ํ๋๋ง ๋๋ฌ์ ํ๊ธฐ ๋๋ฌธ์, ์ง๊ธ ์ฌ์ดํธ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํด๋ก ํด์จ ํ ํ๋ฆฟ ๋ฐํ์ผ๋ก ๋์ด ์์ต๋๋ค. ์ด์ ๋ด ๋ธ๋ก๊ทธ๋ก ๋ง๋๋ ๊ณผ์ ์ ๋๋ค.
๋๊ธ ๋ฌ์์ฃผ์ญ์ผ
์ง๊ธ ์ฌ์ฉํ๊ณ ์๋ Astro Micro ํ
ํ๋ฆฟ์ giscus ๋๊ธ ์์คํ
์ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌํ๊ณ ์์ต๋๋ค.
์ด์ ์ํ ๋ชจ๋ฅด๋ ์ธ๊ตญ์ธํํ
๋๊ธ ๋ฌ๋ฆฌ์ง ์๋๋ก giscus์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ์์ค๋ฉด ๋ฉ๋๋ค.
giscus <- ์ฌ๊ธฐ ์ ์ํฉ๋๋ค.
- ๋ ํฌ์งํ ๋ฆฌ๋ฅผ public์ผ๋ก ์ ํํ๊ณ (๋ฒ์ ์์ ํด๋ก ํ๋ฉด ๊ธฐ๋ณธ์ด private)
- ์ฌ๊ธฐ ์ ์ํด์ ๋ด ๊น ๋ ํฌ์ giscus๋ฅผ ์ค์นํ๊ณ
- ๋ ํฌ - settings - ๊ธฐ๋ฅ - ํ ๋ก ์ ํ์ฑํํฉ๋๋ค. ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด
ํ์ด์ง ์ฐ๊ฒฐ์ ์ฌ์ง์ ๋์์๋ ์ฒซ๋ฒ์งธ ์ต์ ์ ๊ถ์ฅํฉ๋๋ค. ์ด์ฐจํผ ํ์์ discussions ์ ๋ง๋๋ ๋ ํฌ๋ฉด ์ ๋ ๊ฒ ๋์ญ์ผ โฆ ๊ฒ์๊ธ ์ ๋ชฉ์ ๋ง๊ฒ ์๋์์ฑ ๋ฉ๋๋ค.
Giscus.astro
ํ์ผ์ ์ฐพ์์ ๋ด ์คํฌ๋ฆฝํธ๋ก ๋ฐ๊ฟ์น๊ธฐ ํด์ค๋๋ค.
<div class="giscus"></div>
<script
src="https://giscus.app/client.js"
data-repo="๋์ถฉ"
data-repo-id="๋ด ๋ ํฌ"
data-category="Announcements"
data-category-id="์
๋๋ค"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="bottom"
data-theme="preferred_color_scheme"
data-lang="ko"
crossorigin="anonymous"
async></script>
๋ฉํ๋ฐ์ดํฐ ๋ฐ๊พธ๊ธฐ
src/consts.ts
ํ์ผ์ ์ฐพ์์ ๋ด ๋ธ๋ก๊ทธ ์ด๋ฆ์ ๋ง๊ฒ ์์ ํด์ค๋๋ค.
์ด ํ
ํ๋ฆฟ์์๋ ๋ค๋ฅธ ํ์ผ์์๋ ์ฌ๊ธฐ ์์๋ฅผ ์ฐธ๊ณ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ ํ๋๋ง ๋ฐ๊พธ๋ฉด ๋ฉ๋๋.
export const SITE: Site = {
NAME: "๋ธ๋ก๊ทธ ์ด๋ฆ",
DESCRIPTION: "๋ธ๋ก๊ทธ ์ค๋ช
",
EMAIL: "์ด๋ฉ์ผ",
NUM_POSTS_ON_HOMEPAGE: ๋ฉ์ธํ์ด์ง์ ๋ธ๋ก๊ทธ ๊ธ ๋ช๊ฐ ๋ณด์ฌ์ค๊ฑด์ง,
NUM_PROJECTS_ON_HOMEPAGE: ๋ฉ์ธํ์ด์ง์ ํ๋ก์ ํธ ๊ธ ๋ช๊ฐ ๋ณด์ฌ์ค๊ฑด์ง,
};
๊ตฌ๊ธ์ ์ด ๊ธ์ โฆ ์ฐพ์์ค
seo ์ข์ํ์์ฃ ? ์ ๋ ๊ทธ๋ ์ต๋๋ค.
robots.txt ์ถ๊ฐํ๊ธฐ
astro
์์ ์ ์ ํ์ผ ๋ฐฐํฌํ๊ธฐ ์ฝ์ต๋๋ค. robots.txt
๋ ๋ฃจํธ ๋ฐ๋ก ๋ฐ์ ๋๊ธฐ๋ก ์ฝ์ํ๊ธฐ ๋๋ฌธ์
src/pages/robots.txt.js
ํ์ผ ๋ง๋ค์ด ์ค๋๋ค.
export async function GET({ params, request }) {
return new Response(
`User-agent: *
Disallow:
Sitemap: https://blog.luciancah.com/sitemap-index.xml`,
{
headers: {
"content-type": "text/plain",
},
},
);
}
์ฌ์ดํธ๋งต ์๋์์ฑ ์ต๊ณ
astro
์์ฒด๊ฐ ์ ์ ํ์ด์ง ์ต๊ณ ๋ฅผ ํ๋ฐฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ (์ค์ ๋ก ํ ๋ง), sitemap ๋ ์์ฒด ์์ฑํด์ค๋๋ค.
/astro.config.mjs
์ฐพ์์ ๋ด ํ์ด์ง ์ฃผ์๋ง ๋ฐ๊ฟ์ค๋๋ค.
export default defineConfig({
site: "https://blog.luciancah.com",
integrations: [tailwind(), sitemap(), mdx(), pagefind()],
markdown: {
shikiConfig: {
theme: "css-variables",
},
},
});
๊ตฌ๊ธ์ ์ง์ง ์ฐพ์์คโฆ
์ด์ ๊ตฌ๊ธํํ ๋ ๋จน์ฌ์ค ์ฐจ๋ก์ ๋๋ค. ๊ตฌ๊ธ ์น๋ง์คํฐ ๋๊ตฌ <- ๋ ์ธ ๊ณ
๋๋ฉ์ธ์ ์์ผ๋๊น ์ผ์ชฝ ๋๋ฉ์ธ์ ๋ธ๋ก๊ทธ ๋งํฌ ์ ๋ ฅํด ์ฃผ๊ฒ ์ต๋๋ค.
๋ด๊ฐ ์ด ๋๋ฉ์ธ์ ์ค ์์ ์ฃผ์ธ์ง ํ์ธ์ด ํ์ํฉ๋๋ค. TXT ๋ ์ฝ๋์ ๊ตฌ๊ธ์์ ์ฃผ๋ ๊ฐ์ ์ถ๊ฐํ๋ฉด ๋ฑ๋ก ์๋ฃ์ ๋๋ค. ๋ณดํต ๊ตฌ๊ธ์ด ์์ธ ์์ฑํ๋๋ฐ ์ดํ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค.
์ง์ง ๋
์ด ๊ณผ์ ์ ํตํด์ ์ฝ๋ ํ์ค ์์ง๊ณ CI/CD, DNS, ์ ๋๋ฆฌํฑ์ค, SEO, ์ ์ ํ์ด์ง ๋ฐฐํฌ ๋ญ ์ข์ ๋ณด์ด๋๊ฑด ๋ค ํ์ต๋๋ค.
์ฌ๋ฌ๋ถ๋ ์ฌ๋ฌ๋ถ์ ๋ธ๋ก๊ทธ ๋ง๋ค์ด ๋ณด์ธ์.
๊ทธ๋ฆฌ๊ณ ๋๊ธ ํ๋ฒ ์จ๋ด์ฃผ์ธ์ ใ ใ ์ ๋ ์์ง ๋๋์ง ๋ชจ๋ฆโฆ