PHP 웹 애플리케이션은 보통 다음과 같은 구조를 가집니다.
웹 서버(Apache, Nginx 등) : 클라이언트 요청을 받아 PHP에 전달.
PHP 실행 환경 : PHP 코드를 해석하고 결과를 HTML로 반환.
데이터베이스(MySQL, MariaDB, PostgreSQL 등) : 동적 데이터 저장/조회.
소스코드(애플리케이션) : 실제 서비스 로직과 UI를 포함.
따라서 PHP 애플리케이션을 설치하려면 위 환경을 먼저 구축해야 합니다.
LAMP: Linux + Apache + MySQL/MariaDB + PHP
LEMP: Linux + Nginx + MySQL/MariaDB + PHP
예: Ubuntu에서 설치
sudo apt update
sudo apt install apache2 php libapache2-mod-php mysql-server php-mysql
php -v
→ PHP 버전 확인
apache2ctl -v
→ Apache 버전 확인
다운로드
GitHub, 공식 웹사이트, 또는 압축 파일로 소스코드를 다운로드.
git clone https://github.com/example/app.git
또는
wget https://example.com/app.zip
unzip app.zip
웹 루트 디렉터리에 배치
Ubuntu Apache 기본 루트: /var/www/html/
sudo mv app /var/www/html/app
sudo chown -R www-data:www-data /var/www/html/app
DB 생성
CREATE DATABASE app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
초기 스키마 가져오기
mysql -u app_user -p app_db < /var/www/html/app/database/schema.sql
대부분의 PHP 웹 애플리케이션은 config.php 또는 .env 파일을 통해 DB 연결 정보를 설정합니다.
예:
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'app_user');
define('DB_PASS', '비밀번호');
define('DB_NAME', 'app_db');
?>
/etc/apache2/sites-available/app.conf
<VirtualHost *:80>
ServerName myapp.local
DocumentRoot /var/www/html/app
<Directory /var/www/html/app>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
적용 후:
sudo a2ensite app.conf
sudo systemctl reload apache2
/etc/nginx/sites-available/app
server {
listen 80;
server_name myapp.local;
root /var/www/html/app;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
}
적용 후:
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo systemctl reload nginx
브라우저에서 http://서버주소 또는 http://myapp.local 접속.
설치 마법사(Installer)가 있으면 안내에 따라 DB 및 관리자 계정 설정.
설치 완료 후 보안 설정 확인:
config.php 권한 제한
불필요한 설치 스크립트 제거 (install.php, setup.php 등)
.env 파일 접근 차단 (Apache/Nginx 설정 필요)
display_errors는 운영 환경에서 꺼두기 (php.ini에서 display_errors=Off).
error_log는 별도 파일로 지정.
HTTPS 적용 (Let’s Encrypt 등 무료 SSL 인증서).
정기적인 DB 백업, 소스코드 업데이트.