# Hướng Dẫn Cài Đặt MXH - Diễn Đàn Tài Chính Việt Nam
## Yêu Cầu Hệ Thống
- PHP >= 7.4
- MySQL 8.0+-
- Apache với mod_rewrite
- Composer
- (Tùy chọn) Redis - cho real-time comments
---
## I. CÀI ĐẶT LOCALHOST
### Bước 1: Cài đặt môi trường
**Windows (XAMPP/Laragon):**
- Tải và cài đặt [XAMPP](https://www.apachefriends.org/) hoặc [Laragon](https://laragon.org/)
- Đảm bảo Apache và MySQL đang chạy
**Linux/Mac:**
```bash
# Ubuntu/Debian
sudo apt install apache2 mysql-server php php-mysql php-curl php-mbstring php-xml
# Mac (Homebrew)
brew install php mysql httpd
```
### Bước 2: Clone/Copy source code
```bash
# Copy vào thư mục web server
# XAMPP: C:\xampp\htdocs\CD
# Laragon: C:\laragon\www\CD
# Linux: /var/www/html/CD
```
### Bước 3: Cài đặt dependencies
```bash
cd CD
composer install
```
### Bước 4: Cấu hình Database
1. Tạo database mới:
```sql
CREATE DATABASE mxh_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. Import schema từ file `DATABASE.md` (copy phần SQL và chạy trong phpMyAdmin hoặc MySQL CLI)
### Bước 5: Cấu hình Environment
1. Copy file `.env.example` thành `.env`:
### Bước 6: Cấu hình Apache
Đảm bảo `mod_rewrite` được bật:
```bash
# Linux
sudo a2enmod rewrite
sudo systemctl restart apache2
```
### Bước 7: Phân quyền thư mục (Linux/Mac)
```bash
chmod -R 755 uploads/
chmod -R 755 public/
```
### Bước 8: Truy cập website
Mở trình duyệt: `http://localhost/CD`
---
## II. DEPLOY LÊN SERVER (PRODUCTION)
### Bước 1: Chuẩn bị Server
**Yêu cầu:**
- VPS/Shared Hosting với PHP 7.4+
- MySQL 8.0+
- SSL Certificate (khuyến nghị)
**Cài đặt trên Ubuntu:**
```bash
sudo apt update
sudo apt install apache2 mysql-server php php-mysql php-curl php-mbstring php-xml php-zip
sudo apt install composer
```
### Bước 2: Upload source code
```bash
# Sử dụng Git
cd /var/www/html
git clone your_repo_url CD
# Hoặc upload qua FTP/SFTP
```
### Bước 3: Cài đặt dependencies
```bash
cd /var/www/html/CD
composer install --no-dev --optimize-autoloader
```
### Bước 4: Cấu hình Database
1. Tạo database trên server:
```sql
CREATE DATABASE mxh_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mxh_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON mxh_db.* TO 'mxh_user'@'localhost';
FLUSH PRIVILEGES;
```
2. Import schema từ `DATABASE.md`
### Bước 5: Cấu hình Environment cho Production
### Bước 6: Cấu hình Virtual Host (Apache)
Tạo file `/etc/apache2/sites-available/mxh.conf`:
```apache
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/html/CD
<Directory /var/www/html/CD>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mxh_error.log
CustomLog ${APACHE_LOG_DIR}/mxh_access.log combined
</VirtualHost>
```
Kích hoạt site:
```bash
sudo a2ensite mxh.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
```
### Bước 7: Cài đặt SSL (Let's Encrypt)
```bash
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com
```
### Bước 8: Phân quyền và bảo mật
```bash
# Phân quyền thư mục
sudo chown -R www-data:www-data /var/www/html/CD
sudo chmod -R 755 /var/www/html/CD
sudo chmod -R 775 /var/www/html/CD/uploads
# Bảo vệ file nhạy cảm
sudo chmod 600 /var/www/html/CD/.env
```
### Bước 9: Cấu hình .htaccess cho Production
Chỉnh sửa `RewriteBase` trong `.htaccess` nếu cần:
```apache
# Nếu deploy ở root domain
RewriteBase /
# Nếu deploy trong subfolder
RewriteBase /CD/
```
---
## III. CẤU HÌNH BỔ SUNG
### Google OAuth2
1. Truy cập [Google Cloud Console](https://console.cloud.google.com/)
2. Tạo project mới
3. Vào APIs & Services > Credentials
4. Tạo OAuth 2.0 Client ID
5. Thêm Authorized redirect URIs: `https://yourdomain.com/CD/auth/google/callback`
6. Copy Client ID và Secret vào `.env`
### Cloudinary (Upload ảnh)
1. Đăng ký tại [Cloudinary](https://cloudinary.com/)
2. Lấy Cloud URL từ Dashboard
3. Thêm vào `.env`:
```env
CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_name
CLOUDINARY_FOLDER=mxh/uploads
```
### Gemini AI (Chatbot)
1. Truy cập [Google AI Studio](https://aistudio.google.com/)
2. Tạo API Key
3. Thêm vào `.env`:
```env
GEMINI_API_KEY=your_api_key
GEMINI_MODEL=gemini-2.0-flash-001
```
---
## IV. XỬ LÝ LỖI THƯỜNG GẶP
### Lỗi 500 Internal Server Error
- Kiểm tra file `.htaccess`
- Kiểm tra quyền thư mục
- Xem log: `tail -f /var/log/apache2/error.log`
### Lỗi kết nối Database
- Kiểm tra thông tin trong `.env`
- Đảm bảo MySQL đang chạy
- Kiểm tra firewall cho port 3306
### Lỗi mod_rewrite
```bash
sudo a2enmod rewrite
sudo systemctl restart apache2
```
### Lỗi Permission Denied
```bash
sudo chown -R www-data:www-data /var/www/html/CD
sudo chmod -R 755 /var/www/html/CD
```
---
## V. CẤU TRÚC THƯ MỤC
```
CD/
├── admin/ # Admin panel
├── api/ # API endpoints
├── chatbotAI/ # AI Chatbot
├── checkCmt/ # Comment moderation
├── config/ # Cấu hình (config.php, db.php)
├── controller/ # Controllers
├── model/ # Models
├── public/ # CSS, JS, Images
├── uploads/ # User uploads
├── view/ # Views/Templates
├── .env # Environment variables
├── .htaccess # Apache config
├── composer.json # PHP dependencies
└── index.php # Entry point
```
---
## VI. LIÊN HỆ HỖ TRỢ
Nếu gặp vấn đề trong quá trình cài đặt, vui lòng tạo issue trên repository hoặc liên hệ admin.