ServBay में ThinkPHP 8 प्रोजेक्ट कैसे बनाएं और चलाएँ
यह लेख आपको ServBay के ताकतवर लोकल वेब डेवलपमेंट एनवायरनमेंट का उपयोग करके ThinkPHP 8 फ्रेमवर्क आधारित PHP प्रोजेक्ट को तेज़ी से बनाना, सेटअप करना और चलाने के तरीके बताएगा। ServBay में पहले से सेट किए गए PHP एनवायरनमेंट, वेब सर्वर (Caddy या Nginx), और अलग-अलग डेटाबेस सर्विस उपलब्ध हैं, जिससे ThinkPHP प्रोजेक्ट का लोकल सेटअप काफी आसान हो जाता है।
ThinkPHP क्या है?
ThinkPHP चीन में विकसित एक ओपन सोर्स, तेज़, सरल, ऑब्जेक्ट-ओरिएंटेड PHP डेवलपमेंट फ्रेमवर्क है। इसमें सिंपल और इफिशिएंट कोडिंग प्रिंसिपल हैं, जिससे वेब एप्लिकेशन बनाना आसान हो जाता है। इसकी आसान उपयोगिता, फीचर्स (मसलन — पावरफुल ORM, फ्लेक्सिबल रूटिंग, इनबिल्ट टेम्प्लेट इंजन, कैशिंग सपोर्ट), और सक्रिय कम्युनिटी की वजह से यह चीन के PHP डेवलपमेंट में बहुत लोकप्रिय है।
ThinkPHP के मुख्य फीचर्स और फायदे
- सिंपल और तेज़: फ्रेमवर्क की डिजाइन और कोड स्ट्रक्चर साफ है, समझने-रखने में आसान और डेवलपमेंट स्पीड बढ़ाता है।
- संपूर्ण फीचर्स: Web development में ज़रूरी फीचर्स जैसे MVC, ORM, टेम्प्लेट इंजन, कैश, सेशन, परमिशन, फॉर्म टोकन आदि पहले से उपलब्ध।
- पावरफुल ORM: बिल्ट-इन ORM से डेटाबेस ऑपरेशन आसान और सुरक्षित।
- फ्लेक्सिबल रूटिंग: मल्टीपल रूटिंग मेथड्स की सपोर्ट, जिससे कॉम्प्लेक्स URL संरचना सम्भव।
- समृद्ध इकोसिस्टम: एक्सटेंशन लाइब्रेरीज, प्लगइन्स, और सक्रिय डेवलपर कम्युनिटी।
- लगातार अपडेट: फ्रेमवर्क का नियमित अपग्रेड—PHP और वेब ट्रेंड्स के अनुसार।
ThinkPHP छोटे प्रोजेक्ट से लेकर बड़े एंटरप्राइज वेब एप्लिकेशन तक हर स्केल के लिए उपयुक्त है।
ServBay से ThinkPHP 8 प्रोजेक्ट सेटअप करें
ServBay, ThinkPHP 8 प्रोजेक्ट के लोकल डेवलपमेंट के लिए आदर्श एनवायरनमेंट देता है:
- PHP के अलग-अलग वर्शन और एक्सटेंशन प्री-इंस्टॉल्ड।
- इनबिल्ट Web Server (Caddy या Nginx) से वेबसाइट आसानी से सेट करें।
- MySQL, PostgreSQL, MongoDB, Redis, Memcached जैसी डेटाबेस सर्विस इंटीग्रेटेड।
- Composer dependency मैनेजर भी मौजुद।
इस गाइड में हम ServBay के इन्हीं फायदों से आपका ThinkPHP 8 प्रोजेक्ट तैयार करेंगे।
आवश्यक तैयारी
शुरू करने से पहले ये सुनिश्चित करें:
- macOS या Windows सिस्टम पर आपने ServBay डाउनलोड और इंस्टॉल कर लिया है।
- ServBay रन हो रहा है, ज़रूरी PHP वर्शन (ThinkPHP 8 के लिए PHP 8.0+) और आपके डेटाबेस सर्विसेज (जैसे MySQL, PostgreSQL, Redis, Memcached) चालू हैं। इन्हें ServBay के "सॉफ़्टवेयर पैकेज" टैब में जाँच और चालू किया जा सकता है।
ThinkPHP प्रोजेक्ट बनाना
ServBay सजेस्ट करता है कि सारे लोकल वेबसाइट्स /Applications/ServBay/www
डायरेक्टरी में ही रखें ताकि सर्वबै इनके मैनेजमेंट को ऑप्टिमाइज़ कर सके।
Composer इंस्टॉलेशन जांचें
ServBay इंस्टॉलेशन के साथ ही Composer पहले से उपलब्ध होता है। अलग से इंस्टाल करने की जरूरत नहीं। सर्वबै टर्मिनल में
composer --version
कमांड से वर्शन चेक करें।Composer से ThinkPHP प्रोजेक्ट बनाएं
macOS का टर्मिनल खोलें और नीचे दिया कमांड चलाएं जिससे ServBay वेबसाइट डायरेक्टरी में नया ThinkPHP 8 प्रोजेक्ट बनेगा:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app
1
2इससे
/Applications/ServBay/www
मेंservbay-thinkphp-app
फोल्डर बन जाएगा और उसमें ThinkPHP 8 के सभी ज़रूरी फाइल्स और डिपेंडेंसी डाउनलोड हो जाएंगी।प्रोजेक्ट डायरेक्टरी में जाएं
प्रोजेक्ट बनने के बाद, डायरेक्टरी बदलें:
bashcd /Applications/ServBay/www/servbay-thinkphp-app
1
प्रोजेक्ट सेटिंग्स की इनिशियलाइजेशन
अब, कुछ बेसिक सेटिंग्स करना ज़रूरी है।
डेटाबेस कनेक्शन सेट करें
ThinkPHP की डेटाबेस सेटिंग्स फाइल
config/database.php
में रहती हैं। जिस डेटाबेस सर्विस को आप ServBay में चालू करेंगे, उसके मुताबिक ये फाइल एडिट करें।उदाहरण — अगर ServBay के डिफ़ॉल्ट MySQL यूज़ करना है:
php<?php // config/database.php return [ // डिफ़ॉल्ट डेटाबेस कनेक्शन सेटिंग 'default' => env('database.driver', 'mysql'), // अलग-अलग डेटाबेस कनेक्शन सेटिंग्स 'connections' => [ 'mysql' => [ // डेटाबेस टाइप 'type' => 'mysql', // सर्वर एड्रेस 'hostname' => env('database.hostname', '127.0.0.1'), // डेटाबेस नाम 'database' => env('database.database', 'servbay_thinkphp_app'), // हर प्रोजेक्ट के लिए अलग डेटाबेस रखें // यूज़रनेम 'username' => env('database.username', 'root'), // पासवर्ड 'password' => env('database.password', 'password'), // ServBay का डिफ़ॉल्ट पासवर्ड, सिर्फ लोकल डेवलपमेंट के लिए! // पोर्ट 'hostport' => env('database.hostport', '3306'), // ... अन्य सेटिंग्स ... ], // ... अन्य डेटाबेस कनेक्शन ... ], ];
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महत्वपूर्ण टिप्स:
database
वैल्यू में अपने प्रोजेक्ट के अनुसार ही डेटाबेस नाम डालें (जैसे ServBay के phpMyAdmin या Adminer मेंservbay_thinkphp_app
नाम से डेटाबेस बनाएं)।- ServBay का डिफ़ॉल्ट
root
पासवर्डpassword
है — सिर्फ लोकल डेवलपमेंट में ही इस्तेमाल करें! प्रोडक्शन में हमेशा स्ट्रांग पासवर्ड और लिमिटेड परमिशन वाला यूजर रखें। - अगर आप
.env
फाइल से एनवायरमेंट वेरिएबल्स संभाल रहे हैं, तो वहाँ की वैल्यूconfig/database.php
की डिफ़ॉल्ट वैल्यूज़ को ओवरराइड करेगी।
Web Server सेटअप करें
ThinkPHP का एंट्री फाइल public/index.php
है और रूटिंग के लिए URL Rewrite नियम चाहिए। ThinkPHP में डायरेक्ट फाइल एक्सेस नहीं होता—इसलिए ServBay की बिल्ट-इन Rewrite नियमों की जरूरत पड़ेगी।
वेबसाइट सेटिंग्स में Rewrite रूल ड्रॉपडाउन में ThinkPHP
चुनें और सेव करें।
विस्तृत सेटअप के लिए देखें पहली वेबसाइट जोड़ना।
उदाहरण कोड जोड़ें
वेबसाइट सेटिंग टेस्ट करने और ThinkPHP की बेसिक रूटिंग देखने के लिए एक सिंपल रूट और कंट्रोलर बनाएं।
अपनी प्रोजेक्ट फाइल /Applications/ServBay/www/servbay-thinkphp-app/route/app.php
एडिट करें—GET रिक्वेस्ट रूटिंग के लिए नीचे का कोड डालें:
php
<?php
// route/app.php
use think\facade\Route;
// servbay रूट डिफाइन करें — /servbay एक्सेस पर एनोनिमस फंक्शन रन होगा
Route::get('servbay', function () {
return 'Hello ServBay!';
});
// ... अन्य रूट्स ...
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
वेबसाइट ऐक्सेस करें
सेटअप पूरा करने के बाद, वेब ब्राउजर खोलें, अपनी लोकल डोमेन और नाम के अनुसार नीचे दिए URL को ओपन करें:
https://thinkphp.servbay.demo/servbay
अगर सबकुछ ठीक है तो ब्राउजर में Hello ServBay!
दिखाई देगा। इसका मतलब ThinkPHP 8 प्रोजेक्ट ServBay एनवायरनमेंट पर सफलतापूर्वक रन हो गया, वेब सर्वर और PHP-FPM भी सेट हो गए।
NoSQL डेटाबेस उदाहरण
ServBay कई तरह के NoSQL डेटाबेस जैसे Memcached और Redis प्री-इंस्टॉल्ड रखता है। ThinkPHP में आसान Cache एब्स्ट्रैक्शन लेयर होती है जिससे इन्हें कैश ड्राइवर की तरह जोड़ सकते हैं।
Memcached का उदाहरण
Memcached एक्सटेंशन इंस्टॉल करें
ServBay में PHP के साथ Memcached एक्सटेंशन इंस्टॉल्ड है। "सॉफ़्टवेयर पैकेज" टैब में जाकर Memcached सर्विस चालू होने की पुष्टि करें।
Memcached Cache सेट करें
config/cache.php
एडिट करें और ThinkPHP में Memcached कैश ड्राइवर सेट करें:php<?php // config/cache.php return [ // डिफ़ॉल्ट कैश ड्राइवर 'default' => env('cache.driver', 'memcached'), // कैश कनेक्शन सेटिंग्स 'stores' => [ 'memcached' => [ // कैश टाइप 'type' => 'memcached', // सर्वर लिस्ट 'host' => '127.0.0.1', // ServBay Memcached डिफ़ॉल्ट एड्रेस 'port' => 11211, // डिफ़ॉल्ट पोर्ट 'persistent' => false, 'expire' => 0, 'timeout' => 0, 'prefix' => '', ], // ... अन्य कैश सेटिंग्स ... ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23कोड में Memcached Cache इस्तेमाल करें
अपने कंट्रोलर या रूटिंग में ThinkPHP के
Cache
Facade से Memcached ऑपरेट करें:php<?php use think\facade\Cache; use think\facade\Route; Route::get('/memcached-example', function () { // 600 सेकंड की वैलिडिटी के साथ कैश सेट करें Cache::set('my_memcached_key', 'This value is from Memcached!', 600); // कैश प्राप्त करें $value = Cache::get('my_memcached_key'); return 'Value from Memcached: ' . $value; });
1
2
3
4
5
6
7
8
9
10
11
12
13टेस्ट करने के लिए खोलें:
https://thinkphp.servbay.demo/memcached-example
Redis का उदाहरण
Redis एक्सटेंशन इंस्टॉल करें
ServBay में PHP के साथ Redis एक्सटेंशन भी इंस्टॉल्ड है। "सॉफ़्टवेयर पैकेज" टैब में जाकर Redis सर्विस चालू करें।
Redis Cache सेट करें
config/cache.php
एडिट करें और ThinkPHP में Redis कैश ड्राइवर सेट करें:php<?php // config/cache.php return [ // डिफ़ॉल्ट कैश ड्राइवर 'default' => env('cache.driver', 'redis'), // कैश कनेक्शन सेटिंग्स 'stores' => [ 'redis' => [ // कैश टाइप 'type' => 'redis', // सर्वर एड्रेस 'host' => env('cache.host', '127.0.0.1'), // ServBay Redis डिफ़ॉल्ट पता // पोर्ट 'port' => env('cache.port', 6379), // ServBay Redis डिफ़ॉल्ट पोर्ट // पासवर्ड (ServBay में नो पासवर्ड बाय डिफॉल्ट) 'password' => env('cache.password', ''), // No default password 'select' => 0, 'timeout' => 0, 'expire' => 0, 'persistent' => false, 'prefix' => '', ], // ... अन्य कैश सेटिंग्स ... ], ];
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टिप: ServBay Redis में पासवर्ड सेट नहीं है। अगर आप मैन्युअली कोई पासवर्ड देते हैं तो
password
फील्ड अपडेट करें।कोड में Redis Cache इस्तेमाल करें
अपने कंट्रोलर या रूटिंग में ThinkPHP के
Cache
Facade से Redis ऑपरेट करें:php<?php use think\facade\Cache; use think\facade\Route; Route::get('/redis-example', function () { // कैश सेट करें — हमेशा वैलिड Cache::set('my_redis_key', 'Hello from Redis!'); // कैश प्राप्त करें $value = Cache::get('my_redis_key'); return 'Value from Redis: ' . $value; });
1
2
3
4
5
6
7
8
9
10
11
12
13टेस्ट करें:
https://thinkphp.servbay.demo/redis-example
रिलेशनल डेटाबेस उदाहरण
ServBay में MySQL और PostgreSQL जैसे प्रचलित रिलेशनल डेटाबेस इंटीग्रेटेड है। ThinkPHP ORM इनसे आसानी से इंटरैक्ट कर सकता है।
ThinkPHP डेटाबेस माइग्रेशन टूल इस्तेमाल करें
ThinkPHP में माइग्रेशन टूल से डेटाबेस स्ट्रक्चर का बदलाव मैनेज करना आसान होता है, जिससे टीम वर्क और वर्शनिंग आसान होती है।
माइग्रेशन टूल इंस्टॉल करें
प्रोजेक्ट रूट डायरेक्टरी में Composer से ThinkPHP माइग्रेशन एक्सटेंशन इंस्टॉल करें:
bashcd /Applications/ServBay/www/servbay-thinkphp-app composer require topthink/think-migration
1
2माइग्रेशन फाइल बनाएं
ThinkPHP के टूल से नया माइग्रेशन फाइल बनाएं—मान लीजिए
users
टेबल बनानी है:bashphp think migrate:create CreateUserTable
1इससे
database/migrations
डायरेक्टरी में एक नया PHP फाइल बनेगा, टाइमस्टैम्प और आपके नाम से (जैसे20231027100000_create_user_table.php
)।माइग्रेशन फाइल एडिट करें
database/migrations
में नए बने फाइल काup()
मेथड एडिट करें, जिससेusers
टेबल की संरचना बनेगी:php<?php // database/migrations/YYYYMMDDHHMMSS_create_user_table.php use think\migration\Migrator; use think\migration\db\Column; class CreateUserTable extends Migrator { /** * Change Method. * * Write your reversible migrations using this method. * * More information on writing migrations is available here: * http://docs.phinx.org/en/latest/migrations.html#the-change-method * * The following commands can be used in this method and Phinx will * automatically reverse them when rolling back: * * createTable * renameTable * addColumn * addCustomColumn * renameColumn * addIndex * addForeignKey * createDatabase * renameDatabase * dropTable * dropColumn * dropIndex * dropForeignKey */ public function change() { // createTable मेथड से टेबल बनाएं $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50, 'comment' => 'यूज़र का नाम']) ->addColumn('email', 'string', ['limit' => 100, 'comment' => 'ईमेल एड्रेस']) ->addIndex(['email'], ['unique' => true]) // यूनिक इंडेक्स जोड़ें ->addTimestamps() // created_at और updated_at फील्ड जोड़ें ->create(); // टेबल बनाएं } // change मेथड नहीं, तो up() और down() अलग से डिफाइन कर सकते हैं /* public function up() { $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50, 'comment' => 'यूज़र का नाम']) ->addColumn('email', 'string', ['limit' => 100, 'comment' => 'ईमेल एड्रेस']) ->addIndex(['email'], ['unique' => true]) ->addTimestamps() ->create(); } public function down() { $this->dropTable('users'); } */ }
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डेटाबेस माइग्रेशन रन करें
सर्वबै टर्मिनल में रहकर, प्रोजेक्ट रूट पर माइग्रेशन कमांड रन करें जिससे
users
टेबल बन जाएगी:bashphp think migrate:run
1अगर सफलता मिली तो आपके डेटाबेस में नया
users
टेबल बन गया होगा।
MySQL उदाहरण
मान लीजिए MySQL सर्विस चालू है और config/database.php
में सब कुछ सेट है।
MySQL कनेक्शन सेट करें
ऊपर दिए "प्रोजेक्ट सेटिंग्स" वाले MySQL उदाहरण देखकर
config/database.php
की सेटिंग्स सही करें।कोड में यूज़र डेटा डालें
ThinkPHP का
Db
Facade या ORM मॉडल यूज़ करें। उदाहरण:php<?php use think\facade\Db; use think\facade\Route; Route::get('/mysql-add-user', function () { try { Db::table('users')->insert([ 'name' => 'ServBay Demo User', 'email' => 'demo@servbay.demo', // ब्रांडिंग के लिए 'created_at' => date('Y-m-d H:i:s'), // टाइमस्टैम्प 'updated_at' => date('Y-m-d H:i:s'), ]); return 'User added successfully!'; } catch (\Exception $e) { return 'Error adding user: ' . $e->getMessage(); } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17टेस्ट करें:
https://thinkphp.servbay.demo/mysql-add-user
यूज़र डेटा पढ़ें कोड से
Db
Facade या ORM मॉडल से डेटा पढ़ें:php<?php use think\facade\Db; use think\facade\Route; Route::get('/mysql-users', function () { $users = Db::table('users')->select(); // सभी यूज़र लाएं return json($users); // JSON में रिटर्न करें });
1
2
3
4
5
6
7
8देखें:
https://thinkphp.servbay.demo/mysql-users
PostgreSQL उदाहरण
मान लीजिए PostgreSQL सर्विस चालू है और कनेक्शन सेट हो चुका है।
PostgreSQL कनेक्शन सेट करें
config/database.php
में नीचे जैसा pgsql कनेक्शन डालें:php<?php // config/database.php (कुछ हिस्सा) return [ // ... अन्य सेटिंग्स ... 'connections' => [ // ... MySQL सेटिंग्स ... 'pgsql' => [ // डेटाबेस टाइप 'type' => 'pgsql', // सर्वर एड्रेस 'hostname' => env('database.hostname', '127.0.0.1'), // डेटाबेस नाम 'database' => env('database.database', 'servbay_thinkphp_app'), // हर प्रोजेक्ट के लिए अलग डेटाबेस रखें // यूज़रनेम 'username' => env('database.username', 'root'), // पासवर्ड 'password' => env('database.password', 'password'), // ServBay में डिफ़ॉल्ट // पोर्ट 'hostport' => env('database.hostport', '5432'), // PostgreSQL का पोर्ट // ... अन्य सेटिंग्स ... ], // ... अन्य डेटाबेस कनेक्शन ... ], ];
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महत्वपूर्ण टिप्स:
- MySQL जैसी ही विधि—हर प्रोजेक्ट के लिए अलग PostgreSQL डेटाबेस बनाएं और सेट करें।
- ServBay का pgsql
root
पासवर्ड भीpassword
है — सिर्फ लोकल डेवलपमेंट के लिए।
कोड में यूज़र डेटा डालें
ThinkPHP का
Db
Facade या ORM—pgsql
कनेक्शन के साथ:php<?php use think\facade\Db; use think\facade\Route; Route::get('/pgsql-add-user', function () { try { Db::connect('pgsql')->table('users')->insert([ // pgsql कनेक्शन 'name' => 'ServBay PgSQL User', 'email' => 'pgsql-demo@servbay.demo', // ब्रांडिंग के लिए // टाइमस्टैम्प—माइग्रेशन और ThinkPHP वर्शन के अनुसार मैनेज करें 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]); return 'PostgreSQL User added successfully!'; } catch (\Exception $e) { return 'Error adding PostgreSQL user: ' . $e->getMessage(); } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18टेस्ट करें:
https://thinkphp.servbay.demo/pgsql-add-user
यूज़र डेटा पढ़ें कोड से
Db
Facade या ORM मॉडल के साथ pgsql कनेक्शन:php<?php use think\facade\Db; use think\facade\Route; Route::get('/pgsql-users', function () { $users = Db::connect('pgsql')->table('users')->select(); // pgsql से लाएं return json($users); // JSON में दिखाएँ });
1
2
3
4
5
6
7
8देखें:
https://thinkphp.servbay.demo/pgsql-users
निष्कर्ष
अब आपने ServBay लोकल डेवलपमेंट एनवायरनमेंट के साथ ThinkPHP 8 प्रोजेक्ट बनाना, सेटअप करना और चलाना सीख लिया। आपने जाना कैसे ServBay के Composer से प्रोजेक्ट बनाए, Caddy वेब सर्वर से ThinkPHP रूटिंग को सेटअप करें, और ServBay के MySQL, PostgreSQL, Memcached, Redis डेटाबेस सेवाओं से कनेक्ट और इस्तेमाल करें।
ServBay ने ThinkPHP जैसे PHP फ्रेमवर्क का लोकल डेवलपमेंट बहुत आसान कर दिया है, जिससे आप अब अपने बिज़नेस लॉजिक पर पूरा ध्यान दे सकते हैं। आगे अपने ThinkPHP एप्लिकेशन को और बढ़ाएँ—ServBay के सॉफ्टवेयर पैकेज और फ़ीचर्स का अधिकतम लाभ उठाएँ!