가장 기본적인 APT 패키지 관리툴로 설치를 진행합니다.
1. APM 설치
# apt-get -y update
# apt-get -y upgrade
# apt-get -y install apache2
# apt-get -y install php8.3 php8.3-mysql
# apt-get -y install mysql-server
# vi /etc/apache2/mods-available/mime.conf
# 아래 내용 추가 AddType application/x-httpd-php .php .htm .html AddType application/x-httpd-php-source .phps |
# vi /etc/php/8.3/apache2/php.ini
; 수정 및 추가 short_open_tag = On extension=mysqli extension=pdo_mysql
|
# systemctl restart apache2
2. Virtualhost 설정
# cd /etc/apache2/sites-enabled
# vi default-ssl.conf
# 추가 ServerName sysdocu.kr ServerAlias www.sysdocu.kr
|
# vi /etc/apache2/apache2.conf
# /var/www 디렉토리 설정을 찾아서 아래와 같이 수정, 디렉토리가 다를때는 추가 <Directory "/var/www/*"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
# 404 에러 출력시 웹서버 버전 정보 숨기기 ServerSignature Off ServerTokens Prod
|
# systemctl restart apache2
3. Let's Encrypt SSL 설정
# apt -y install letsencrypt
# letsencrypt certonly -a webroot --agree-tos -m admin@sysdocu.kr -w /var/www/html -d www.sysdocu.kr --rsa-key-size 4096
자동 갱신 설정을 합니다.
# vi /root/ssl-renew.sh
#!/bin/bash /usr/bin/letsencrypt certonly -a webroot --agree-tos --renew-by-default -w /var/www/html -d www.sysdocu.kr systemctl restart apache2
|
# chmod 700 /root/ssl-renew.sh
# echo "0 0 1,16 */2 * root sh /root/ssl-renew.sh" >> /etc/crontab
4. SSL 설정
# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/default-ssl.conf .
# vi 000-default.conf
# 추가 ServerName sysdocu.kr ServerAlias www.sysdocu.kr
# 수정 SSLCertificateFile /etc/letsencrypt/live/www.sysdocu.kr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.sysdocu.kr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.sysdocu.kr/fullchain.pem |
# a2enmod ssl
# systemctl restart apache2
5. SSL Redirect 설정
# a2enmod rewrite
# systemctl restart apache2
# cd /var/www/html
# vi .htaccess
6. MySQL 설정
MySQL root 패스워드 설정 및 사용자 추가 방법입니다.
# mysql -p
(처음에는 패스워드가 없습니다. 그냥 엔터)
mysql> use mysql;
mysql> alter user root@localhost identified by '12345678';
mysql> flush privileges;
새 데이터베이스와 계정 생성 후 권한을 부여 합니다.
mysql> create database sysdb;
mysql> create user 'sysuser'@'localhost' identified by '12345678';
mysql> grant all privileges on sysdb.* to 'sysuser'@'localhost';
mysql> flush privileges;
테스트를 위해 웹소스 루트 디렉토리 (/var/www/html) 에서 MySQL 계정을 이용한 접속 테스트 PHP 소스 코드를 작성합니다.
# vi test.php
<? define("DB_HOST", "localhost"); define("DB_USER", "sysuser"); define("DB_PASSWORD", "12345678"); define("DB_NAME", "sysdb"); $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); }
$query = "SELECT VERSION()"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_array($result); echo "version: " . $row[0];
mysqli_close($conn); ?> |
웹브라우저를 통해 작성한 PHP 파일에 접근하면 MySQL 과 잘 연동되고 계정이 올바를 경우 아래와 같은 메세지가 출력됩니다.
여기에서는 간단히 curl 을 이용해 테스트 해보겠습니다.
# curl https://www.sysdocu.kr/test.php
version: 8.0.39-0ubuntu0.24.04.2