웹 사이트를 호스팅하도록 새로운 VPS 구성
이 저널은 다음과 같이 간결하게 설명합니다. 새 웹 사이트를 호스팅하기 위해 새 VPS를 구성하는 방법peiwen.me .
알림:
이 명령을 원격 서버에 ssh 한 번만 실행하십시오.
apt update
apt install curl
메모:
apt
는 Linux 패키지 관리 시스템apt
cmd는 2014년에 도입되었으며 Ubuntu 16.04 릴리스 이후 더 빠르고 친숙하며 사용하기 쉽도록 부분적으로 대체되었습니다apt-get
.먼저! SSH
mosh
는 우수한 모바일 셸입니다. 반응성이 뛰어나고 로컬과 원격 모두에 설치해야 합니다. # add info to local file: ~/.ssh/config
Host <name_your_remote>
HostName <static_IP>
User <remote_username>
IdentityFile <path_to_local_id_rsa>
IdentitiesOnly yes
# local shell
ssh <user>@<static_IP>
# remote shell
mkdir .ssh
touch authorized_keys
apt-get install nano # just in case
apt-get install mosh # just in case
nano authorized_keys
# paste the content of the local file 'id_rsa.pub' to this file, save and exit
# local shell
mosh <name_your_remote>
ssh <name_your_remote>
노드JS
nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# might need to reconnect remote for `nvm` command to work properly
참고: 최신
nvm
설치 스크립트here를 확인하십시오.마디
nvm list-remote
nvm install stable # or pick one from the list
nvm list
node -v
npm -v
npm install --global yarn # recommended
참고: "nvm 'command' not found"인 경우 - 확인'Troubleshooting on Linux Section'
몽고DB
v5.0 설치 문제
🔥 v5.0을 설치할 때 발생한 정확한 problem -
mongod
서비스가 시작되지 않습니다. 이유는 다음과 같습니다.> VM의 CPU는
CPU flags
에 나열되어야 하는 MongoDB 5.0에 필요한 명령(예: AVX 및 SSE)을 지원하지 않습니다.>
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr
발견된 유사한 문제:
CPU 유형을 확인하려면
apt install procinfo
를 실행하여 cat /proc/cpuinfo
를 설치해야 할 수 있습니다.MongoDB v4.4 커뮤니티 에디션 설치
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org=4.4.15 mongodb-org-server=4.4.15 mongodb-org-shell=4.4.15 mongodb-org-mongos=4.4.15 mongodb-org-tools=4.4.15
시작 및 구성
sudo systemctl start mongod
sudo systemctl status mongod
sudo systemctl enable mongod
mongo
mongosh
참고:
sudo
수퍼유저인 경우 root
를 생략할 수 있습니다.MongoDB 제거
sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -fr /var/log/mongodb
sudo rm -fr /var/lib/mongodb
보안 체크리스트
MongoDB Guide
복제본 백업을 생성하기 위한 IP 바인딩
Mongo
힘내
설치
apt update
apt install git
git --version
설정
소스로 푸시가 필요한 경우 사용자 이름을 설정하려면
git config --global user.name <username>
git config --global user.email <email>
git config --list # or ↓ directly check gitconfig file
nano ~/.gitconfig
2021년부터 github repos와 SSH 통신만 허용되기 때문에 코드를 편집하고 소스에 푸시하는 경우에는 이것만으로는 충분하지 않습니다.
복제 저장소
웹 저장소를
~/web/
에 복제하고 deps를 설치합니다.git clone <repo_address>
cd <project>
yarn
# OR
npm i
.env.local 구성
touch .env.local
nano .env.local
.env.local
내용 ↓MONGODB_URI=<get_this by typing mongosh>
MONGODB_DB=journal
PASS=<some_password>
NEXT_PUBLIC_PASS_TOKEN=<some_JWT_like_token>
NEXT_PUBLIC_REVAL_TOKEN=<some_token_for_revalidation_token>
짓다
yarn build
yarn global add pm2
pm2 start yarn --name "peiwen.me" -- start
pm2 ls
# to start on startup
pm2 startup
# to freeze/save the processes
pm2 save
엔진엑스
1. 방화벽 설치, 구성 및 nginx 활성화
apt install nginx
# firewall
ufw app list
# returns
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
mosh
# enable firewall
ufw allow 'Nginx Full'
ufw allow OpenSSH # important
ufw allow mosh
ufw enable
ufw status
# returns
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
mosh ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
mosh (v6) ALLOW Anywhere (v6)
# check your nginx server
systemctl status nginx
# get your IP if you don't already know for some reason
curl -4 icanhazip.com
<IP_address>
# enter this <IP_address> into the browser, you should be able to see the landing page of nginx
# lastely, enable it on every boot
systemctl enable nginx
2. 서버 블록 설정
nginx
server block
는 폴더 안에 있는 파일입니다/etc/nginx/sites-available/
.cd /etc/nginx/sites-available
touch <new_domain> # optional
nano <new_domain>
콘텐츠 삽입:
server {
# the name of your domain
server_name <new_domain> www.<new_domain>;
location / {
# this must stay localhost. The port must be the same as your Next.js project
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# simple headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Frame-Options DENY always;
# this will serve the project on port 80
listen 80;
}
3. nginx를 확인하고 다시 로드하여 적용합니다.
# check all working
nginx -t
ln -s /etc/nginx/sites-available/<new_domain> /etc/nginx/sites-enabled/
systemctl reload nginx
추신. 잊지 마요
host records
: 서버 IP( which record type to choose ) 참조:
SSL
1. certbot 설치 및 일부 준비
apt install certbot python3-certbot-nginx
# firewall settings
ufw allow 'Nginx Full'
ufw allow 'Nginx HTTPS'
ufw deny 'Nginx HTTP'
ufw status
# check if the <server_name> is exactly the format "example.com www.example.com"
nano /etc/nginx/sites-available/example.com
2. SSL/TLS 인증서 받기
# do not forget the '-d' before www.example.com
certbot --nginx -d example.com -d www.example.com
# enter your email...
Once you configure HTTPS, Certbot completes generating the certificate and reloads Nginx with the new settings.
Finally, the output displays that you have successfully generated a certificate and specifies the location of the certificate on your server.
/etc/letsencrypt/live/example.com/fullchain.pem (success)
참조: How to Secure Nginx with Let's Encrypt On Ubuntu 20.04
지금 nginx 파일을 열면
nano /etc/nginx/sites-available/example.com
추가 정보가 추가된 것을 볼 수 있습니다.server {
server_name <new_domain> www.<new_domain>;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Frame-Options DENY always;
# ↓ the following lines are added by Certbot
listen 443 ssl; # 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 = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name example.com www.example.com;
listen 80;
return 404; # managed by Certbot
}
} # an extra for some reason...
# check certificate's auto-renewal
certbot renew --dry-run
3. 자동 인증서 갱신을 활성화하도록 Cronjob 설정
# open Crontab
crontab -e
줄 추가:
# Schedule it to run daily at a specified time (in this example, it does so at 05:00 a.m.)
0 5 * * * /usr/bin/certbot renew --quiet
유지하다
# in remote <site_folder>
git pull && yarn build && pm2 restart peiwen.me
유용한 기사 😄
Reference
이 문제에 관하여(웹 사이트를 호스팅하도록 새로운 VPS 구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ld8/configure-a-fresh-vps-to-host-a-website-4lh0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)