Balcms เป็นเฟรมเวิร์ก Zend และหลักคำสอน ORM CMS ขับเคลื่อน
Balcms นั้นแตกต่างจาก CMS อื่น ๆ อย่างที่เราสามารถขยายได้โดยตรงโดยเพียงแค่เพิ่มโมดูลใหม่ - หรือแม้กระทั่งเพียงแค่แก้ไข CMS โดยตรง (เนื่องจาก CMS เป็นเพียงโมดูลและชุดของการพึ่งพา) ไม่มี CMS อื่น ๆ ที่ฉันรู้ว่าจริง ๆ แล้วช่วยให้นักพัฒนาสามารถขยาย CMS ได้อย่างง่ายดายและยังโดยตรงโดยปกติแล้วคุณจะถูกล็อคไว้ในเฟรมเวิร์กปลั๊กอินที่เฉพาะเจาะจงและ จำกัด - ซึ่งดูดลูกบอลได้จริง ๆ ถ้าคุณพยายามสร้าง CMS ที่ปรับขนาดได้และขยายได้สำหรับแอปพลิเคชันที่กำหนดเอง เช่นนี้หากคุณไม่ชอบอะไรเกี่ยวกับ Balcms หรือต้องการเพิ่มฟังก์ชั่นใหม่ ๆ ที่คุณสามารถเข้าไปได้โดยตรงและทำมัน! คิดว่ามันเป็นรากฐานมากกว่าการล็อคอิน มันปลดปล่อย! Balcms ยังเป็นซอฟต์แวร์ที่มีความคิดเห็นสูงเป็นไปตามแนวทางปฏิบัติที่ดีที่สุดอย่างเคร่งครัด
Balcms ขึ้นอยู่กับบรรทัดคำสั่งอย่างมาก หากคุณอยู่บนแพลตฟอร์ม UNIX/MAC/LINUX คุณจะพบการติดตั้งและการใช้งานค่อนข้างตรงไปตรงมา หากคุณอยู่บนแพลตฟอร์ม Windows คุณอาจต้องเผชิญกับช่วงการเรียนรู้ (และจำเป็นต้องเรียกใช้คำสั่งผ่านเทอร์มินัล Cygwin) - เราขอแนะนำให้รับ Mac
จะไม่มี GUI ส่วนหน้าเพื่อแทนที่การพึ่งพาในบรรทัดคำสั่งในขณะที่เรามองว่าการพึ่งพานี้เป็นเหตุผลที่ดีที่สุด เมื่อคุณคุ้นเคยกับมันแล้วคุณก็หวือหวา ตอนนี้กำลังเสริมพลัง
สำหรับ Windows คุณจะต้องติดตั้ง:
สำหรับ UNIX/MAC/LINUX คุณจะต้องติดตั้ง:
การติดตั้งเหล่านี้จะช่วยให้คุณมีข้อกำหนดต่อไปนี้:
ประการแรกเราจะต้องตรวจสอบให้แน่ใจว่าสภาพแวดล้อมของคุณได้รับการกำหนดค่าอย่างถูกต้อง สำหรับการรันนี้ ./cli check-env หากไม่ส่งคืนข้อความแสดงข้อผิดพลาดใด ๆ คุณสามารถดำเนินการต่อได้ ถ้าเป็นเช่นนั้นโปรดเข้าร่วมข้อความ หากคุณได้รับข้อความบอกว่าการติดตั้ง Git ของคุณไม่ได้รับการกำหนดค่าแล้ววิธีที่ง่ายที่สุดในการกำหนดค่าคือการตั้งค่าบัญชีฟรีใหม่บน GitHub ให้สร้างที่เก็บใหม่กับพวกเขาให้ทำตาม ./cli check-env แนะนำของพวกเขาในการใช้และตั้งค่าที่เก็บ - เมื่อไม่มีการติดตั้ง Balcms
เรียกใช้คำสั่งต่อไปนี้:
mkdir mywebsite
cd mywebsite
curl -OL http://github.com/balupton/balcms/raw/master/cli
./cli birth
คำอธิบาย: สิ่งที่เรากำลังทำอยู่ที่นี่คือการสร้างไดเรกทอรีเว็บไซต์ใหม่ของเรา (โฟลเดอร์) จากนั้นดึงอินเทอร์เฟซบรรทัดคำสั่งของแอปพลิเคชันของเรา มีไฟล์นี้เราสามารถเรียกใช้
./cli birthคำสั่ง./cli birthจริงประกอบด้วยสามมุมมองอื่น ๆ คำสั่งสำคัญคือ:
./cli init-newซึ่งเริ่มต้นที่เก็บในท้องถิ่นของเรา (เป็นที่เก็บใหม่) และคว้าแกนกลางของ CMS./cli configureที่ดึงข้อมูลการพึ่งพาและข้อกำหนดของ CMS และกำหนดค่าโครงสร้างไดเรกทอรี./cli installซึ่งติดตั้งฐานข้อมูลของ CMS ปรับสิทธิ์และเรียกใช้งาน cron ใด ๆ
เราจะใช้คำสั่งเหล่านี้และคล้ายกันในภายหลัง
ในขณะที่กำลังดำเนินการเว็บไซต์ของคุณจะต้องใช้ที่เก็บข้อมูลของตัวเองหรือส่วนตัว คุณสามารถสร้างหนึ่งใน GitHub (แม้ว่าคุณจะต้องการบัญชีส่วนตัวคุณจะต้องมีบัญชีที่ชำระเงิน) หรือคุณสามารถหาโฮสต์ GIT ส่วนตัวทางเลือกได้
เมื่อคำสั่งเหล่านั้นทำงานแล้วและที่เก็บ GIT ระยะไกลของคุณจะถูกตั้งค่า เราต้องการเชื่อมโยงพื้นที่เก็บข้อมูลในพื้นที่ของเรากับที่เก็บระยะไกล เราทำสิ่งนี้โดยการคัดลอก URL Read+Write ของที่เก็บข้อมูลระยะไกลของเรามันควรจะดูบางอย่างเช่น [email protected]:balupton/balcms.git เมื่อนั้นเราจะเรียกใช้คำสั่งต่อไปนี้:
git remote add origin {your git repos read/write url} ; make deploy
คำอธิบาย: คำสั่งที่สองที่นี่
./cli deployจะส่งการเปลี่ยนแปลงของเราจากสาขาการพัฒนาของเราไปยังสาขาที่มั่นคงของเราจากนั้นจากสาขาที่มั่นคงไปยังสาขาmasterในที่สุดก็จะส่งการเปลี่ยนแปลงทั้งหมดไปยังที่เก็บระยะไกลของเรา
เราต้องการส่งการเปลี่ยนแปลงของเราไปยังพื้นที่เก็บข้อมูลระยะไกลเนื่องจากเราสามารถปรับใช้กับเซิร์ฟเวอร์ระยะไกลของเรา (ซึ่งเว็บไซต์ของเราจะโฮสต์และเข้าถึงจริง) ผลประโยชน์อื่น ๆ ก็คือในกรณีที่สภาพแวดล้อมการพัฒนาของเราล่มเราจะมีการสำรองข้อมูลระยะไกล ประโยชน์สุดท้ายและบางทีสิ่งที่ดีที่สุดคือถ้าเราทำงานกับคนอื่น ๆ มันช่วยให้เราสามารถทำงานร่วมกันได้อย่างราบรื่น
เมื่อทุกอย่างเสร็จแล้วตอนนี้คุณจะสามารถเยี่ยมชมเว็บไซต์ Balcms ใหม่ของคุณ ดังนั้นให้นำทางไปยัง LocalHost ของเราและไดเรกทอรีที่เราติดตั้งไว้ใน (เช่น http://localhost/sites/mywebsite )
ในการบริหารเว็บไซต์ใหม่ของคุณคุณจะไปที่ตำแหน่ง admin ในเว็บไซต์ของคุณ (เช่น http://localhost/sites/mywebsite/admin ) ชื่อผู้ใช้เริ่มต้นคือ admin และรหัสผ่านเป็น random - จะระบุไว้ใน application/data/fixtures/data.yml หรือคุณสามารถเปลี่ยนได้โดยใช้พื้นที่การบริหารผู้ใช้
โครงสร้างของ BALCMS นั้นใช้โครงสร้างกรอบ ZEND แบบแยกส่วนมาตรฐานพร้อมส่วนขยายเพิ่มเติมเพื่อการกำหนดค่าและการแปลที่ง่ายขึ้นพร้อมการสนับสนุนสำหรับมันการอัปโหลดสื่อการปรับขนาดภาพออกจากกล่อง
ลองมาดูโครงสร้าง:
.gitignore - Used to tell Git about the files that we do not want committed to our repository (e.g. cache files)
.htaccess - Used to tell Apache about how requests should be handled
application/
config/
data/
cache/
database/ - Contains our SQLite Databases
dump/
fixtures/ - Contains our Initial Database Data
logs/
schema/ - Contains our Database Structure
layouts/
models/ - Contains the Models we actually use, these inherit from the models in the following sub-directories
Bal/ - Core models included by the BalPHP Library
Balcms/ - Core models used by BalCMS (these typically inherit the Bal models)
Base/ - Autogenerated by Doctrine ORM
modules/
balcms/
config/ - Our module specific Configuration
controllers/ - Our module specific Business Logic
BackController.php - For our Administration/Back Area
FeedController.php - For our News/RSS/Atom/Subscription Feeds
FrontController.php - For our Public/Front Area
views/ - Our module specific View Logic
helpers/ - Contains our Standard Content Widgets (used within our posts)
scripts/ - Contains our View Scripts
default/ - Contains our Default/Base Modules (used for Error Handling)
cli - BalCMS's Command Line Interface
common/ - Used to contain our submodules/requirements/dependencies used by BalCMS (e.g. zend framework)
config.php
il8n/ - Contains our Localisation/Language files.
index.php
public/
images/
media/
cache/ - Used by the inbuilt bundlers (View Helpers: HeadScriptBundler, HeadLinkBundler)
scripts/
styles/
deleted/ - Where deleted files go (if we don't hard delete them)
image.php - Handles on-the-fly image resizing
images/ - Where the generated/compressed/resized images go
invoices/ - Used for our invoicing functionality (not documented)
uploads/ - Where user uploads go
scripts/
styles/
themes/ - Where our applications themes go, if you want to customise the look and feel of the application, this is where it's at.
albeo/ - The default theme. Creamy green.
balcms/ - The administration theme.
titan - A creamy brown theme.
README.md - This readme that you're reading right now.
robots.txt - What to tell Search Engines. Read up on google.
scripts/ - Contains scripts used by our CLI to perform specific actions
tests/ - Unit tests for our application.
หากสิ่งใด ๆ ข้างต้นสับสนโปรดอ้างอิงบทความต่อไปนี้:
Balcms มีไฟล์การกำหนดค่าในตำแหน่งต่อไปนี้:
config.php - Used detect and set our environment (i.e. development, staging or production).
application/
config/
application.yml - Used to specify the configuration for our environments.
core.yml - Used to specify the paths that our environments will use.
nav.yml - Used to specify navigation items used in our CMS.
routes.yml - Used to specify how requests are directed in our CMS.
default/ - Contains the files that the above config files inherit their config from. Never edit the files in this directory (as they will be overwritten when you do an upgrade).
data/
fixtures/
data.yml - Used to specify the default data that is loaded into our database
schema/
schema.yml - Used to specify our database structure (our models)
ไฟล์ที่คุณจะสนใจส่วนใหญ่ config.php และ application.yml บางครั้ง nav.yml หากคุณไม่ได้วางแผนที่จะขยาย Balcms เพื่อเพิ่มฟังก์ชั่นที่กำหนดเองคุณจะไม่จำเป็นต้องแตะไฟล์การกำหนดค่าอื่น ๆ
ไฟล์เอกสารรวมถึงเอกสารอินไลน์ (เอกสารภายใน) หรือมีการอธิบายตนเอง กระบวนการเปลี่ยนเครื่องมือแก้ไขที่เราต้องการใช้สำหรับเนื้อหาของเราจะเป็นไปเช่นนี้:
application/config/default/application.yml ค้นหาคุณสมบัติที่เหมาะสม - ในกรณีนี้เป็น editor.codeapplication/config/application.yml - เรากำลังแก้ไขไฟล์กำหนดค่าของเราไม่ใช่ไฟล์เริ่มต้น./cli clean-config เพื่อให้แน่ใจว่าการเปลี่ยนแปลงถูกนำไปใช้-เราพยายามที่จะตรวจจับการเปลี่ยนแปลงอัตโนมัติ แต่บางครั้งก็มีประโยชน์ ในการกระทำการเปลี่ยนแปลงของคุณคุณจะต้องเรียกใช้คำสั่งต่อไปนี้:
cd mywebsite
git status
git add -u
git status
git add {the untracked files reported by the git status}
git commit -m "My Changes... {this is your message}" (note: this commits your changes)
git push origin --all (note: this sends your changes to the remote repository)
คำอธิบาย: สิ่งที่
git statusแสดงให้เราเห็นการเปลี่ยนแปลงที่เราทำเราใช้สิ่งนี้เป็นครั้งแรกเพื่อตรวจสอบว่ามีการเปลี่ยนแปลงอะไรบ้าง (เพื่อให้เราสามารถบอกได้ว่าเราต้องการทำการเปลี่ยนแปลงเหล่านั้นหรือไม่) เราสามารถเห็นการเปลี่ยนแปลงรายละเอียดโดยใช้git diffจากนั้นเราเพิ่มไฟล์ที่เราต้องการในการประชุมครั้งต่อไปโดยใช้git addในตัวอย่างข้างต้นเราใช้git add -uเนื่องจากจะช่วยให้เราประหยัดการพิมพ์ได้มากมันจะเพิ่มการเปลี่ยนแปลงในไฟล์ที่ติดตามทั้งหมดโดยอัตโนมัติ (ไฟล์ที่พื้นที่เก็บข้อมูล GIT รู้แล้ว) หลังจากเรียกใช้git add -u
การตั้งค่าเซิร์ฟเวอร์สดสามารถทำได้โดยสองวิธีต่อไปนี้
ตัวเลือกที่แนะนำ: SSH+GIT ตัวเลือกนี้ยอดเยี่ยมอย่างหมดจดมันรวดเร็วง่ายใช้งานง่ายและช่วยให้เราสามารถแก้ไขไฟล์บนเซิร์ฟเวอร์ระยะไกล แม้ว่าเซิร์ฟเวอร์เพียงไม่กี่ตัวที่รองรับทั้ง SSH และ GIT (เซิร์ฟเวอร์ของคุณต้องการทั้งสองอย่าง) - แต่ประโยชน์นั้นมีขนาดใหญ่มาก เราขอแนะนำให้โฮสต์กับ Mediatemple เนื่องจากพวกเขายอดเยี่ยมมากเช่นกันดังนั้นพวกเขาจึงสนับสนุนคุณสมบัติที่ยอดเยี่ยมที่บริสุทธิ์นี้ (แผนการของพวกเขายังราคาถูกมากสำหรับสิ่งที่พวกเขาเสนอการสนับสนุนนั้นยอดเยี่ยมและระบบของพวกเขามีความยืดหยุ่นและปรับแต่งได้อย่างมากสำหรับทุกความต้องการของคุณ) - อีกครั้งพวกเขายอดเยี่ยม หากเซิร์ฟเวอร์ของคุณไม่รองรับ SSH+GIT นั่นก็ใช้ได้เพราะเราสามารถใช้ตัวเลือกทางเลือกได้ มาปกปิดว่าเราจะทำสิ่งนี้อย่างไร
คุณจะต้องเข้าสู่ระบบเซิร์ฟเวอร์ของคุณผ่าน SSH (ดูคู่มือเซิร์ฟเวอร์ของคุณสำหรับวิธีการทำสิ่งนี้)
เมื่อเสร็จแล้วคุณจะต้องการ cd ลงในไดเรกทอรีเว็บไซต์ของคุณ (เช่น public_html )
ไดเรกทอรีนี้ควรว่างเปล่าเนื่องจากเรากำลังติดตั้งที่สะอาด (ถ้ามันไม่ว่างเปล่าสำรองข้อมูลและว่างเปล่า) ตอนนี้มันว่างเปล่าเราต้องการเรียกใช้คำสั่งต่อไปนี้:
curl -OL http://github.com/balupton/balcms/raw/master/cli
git init
git remote add origin {your git repos read/write url}
./cli init-existing; ./cli configure; ./cli install
คำอธิบาย: คำสั่งเหล่านี้ควรดูค่อนข้างคล้ายกับคำสั่งการติดตั้งในพื้นที่ของเราแม้ว่าจะมีความแตกต่างบางอย่าง เราเริ่มต้นด้วยการดึง CLI ของเราเหมือนปกติแม้ว่าตอนนี้เราจะเรียก
git initสิ่งนี้บอกให้สภาพแวดล้อมของเราปฏิบัติต่อไดเรกทอรีปัจจุบันเป็นที่เก็บ Git จากนั้นเราจะเชื่อมโยงไดเรกทอรีของเรากับที่เก็บระยะไกล ในที่สุดเราก็เรียกใช้คำสั่ง./cli init-existing; ./cli configure; ./cli installนี่เป็นสิ่งเดียวกับก่อนหน้านี้ แต่คราวนี้เราเรียกใช้./cli init-existingแทนที่จะเป็น./cli init-newในขณะที่เรามีที่เก็บ Git ที่มีอยู่ที่เรากำลังทำงานด้วย (ดังนั้นเราเพียงแค่ดึงมัน) ในขณะที่ก่อนที่เราจะต้องสร้างที่เก็บ Git จากรอยขีดข่วน (เป็นสาขาโครงสร้าง ฯลฯ )
ตอนนี้คุณทำเสร็จแล้วตอนนี้เว็บไซต์ของคุณกำลังใช้งานอยู่
ตัวเลือกทางเลือก: ใช้ระบบการปรับใช้ของบุคคลที่สาม ตัวเลือกนี้เกี่ยวข้องกับการลงทะเบียนบัญชีกับบุคคลที่สามตั้งค่าที่เก็บ GIT ของคุณกับพวกเขาให้รายละเอียดเซิร์ฟเวอร์ของคุณและระบุการตั้งค่าการปรับใช้ เป็นเรื่องดี แต่อาจมีค่าใช้จ่ายสูงเมื่อคุณปรับใช้กับหลาย ๆ ไซต์และไม่อนุญาตให้คุณแก้ไขไฟล์ในไซต์สดของคุณ (แทนที่จะต้องทำการเปลี่ยนแปลงบนเว็บไซต์ท้องถิ่นของคุณจากนั้นปรับใช้) นอกจากนี้ยังสามารถใช้เวลาพอสมควรในการปรับใช้การเปลี่ยนแปลง (จากไม่กี่นาทีถึงสองสามชั่วโมง) หากคุณไปเส้นทางนี้เราขอแนะนำ DeployHQ - ระบบของพวกเขาทำงานได้ดีมากและพวกเขามีราคาที่ไม่แพง อ้างถึงเอกสารของระบบที่คุณเลือกสำหรับวิธีการใช้ตัวเลือกนี้
ตัวเลือกโง่ ๆ : โอนไฟล์ด้วยตนเองผ่าน FTP เหตุผลที่ตัวเลือกนี้โง่คือการสืบทอดปัญหาของการไม่ใช้การควบคุมเวอร์ชันใด ๆ - คุณจบลงด้วยความแตกต่างระหว่างเซิร์ฟเวอร์สดของคุณและสำเนาท้องถิ่นของคุณทำให้เกิดความไม่สอดคล้องกันและการดีบักและฝันร้ายในการบำรุงรักษา โปรดอย่าใช้ตัวเลือกนี้เว้นแต่คุณจะเป็นนักทำโทษตนเอง เราจะไม่ครอบคลุมตัวเลือกนี้
หมายเหตุ: ก่อนที่คุณจะปรับใช้กับเว็บไซต์สดคุณจะต้องเพิ่มสภาพแวดล้อมการผลิตลงในไฟล์ config.php ของคุณและตั้งค่าฐานข้อมูลของคุณสำหรับสภาพแวดล้อมการผลิตในไฟล์ application/config/application.yml
เมื่อเรามีความสุขกับสำเนาในพื้นที่ของเราและเราต้องการปรับใช้กับเว็บไซต์สดเราต้องเรียกใช้คำสั่งที่คุ้นเคยอยู่แล้ว ./cli deploy ในไดเรกทอรีเว็บไซต์ของเรา
เมื่อเราปรับใช้การเปลี่ยนแปลงของเราไปยังที่เก็บ GIT ระยะไกลของเราแล้วเราจะต้องการดึงการเปลี่ยนแปลงเหล่านั้นลงในเซิร์ฟเวอร์สดของเรา ขึ้นอยู่กับตัวเลือกที่เราเลือก
การใช้ตัวเลือกทางเลือก (ระบบบุคคลที่สาม): ด้วยตัวเลือกนี้การปรับใช้จากที่เก็บ GIT ระยะไกลของเราไปยังเซิร์ฟเวอร์สดของเราอาจเกิดขึ้นโดยอัตโนมัติหรือเราอาจจำเป็นต้องเข้าสู่ระบบและปรับใช้การเปลี่ยนแปลงด้วยตนเองและรอเป็นเวลานาน
การใช้ตัวเลือกที่แนะนำ (SSH+GIT): เราจะต้องการ SSH ลงในเว็บเซิร์ฟเวอร์และซีดีของเราลงในไดเรกทอรีไซต์สดของเรา (เช่นเดียวกับที่เราทำเมื่อเราตั้งค่าที่เก็บ GIT) เมื่อมีเพียงแค่เรียกใช้คำสั่ง ./cli update CLI นั่นจะดึงการเปลี่ยนแปลงล่าสุดทั้งหมดและตรวจสอบให้แน่ใจว่าการกำหนดค่าของเราเป็นข้อมูลล่าสุด
ในการอัพเกรดแอปพลิเคชันของคุณเป็นเวอร์ชัน Balcms ล่าสุดคุณจะต้องรัน ./cli upgrade ในไดเรกทอรีของแอปพลิเคชันของคุณ
คำอธิบาย: สิ่งนี้จะทำอย่างไรคือดึงเวอร์ชัน Balcms ล่าสุดลงในสาขา Balcms และรวมเข้ากับสาขา Dev ของเรา
หากคุณมีความขัดแย้งใด ๆ คุณสามารถใช้ git mergetool เพื่อคัดออก
เมื่อความขัดแย้งทั้งหมดได้รับการแก้ไขและการอัพเกรดเสร็จสมบูรณ์คุณจะต้องเรียกใช้ ./cli configure เพื่ออัปเดต submodules/การพึ่งพา/ข้อกำหนดที่เราใช้
ประการแรกขอขอบคุณที่เลือกซอฟต์แวร์นี้สำหรับโครงการเชิงพาณิชย์หรือแม้แต่โอเพนซอร์ซต่อไปของคุณ
หากคุณต้องการที่จะให้คุณค่ากับสิ่งที่อยู่เบื้องหลังซอฟต์แวร์นี้เช่นเดียวกับที่พวกเขาได้ให้คุณค่ากับคุณคุณอาจมีส่วนร่วมในวิธีต่อไปนี้:
การเขียนโค้ดที่มีความสุข :-)