ServBay लोकल डेवलपमेंट वातावरण में FuelPHP प्रोजेक्ट बनाना और चलाना
FuelPHP क्या है?
FuelPHP एक लचीला और मॉड्यूलर PHP फ्रेमवर्क है, जिसे आधुनिक वेब एप्लीकेशन के निर्माण के लिए डिज़ाइन किया गया है। यह हायरार्किकल मॉडल-व्यू-कंट्रोलर (HMVC) डिजाइन पैटर्न का अनुसरण करता है और डेवेलपर्स को फास्ट एवं कुशलता के साथ उच्च-गुणवत्ता वाली वेब एप्लीकेशन बनाने के लिए कई महत्वपूर्ण टूल्स और फीचर्स देता है। FuelPHP अपनी शानदार फ्लेक्सिबिलिटी, हाई परफॉर्मेंस और विस्तार के लिए आसानी के कारण कई PHP डेवेलपर्स की पसंदीदा फ्रेमवर्क है।
FuelPHP की प्रमुख खूबियां और फायदे
- HMVC आर्किटेक्चर: हायरार्किकल MVC डिजाइन पैटर्न को सपोर्ट करता है, जिससे कोड का आयोजन, पुन: उपयोग और मॉड्यूलर विकास आसान हो जाता है; खास तौर से बड़े या जटिल प्रोजेक्ट के लिए।
- उच्च प्रदर्शन: FuelPHP परफॉर्मेंस ऑप्टिमाइजेशन को ध्यान में रखकर बनाया गया है। यह तेज़ गति और संसाधन उपयोग में दक्षता के लिए प्रसिद्ध है और उच्च अनुरोधों को कुशलता से संभाल सकता है।
- आसान विस्तार: फ्रेमवर्क में शक्तिशाली एक्सटेंशन मैकेनिज्म दिया गया है, जिससे आप थर्ड-पार्टी लाइब्रेरी या खुद के कस्टम फीचर्स आसानी से जोड़ सकते हैं।
- सुरक्षा: इसमें कई सुरक्षा फीचर्स बिल्ट-इन हैं, जैसे ऑटो इनपुट वेलिडेशन, आउटपुट फ़िल्टरिंग (XSS रोकथाम), CSRF प्रोटेक्शन, SQL इंजेक्शन की सुरक्षा आदि, जिससे आप अधिक सुरक्षित एप्लीकेशन बना सकते हैं।
- मजबूत समुदाय सपोर्ट: FuelPHP के पास सक्रिय डेवेलपर्स का समुदाय है, जिससे टाइमली सहायता और कई थर्ड-पार्टी रिसोर्स मिल सकते हैं।
इन खूबियों के साथ, FuelPHP में डेवेलपर्स फास्ट, सुरक्षित और मेंटेन करने में आसान वेब ऐप्स बना सकते हैं — चाहे वह छोटा प्रोजेक्ट हो या बड़ा एंटरप्राइज सॉल्यूशन।
ServBay का इस्तेमाल करके FuelPHP डेवलपमेंट एनवायरनमेंट सेटअप करना
ServBay एक लोकल वेब डेवलपमेंट वातावरण है, जिसे खासतौर पर डेवेलपर्स के लिए डिज़ाइन किया गया है। इसमें PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis जैसे कई डेवलपमेंट टूल्स और सर्विसेज पहले से इंस्टॉल होती हैं। ServBay की मदद से आप FuelPHP प्रोजेक्ट के लिए आवश्यक रनटाइम एनवायरनमेंट बिना अलग से मैनुअल इंस्टॉलेशन/कॉनफिगरेशन के तैयार कर सकते हैं।
यह गाइड बताता है कि कैसे ServBay के PHP एनवायरनमेंट, वेब सर्वर (Caddy), डेटाबेस और कैश सेवा का उपयोग कर FuelPHP प्रोजेक्ट बनाएं और चलाएं। हम ServBay की वेबसाइट फंक्शन का इस्तेमाल करके वेब सर्वर सेटअप करेंगे, और क्विक एक्सेस व टेस्टिंग प्राप्त करेंगे।
आवश्यक शर्तें
शुरू करने से पहले, सुनिश्चित करें कि:
- आपने macOS पर ServBay सफलतापूर्वक इंस्टॉल और रन कर लिया है।
- ServBay का PHP वातावरण चालू (enabled) है (by default enabled होता है)।
- ServBay में MySQL (या अन्य डेटाबेस) और Redis, Memcached जैसी कैश सेवाएं चालू और ठीक से चल रही हैं।
- ServBay के साथ Composer पहले से उपलब्ध है, अलग से इंस्टॉल करने की ज़रूरत नहीं है।
FuelPHP प्रोजेक्ट बनाना
अनुशंसित प्रोजेक्ट स्टोरेज पाथ
ServBay डेवेलपर्स को सुझाव देता है कि वेबसाइट प्रोजेक्ट /Applications/ServBay/www डायरेक्टरी में रखें। यह ServBay के लिए प्रबंधन और सेटअप में सहायक होता है। हम भी इसी डायरेक्टरी का उदाहरण लेंगे।
वेबसाइट रूट डायरेक्टरी में जाएं
टर्मिनल खोलें और ServBay की सुझाई गई वेबसाइट रूट डायरेक्टरी में जाएं:
bashcd /Applications/ServBay/www1प्रोजेक्ट डायरेक्टरी बनाएं
अपने FuelPHP प्रोजेक्ट के लिए एक नई डायरेक्टरी बनाएं और उसमें जाएं:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app1
2Composer का उपयोग करके FuelPHP प्रोजेक्ट बनाएं
इसी डायरेक्टरी में Composer से FuelPHP फ्रेमवर्क डाउनलोड और इनिशियलाइज़ करें।
.का मतलब वर्तमान डायरेक्टरी में प्रोजेक्ट बनाना है:bashcomposer create-project fuel/fuel .1Composer स्वचालित रूप से FuelPHP फ्रेमवर्क और इसकी निर्भरताएं
servbay-fuelphp-appडायरेक्टरी में डाउनलोड कर देगा।
वेब सर्वर कॉन्फ़िगरेशन (ServBay वेबसाइट फंक्शन में)
ब्राउज़र से अपने FuelPHP प्रोजेक्ट को एक्सेस करने के लिए, ServBay की वेबसाइट फंक्शन से वर्चुअल होस्ट सेटअप करें।
- ServBay मुख्य इंटरफ़ेस खोलें।
- साइडबार में वेबसाइट पर क्लिक करें।
- इंटरफ़ेस के दाईं ऊपर किनारे पर Add Website बटन पर क्लिक करें।
- खुले कॉन्फ़िग विंडो में ये जानकारी भरें:
- नाम: अपनी वेबसाइट के लिए पहचाने योग्य नाम रखें, जैसे
My First FuelPHP Dev Site - डोमेन: लोकल डेवलपमेंट डोमेन सेट करें, जैसे
servbay-fuelphp-test.local(ServBay इसे लोकल पर खुद resolve कर देगा) - वेबसाइट टाइप:
PHPचुनें - PHP संस्करण: जिस PHP वर्जन का प्रयोग करना है, चुनें (जैसे
8.3) - रूट डायरेक्टरी: FuelPHP की public डायरेक्टरी को चुने - प्रवेश फ़ाइल है
public/index.php, इसलिए रूट डायरेक्टरी होगी:/Applications/ServBay/www/servbay-fuelphp-app/public
- नाम: अपनी वेबसाइट के लिए पहचाने योग्य नाम रखें, जैसे
- Add बटन पर क्लिक करके सेटिंग सेव करें
ServBay अपने आप Caddy की सेटिंग अपडेट करेगा और सेवा को रीलोड करेगा, जिसके बाद नया डोमेन एक्टिवेट हो जाएगा।
मुख्य वेबसाइट जोड़ने की प्रक्रिया ServBay डॉ्यूमेंटेशन के पहली वेबसाइट जोड़ना सेक्शन में देख सकते हैं।
FuelPHP प्रोजेक्ट सर्विस कनेक्शन कॉन्फ़िगरेशन
FuelPHP प्रोजेक्ट में आम तौर पर डेटाबेस, कैशिंग आदि सेवाओं के लिए कनेक्टिविटी जानकारी सेट करनी होती है।
डेटाबेस कॉन्फ़िगरेशन
FuelPHP का डेटाबेस कॉन्फ़िग fuel/app/config/development/db.php फाइल में होता है। इस फाइल को एडिट करके अपनी डेटाबेस कनेक्शन सेट करें। मान लें आप ServBay का डिफ़ॉल्ट MySQL इस्तेमाल कर रहे हैं:
php
<?php
/**
* डेवलपमेंट डेटाबेस सेटिंग्स। ये ग्लोबल सेटिंग्स के साथ मर्ज हो जाती हैं।
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // सुनिश्चित करें कि fuel_dev डेटाबेस मौजूद है
'username' => 'root', // ServBay MySQL डिफ़ॉल्ट यूज़र
'password' => 'root', // ServBay MySQL डिफ़ॉल्ट पासवर्ड (सिर्फ लोकल डेवेलपमेंट के लिए!)
],
'identifier' => '`', // MySQL में identifier में बैकटीक का प्रयोग जरूरी है
],
];1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
ध्यान दें:
- आपको ServBay के डेटाबेस टूल (phpMyAdmin या Adminer) में
fuel_devनाम का डेटाबेस मैन्युअली बनाना होगा। ServBay का डिफ़ॉल्ट MySQL यूज़रrootऔर पासवर्ड भीrootहै — सिर्फ लोकल डेवलपमेंट के लिए। 'identifier' => ''` MySQL के लिए जरूरी है ताकि टेबल और फील्ड नाम सही तरीके से कोट हो।
कैशिंग कॉन्फ़िगरेशन (Memcached और Redis)
FuelPHP कई तरह के कैश ड्राइवर सपोर्ट करता है। इसकी सेटिंग fuel/app/config/cache.php फाइल में होती है। ध्यान दें ServBay में Memcached और/या Redis सर्विस चालू होनी चाहिए।
Memcached कॉन्फ़िग (fuel/app/config/cache.php):
अगर Memcached को डिफॉल्ट कैश ड्राइवर बनाना है:
php
<?php
return [
'driver' => 'memcached', // डिफ़ॉल्ट ड्राइवर memcached सेट करें
'memcached' => [
'cache_id' => 'fuel', // कैश ID
'servers' => [
'default' => [
'host' => '127.0.0.1', // Memcached का डिफ़ॉल्ट एड्रेस
'port' => 11211, // Memcached का डिफ़ॉल्ट पोर्ट
'weight' => 100,
],
],
'compression' => false, // कम्प्रेशन का इस्तेमाल करना है या नहीं
],
// ... अन्य कैश ड्राइवर सेटिंग्स
];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ServBay के PHP में आम तौर पर Memcached एक्सटेंशन पहले से होता है।
Redis कॉन्फ़िग (fuel/app/config/redis.php):
Redis के लिए कनेक्शन जानकारी अलग फाइल (redis.php) में रहती है:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Redis का डिफ़ॉल्ट एड्रेस
'port' => 6379, // Redis का डिफ़ॉल्ट पोर्ट
'database' => 0, // Redis डेटाबेस इंडेक्स
],
// आप कई Redis कनेक्शन सेट कर सकते हैं
];1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
ServBay के PHP में Redis एक्सटेंशन आम तौर पर पहले से इंस्टॉल होता है।
डेटाबेस और कैशिंग सर्विस का उदाहरण
FuelPHP और डेटाबेस/कैशिंग सेवाओं की इंटरैक्शन का डेमो दिखाने के लिए नीचे कुछ उदाहरण कोड दिये गये हैं।
डेटाबेस टेबल बनाना (FuelPHP Migrations के द्वारा)
FuelPHP में Oil टूल से डेटाबेस माइग्रेशन मैनेज कर सकते हैं — यानि डेटाबेस स्ट्रक्चर का वर्शन कंट्रोल।
माइग्रेशन फाइल बनाएं
प्रोजेक्ट की रूट डायरेक्टरी (
servbay-fuelphp-app) में Oil टूल से नया माइग्रेशन फाइल बनाएं ताकिusersटेबल बने:bashphp oil generate migration create_users_table1इससे
fuel/app/migrationsमें समय/तिथि वाली नई फाइल बनेगी।माइग्रेशन फाइल एडिट करें
नयी बनी फाइल (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php) खोलें औरup()वdown()फंक्शन सेट करें:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // 'users' टेबल बनाएं DBUtil::create_table('users', [ 'id' => ['type' => 'int', 'constraint' => 11, 'auto_increment' => true], 'name' => ['type' => 'varchar', 'constraint' => 100], 'email' => ['type' => 'varchar', 'constraint' => 100, 'unique' => true], ], ['id'], true, 'InnoDB', 'utf8mb4_unicode_ci'); // प्राइमरी की, इंडेक्स, इंजन और कैरेक्टर सेट सहित } public function down() { // 'users' टेबल हटाएं (rollback) DBUtil::drop_table('users'); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23माइग्रेशन रन करें
रूट डायरेक्टरी (
servbay-fuelphp-app) में Oil टूल से माइग्रेशन रन करें, जिससे टेबल बने:bashphp oil refine migrate1अगर सब सही चला, तो
fuel_devडेटाबेस मेंusersटेबल बन जाएगी।
कंट्रोलर की उदाहरण कोड जोड़ना
फाइल fuel/app/classes/controller/welcome.php में डेमो के लिए डेटाबेस और कैश ऑपरेशन वाले एक्शन जोड़ें:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // DB facade लाएं
use Fuel\Core\Redis; // Redis facade लाएं
class Controller_Welcome extends Controller
{
// डिफ़ॉल्ट होमपेज एक्शन
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Memcached डेमो एक्शन
public function action_memcached()
{
// कैश से डेटा पाने की कोशिश
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// कैश में नहीं मिला तो डालें
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // 60 सेकंड के लिए कैश
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Redis डेमो एक्शन
public function action_redis()
{
// Redis इंस्टेंस पाएं (डिफॉल्ट कनेक्शन)
$redis = \Redis_Db::instance(); // FuelPHP 1.x में Redis_Db::instance() इस्तेमाल होता है
// या अगर कई कनेक्शन हैं तो \Redis_Db::instance('connection_name')
// Redis में डेटा सेट करें
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Redis से डेटा पाएं
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// MySQL में डेटा लिखने का ऐक्शन
public function action_mysql_add()
{
try {
// 'users' टेबल में रिकॉर्ड डालें
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // हर बार यूनिक नाम के लिए टाइमस्टैम्प
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() नए ID का array देता है
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// डेटाबेस exception पकड़ें, जैसे डुप्लिकेट ईमेल
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// MySQL से डेटा पढ़ने का ऐक्शन
public function action_mysql()
{
// 'users' टेबल से सारे रिकॉर्ड के लिए क्वेरी
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// JSON में यूज़र लिस्ट भेजें
return Response::forge(json_encode($users, JSON_PRETTY_PRINT));
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
ध्यान रखें:
- यहां
DBऔरRedisfacade (use Fuel\Core\DB;,use Fuel\Core\Redis;) शामिल हैं ताकि सीधे इस्तेमाल कर सकें। - Memcached और Redis की keys में
servbay_prefix इस्तेमाल किया गया है। - MySQL ऐड एक्साम्पल में यूनिक डेटा के लिए टाइम और error handling जोड़ा गया है।
- FuelPHP 1.x में
\Redis_Db::instance()से Redis instance मिलता है।
रूटिंग कॉन्फ़िगरेशन करना
इन एक्शन को एक्सेस करने के लिए, fuel/app/config/routes.php फाइल में सही रूट्स सेट करें। डिफॉ़ल्ट रूप से welcome controller की routing सेट होती है, मगर memcached, redis, mysql_add, mysql जैसी एक्शन के लिए हमें रूट जोड़ना होगा।
fuel/app/config/routes.php में ऐसे जोड़ें या संशोधित करें:
php
<?php
return array(
'_root_' => 'welcome/index', // डिफॉ़ल्ट रूटिंग welcome कंट्रोलर की index action की ओर
'_404_' => 'welcome/404', // 404 पेज के लिए routing
// नये डेमो एक्शन के रूट
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... अन्य रूटिंग
);1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
वेबसाइट की टेस्टिंग और एक्सेस
अब आप ब्राउज़र से ServBay में सेट किए डोमेन https://servbay-fuelphp-test.local पर जाकर FuelPHP प्रोजेक्ट और उसकी सेवाओं को टेस्ट कर सकते हैं।
- डिफॉल्ट पेज देखना:
https://servbay-fuelphp-test.local- अपेक्षित आउटपुट:
Hello ServBay!
- अपेक्षित आउटपुट:
- Memcached टेस्ट करें:
https://servbay-fuelphp-test.local/memcached- पहली बार:
Hello Memcached from ServBay! (from cache)(अगर कैश सर्विस सही है) - बाद में:
Hello Memcached from ServBay! (cached)(अगर कैश सेवा सही है और एक्सपायर्ड नहीं हुई)
- पहली बार:
- Redis टेस्ट करें:
https://servbay-fuelphp-test.local/redis- अपेक्षित आउटपुट:
Hello Redis from ServBay!(Redis सेवा सही होने पर)
- अपेक्षित आउटपुट:
- MySQL में यूज़र जोड़ना:
https://servbay-fuelphp-test.local/mysql_add- अपेक्षित आउटपुट:
User added with ID: [नये डाले गये ID](MySQL सही हो, डेटाबेस/टेबल सही हो)
- अपेक्षित आउटपुट:
- MySQL यूज़र लिस्ट पढ़ना:
https://servbay-fuelphp-test.local/mysql- अपेक्षित आउटपुट: JSON array जिसमें
usersटेबल के रिकॉर्ड हों (जब डेटा मौजूद हो)
- अपेक्षित आउटपुट: JSON array जिसमें
HTTPS नोट: ServBay लोकल वेबसाइट के लिए SSL सर्टिफिकेट साथ देता है, और ServBay User CA या ServBay Public CA द्वारा ट्रस्ट करता है। अगर ब्राउज़र में सर्टिफिकेट त्रुटि आए, तो देखें कि आपने ServBay का CA सर्टिफिकेट अपने सिस्टम में ट्रस्ट किया हुआ है या नहीं।
ध्यान रखने वाली बातें
- सुनिश्चित करें कि ServBay इंटरफेस में PHP, Caddy (या Nginx/Apache), MySQL (अगर इस्तेमाल हो), Redis (अगर इस्तेमाल हो), Memcached (अगर इस्तेमाल हो) — सब सेवाएं चल रही हों।
- ServBay के डेटाबेस टूल में
fuel_devडेटाबेस मैन्युअली बनाया गया हो (या आपनेdb.phpमें कोई अन्य मौजूद डेटाबेस सेट किया हो)। FuelPHP का माइग्रेशन टूलoil refine migrateसिर्फ टेबल बनाएगा, डेटाबेस नहीं। - FuelPHP का public entry file
public/index.phpहै, इसलिए ServBay वेबसाइट सेटअप में रूट डायरेक्टरी को प्रोजेक्ट केpublicसबडायरेक्टरी पर ही सेट करें।
सारांश
ServBay की मदद से macOS पर FuelPHP प्रोजेक्ट के लिए पूरी तरह लोकल डेवलपमेंट वातावरण बहुत सहजता से सेटअप कर सकते हैं। इस लेख में FuelPHP प्रोजेक्ट बनाना, ServBay की वेबसाइट फंक्शन सेट करना, प्रोजेक्ट को डेटाबेस और कैशिंग से कनेक्ट करना और डेमो कोड द्वारा सब फीचर ट्राय करना विस्तार से बताया है। ServBay के साथ पहले से शामिल सेवाएं और इसकी सरल सेटिंग प्रक्रिया आपकी डेवेलपमेंट स्पीड को काफी बढ़ा सकते हैं।
आशा है, यह गाइड आपके ServBay में FuelPHP डेवलपमेंट की शुरुआत के लिए उपयोगी सिद्ध होगी!
