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/tcpHTTP,sudo allow 443/tcpHTTPS
서버 환경변수 기록
- /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 updateapt 패키지 목록 업데이트sudo apt install phpphp 최신버전 (우분투 리포 기본)sudo apt install apache2 php libapache2-mod-phpapache2일 경우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.confconf 활성화- 문법검사
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;
