vultr 설정


ssh 설정

  • 포트 설정 sudo deny 헌포트/tcp
  • 포트 설정 sudo allow 새포트/tcp
  • 포트 기록 vi etc/ssh/sshd_config
  • i키 누르면 입력시작
  • #port 부분 주석(#)풀고 새포트 입력
  • esc, :wq (저장하고 종료)
  • 데몬 재시작 sudo systemctl restart ssh 또는 sudo service ssh restart

각종 우분투 명령어

  • 포트 방화벽 설정 확인 sudo ufw status

apache2 설치

  • sudo apt update, sudo apt install apache2
  • 설치 후 상태 확인 sudo systemctl status apache2
  • 포트 설정 sudo allow 80/tcp HTTP, sudo allow 443/tcp HTTPS

서버 환경변수 기록

  • /var/www/html/ 웹루트에 기록하지 않도록 주의!! 밖에 기록하는것이 일반적.

변수기록

<?php
return [
    'db_password' => '디비패스워드값',
    'api_key'     => '에이피아이키값',
];

변수 사용

$config = include('설정파일경로명'); // 실제 경로를 입력하세요 (예: /var/www/configs/secret.php)
$db_password = $config['db_password'];

⚠️ 실제 서비스에서는 설정파일경로명 자리에 웹 루트(공개 디렉터리) 밖 경로를 입력하고, 파일 권한도 웹서버 사용자만 읽을 수 있도록 제한하세요(chmod 600, chown www-data 등). 비밀번호나 API 키는 코드에 직접 하드코딩하지 마시고 별도 설정 파일에 보관하세요.


php설치

  • sudo apt update apt 패키지 목록 업데이트
  • sudo apt install php php 최신버전 (우분투 리포 기본)
  • sudo apt install apache2 php libapache2-mod-php apache2일 경우
  • sudo systemctl restart apache2 아파치 재시작

설치 후 에러

  • Error: could not find driver Please ensure ‘/var/www/configs/configs.php’ is correctly configured and accessible.
  • pdo_mysql 설치 여부 확인 php -m | grep pdo
  • php_mysql 설치 sudo apt-get install php-mysql

서브 도메인 설정

  • DNS에서 sub.도메인.com을 서버 IP로 A레코드 등록
  • 웹서버에서
    • 아파치 : sites-available에 VirtualHost 만들고 a2ensite/reload
    • Nginx : sites-available에 server 블록 만들고 sites-enabled 링크 후 reload
  • /var/www/sub 등 웹루트 폴더 및 파일 생성
  • 접속 테스트 (브라우저에서 http://sub.도메인.com 접속)
  • etc/apache2/site-available/000-default.conf 수정
  • sudo a2ensite 000-default.conf conf 활성화
  • 문법검사 sudo apachectl configtest
  • 설정을 다시 읽음 sudo systemctl reload apache2
  • 서버를 다시 시작 sudo systemctl restart apache2

DNS 전파 확인법


python 설치

  • sudo apt install python3
  • 패키지 관리를 위한 pip설치 sudo apt install python3-pip
  • 설치 후 버전확인 python3 --version, pip3 --version

mariaDB 설치

  • sudo apt install mariadb-server
  • 실행상태 확인 sudo systemctl status mariadb
  • 보안설정 sudo mysql_secure_installation 초기비번설정, 원격root접속차단, 익명계정삭제 등 질문에 따라 선택하며 보안 강화.
    Setting the root password or using the unix_socket ensures that nobody
    can log into the MariaDB root user without the proper authorisation.
    You already have your root account protected, so you can safely answer 'n'.
    Switch to unix_socket authentication [Y/n]     
    
  • Y: ssh root 권한만 DB_root로 접근가능, N: 패스워드만 알면 ssh root가 아니더라도 DB_root로 접근가능
    You already have your root account protected, so you can safely answer 'n'.
    Change the root password? [Y/n] 
    
  • Y: root 패스워드 변경, N: 넘어가기
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
  • Y: 익명계정삭제(권장), N: 익명계정유지
    ormally, root should only be allowed to connect from 'localhost'.  This
    ensures that someone cannot guess at the root password from the network.
    Disallow root login remotely? [Y/n] 
    
  • Y: 원격지 접속불가, 서버내 접속가능, N: 원격지 접속가능
    By default, MariaDB comes with a database named 'test' that anyone can
    access.  This is also intended only for testing, and should be removed
    before moving into a production environment.
    Remove test database and access to it? [Y/n] 
    
  • Y: test database삭제(권장) , N: 그대로 두기
    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.
    Reload privilege tables now? [Y/n] 
    
  • Y: 즉시반영(권장), N: 그대로 두기

인증서 추가

  • https://로 접속하기 위해

Let’s Encrypt 적용

sudo apt update
sudo apt install certbot python3-certbot-apache
# nginx는 python3-certbot-nginx 로!
# 서브도메인/도메인에 맞게 입력
sudo certbot --apache -d sub.onethelab.com
# --nginx는 nginx 서버일 때!

발급조건

  • 서브도메인/도메인이 실제로 공개 DNS(A레코드)로 해당 서버를 가리켜야 가능
  • 서버 80/443 포트 외부에서 접속 가능해야 함 (방화벽, 보안그룹에서 막혀 있으면 발급 실패)

mariaDB

  • 셀 접속 sudo mariadb
  • 비밀번호가 있을때 mysql -u root -p

  • 새로운DB 생성 CREATE DATABASE myapp_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 계정생성 CREATE USER 'myappuser'@'localhost' IDENTIFIED BY 'mypassword';
  • 권한 부여 (해당 DB에만 모든 권한) GRANT ALL PRIVILEGES ON myapp_db.* TO 'myappuser'@'localhost';
  • 변경사항 즉시 적용 FLUSH PRIVILEGES;