Thứ ba, 22/04/2014 | 00:00 GMT+7

Cách cài đặt và cấu hình Slim Framework trên Ubuntu 14.04


Yêu cầu

Hướng dẫn này sẽ minh họa các bước cần thiết để cài đặt và cấu hình Slim Framework trên Digital Ocean VPS. Đến cuối hướng dẫn này, bạn sẽ có một version Slim Framework hoạt động, được tổ chức tốt, hoàn chỉnh với cấu trúc folder mà bạn có thể làm cơ sở cho dự án của bạn .

Hướng dẫn này giả định bạn đã cài đặt LAMP (hoặc ưu tiên của bạn) trên Ubuntu. Nếu chưa, bạn có thể tham khảo bài viết này giúp bạn cài đặt LAMP stack trên Ubuntu .

Nếu ứng dụng của bạn không sử dụng MySQL, bạn có thể bỏ qua cài đặt của nó. Điều tối thiểu bạn cần cài đặt là một web server Apache ( với Mod_Rewrite ) và PHP (phiên bản tối thiểu 5.3).

Cài đặt nhanh cho các yêu cầu

1. Cài đặt Apache

apt-get update   apt-get install apache2 

2. Cài đặt PHP

apt-get install php5 libapache2-mod-php5 php5-mcrypt 

3. Bật mod_rewrite

a2enmod rewrite 

4. Sửa đổi file cấu hình Apache

Sửa đổi file cấu hình Apache và thay đổi AllowOverride Không thành AllowOverride Tất cả cho root tài liệu. Tùy thuộc vào cài đặt server của bạn, file cấu hình này có thể là các file nào sau đây:

  • /etc/apache2/apache2.conf
  • /etc/apache2/sites-enabled/000-default
  • /etc/apache2/sites-available/default

Trong file cấu hình, tìm phần trông giống như sau:

<Directory /var/www/>         Options Indexes FollowSymLinks         AllowOverride None         Require all granted </Directory> 

Thay đổi điều này thành phần sau và lưu file :

<Directory /var/www/>         Options Indexes FollowSymLinks         AllowOverride All         Require all granted </Directory> 

5. Khởi động lại Apache

service apache2 restart 

Hướng dẫn này cũng giả định bạn đã quen với các kiến thức cơ bản về Linux .

Slim Framework là gì?

Slim là một trong những microframeworks open-souce , phổ biến nhất dành cho PHP trên thị trường. Nó cực kỳ hiệu quả, nhanh chóng và dễ sử dụng. Mặc dù nó lý tưởng để phát triển các ứng dụng web có kích thước vừa và nhỏ, nhưng nó cũng được dùng khá hiệu quả để xây dựng các ứng dụng PHP có khả năng mở rộng lớn.

Slim được đóng gói với các tiện ích phổ biến nhất mà bạn mong đợi trong một khuôn khổ:

  • Bộ định tuyến dễ sử dụng, mạnh mẽ và linh hoạt
  • Chế độ xem tùy chỉnh để hiển thị các mẫu
  • Cookie an toàn
  • HTTP caching
  • Xử lý lỗi và gỡ lỗi dễ sử dụng
  • Cấu hình đơn giản

Cài đặt

Cài đặt Slim Framework bao gồm ba bước

  1. Download khung mỏng
  2. Extract từ file Zip
  3. Sao chép Khung mỏng vào một vị trí chung

1. Download Slim Framework

Bạn có thể download Slim Framework bằng lệnh sau:

wget https://github.com/codeguy/Slim/zipball/master 

Thao tác này sẽ tìm nạp khuôn khổ dưới dạng zip và lưu trữ nó trong folder hiện tại với tên master .

2. Extract từ file Zip

Nội dung của file zip có thể được extract bằng lệnh sau:

unzip master -d ./ 

Lưu ý: Nếu bạn gặp lỗi extract không được cài đặt, bạn có thể cài đặt nó bằng cách sử dụng lệnh apt-get install unzip và sau đó thực hiện lệnh trên để extract tất cả các file .

Lệnh trên sẽ extract các file trong một folder có tên như codeguy-Slim-3a2ac72 . Thư mục này chứa một folder có tên Slim là folder khung.

3. Sao chép Khung mỏng đến một vị trí chung

Bây giờ ta sẽ sao chép folder codeguy-Slim-3a2ac72/Slim vào một vị trí phổ biến như /usr/local/Slim từ đó nó sẽ có thể truy cập vào tất cả các dự án trên server này sử dụng Slim. Điều này sẽ tránh trùng lặp và ngăn chặn bất kỳ vấn đề bảo trì nào có thể phát sinh từ các cài đặt trùng lặp.

Hãy sao chép folder bằng lệnh sau:

cp -r ./codeguy-Slim-3a2ac72/Slim /usr/local/Slim 

Lưu ý: Tên của folder được codeguy-Slim-3a2ac72 (trong trường hợp này là codeguy-Slim-3a2ac72 ) có thể hơi khác nếu bạn download version Slim khác. Đảm bảo sửa đổi tên của folder trong lệnh trên cho phù hợp

Khi điều này được thực hiện, bất kỳ dự án nào của bạn sử dụng Slim Framework đều có thể tham chiếu nó từ vị trí này.

Lưu ý quan trọng: Rất nhiều hướng dẫn cài đặt các khung công tác trong folder chung / root tài liệu (như /var/www/Slim ). Cài đặt các file khung bên ngoài folder chung / root tài liệu (như đã thực hiện ở trên) làm cho ứng dụng tương đối an toàn hơn vì các file khung sẽ không thể truy cập được trong trình duyệt.

Tổ chức dự án dựa trên mỏng của bạn

Một dự án Slim thường trải rộng trên ba folder chính:

1. Thư mục khung mỏng

Thư mục này chứa các file khung và là folder đã được sao chép ở bước trước (/ usr / local / Slim)

2. Thư mục dự án

Thư mục này chứa các file dự án của bạn như bộ định tuyến, khung nhìn, mô hình, v.v. Là một microframework, Slim không thực thi bất kỳ cấu trúc dự án cụ thể nào. Điều này nghĩa là bạn có thể tự do cấu trúc các file dự án của bạn theo bất kỳ cách nào bạn cho là phù hợp. Điều này đặc biệt hữu ích trong trường hợp các nhà phát triển đã quen với một cấu trúc folder cụ thể.

Thư mục này có thể nằm ở bất kỳ đâu trên server , nhưng lý tưởng nhất là nó không nên ở vị trí có thể truy cập web. Bạn có thể đặt nó trong /usr/local hoặc trong folder home của bạn. Ví dụ: nếu bạn tạo trong dự án trong một folder có tên HelloSlim , nó có thể được đặt tại /usr/local/HelloSlim hoặc ~/HelloSlim hoặc bất kỳ vị trí nào khác bạn muốn .

Đây là một cách sắp xếp các file trong folder này:

HelloSlim |- Routes |  |- route1.php |  |- route2.php |- Models |  |- model1.php |  |- model2.php |- Views |  |- footer.php |  |- header.php |  |- sidebar.php |  |- view1.php |  |- view2.php |- Class |  |- class1.php |  |- class2.php |- routes.php       //contains 'include' statements for all routes in the 'Routes' folder |- includes.php     //contains 'include' statements for all models/classes in the 'Models/Class' folders 

Bạn có thể tạo cấu trúc folder này bằng cách thực hiện các lệnh sau:

mkdir /usr/local/HelloSlim mkdir /usr/local/HelloSlim/Routes mkdir /usr/local/HelloSlim/Models mkdir /usr/local/HelloSlim/Views mkdir /usr/local/HelloSlim/Class 

Lưu ý: Bạn có thể sử dụng cấu trúc folder này hoặc thay đổi hoàn toàn để phù hợp với sở thích của bạn .

3. Thư mục root / Public của tài liệu

Đây là folder có thể truy cập web (thường nằm tại /var/www ). Thư mục này chỉ chứa hai file liên quan đến Slim:

  • index.php
  • .htaccess

Thư mục này cũng sẽ chứa tất cả các file kịch bản, kiểu và hình ảnh của dự án. Để giữ mọi thứ ngăn nắp, bạn có thể chia chúng thành các folder scripts , stylesimages tương ứng.

Đây là cấu trúc mẫu của folder root tài liệu:

Document Root (eg. /var/www/)  |- scripts |  |- jquery.min.js |  |- custom.js |- styles |  |- style.css |  |- bootstrap.min.css |- images |  |- logo.png |  |- banner.jpg |- .htaccess |- index.php 

Nội dung file

Giả sử rằng dự án của bạn có cấu trúc được xác định ở trên, bạn cần điền vào các .htaccessindex.php (trong folder root ) với các nội dung tương ứng sau:

.htaccess

RewriteEngine On   RewriteCond %{REQUEST_FILENAME} !-f   RewriteRule ^ index.php [QSA,L]   

index.php

<?php  require '/usr/local/Slim/Slim.php';     //include the framework in the project \Slim\Slim::registerAutoloader();       //register the autoloader  $projectDir = '/usr/local/HelloSlim';   //define the directory containing the project files  require "$projectDir/includes.php";     //include the file which contains all the project related includes  $app = new \Slim\Slim(array(     'templates.path' => '/usr/local/HelloSlim/Views' ));      //instantiate a new Framework Object and define the path to the folder that holds the views for this project  require "$projectDir/routes.php";       //include the file which contains all the routes/route inclusions  $app->run();                            //load the application 

Để hoàn thành hướng dẫn này giả định dự án đã được sắp xếp theo cấu trúc folder được định nghĩa trong phần trước, các routes.phpincludes.php file (trong folder dự án) nên có các nội dung sau:

route.php

<?php  require '/usr/local/HelloSlim/Routes/route1.php'; require '/usr/local/HelloSlim/Routes/route2.php'; 

Lưu ý: Bạn có thể tạo các tuyến trực tiếp trong file này thay vì bao gồm các file khác có chứa các tuyến. Tuy nhiên, việc xác định các tuyến đường trong các file khác nhau, được group hợp lý sẽ giúp dự án của bạn dễ bảo trì hơn

include.php

<?php  require "/usr/local/HelloSlim/Class/class1.php"; require "/usr/local/HelloSlim/Class/class2.php";  require "/usr/local/HelloSlim/Models/model1.php"; require "/usr/local/HelloSlim/Models/model2.php"; 

Ứng dụng mẫu mỏng

Đến đây bạn đã biết cách cài đặt ứng dụng Slim, hãy tạo một ứng dụng đơn giản thực hiện như sau:

  • Xử lý các tuyến tĩnh (GET & POST)
  • Xử lý các tuyến đường động
  • Sử dụng lượt xem

Lưu ý: Ứng dụng mẫu này sẽ giả định Slim đã được triển khai như mô tả ở trên.

Hãy vạch ra các yêu cầu cho ứng dụng mẫu này:

<table width = “100%”>
<tr>
<th> Tuyến đường </th>
<th> Loại </th>
<th> Hành động </th>
</tr>
<tr>
<td> / xin chào </td>
<td> NHẬN (tĩnh) </td>
<td> Hiển thị Chế độ xem tĩnh </td>
</tr>
<tr>
<td> / xin chào / NAME </td>
<td> NHẬN (động) </td>
<td> Hiển thị Chế độ xem động </td>
</tr>
<tr>
<td> / chào </td>
<td> BÀI ĐĂNG </td>
<td> Hiển thị Chế độ xem sau khi yêu cầu ĐĂNG </td>
</tr>
</table>

Dự án này sẽ yêu cầu các file sau được tạo trong folder Ứng dụng ( /usr/local/HelloSlim/ ):

HelloSlim |- Routes |  |- getRoutes.php |  |- postRoutes.php |- Views |  |- footer.php |  |- header.php |  |- hello.php |  |- greet.php |- routes.php        

Thư mục chung / root tài liệu sẽ trông giống như sau:

Đây là cấu trúc mẫu của folder root tài liệu:

Document Root (eg. /var/www/)  |- .htaccess |- index.php 

Bây giờ điền các file này như sau:

1. /var/www/.htaccess

RewriteEngine On   RewriteCond %{REQUEST_FILENAME} !-f   RewriteRule ^ index.php [QSA,L]  

2. /var/www/index.php

<?php  require '/usr/local/Slim/Slim.php';     //include the framework in the project \Slim\Slim::registerAutoloader();       //register the autoloader  $projectDir = '/usr/local/HelloSlim';   //define the directory containing the project files  $app = new \Slim\Slim(array(     'templates.path' => '/usr/local/HelloSlim/Views' ));      //instantiate a new Framework Object and define the path to the folder that holds the views for this project  require "$projectDir/routes.php";       //include the file which contains all the routes/route inclusions  $app->run();                            //load the application 

3. /usr/local/HelloSlim/Routes/getRoutes.php

<?php  $app->get('/', function(){     echo 'This is a simple starting page'; });  //The following handles any request to the /hello route  $app->get('/hello', function() use ($app){     // the following statement invokes and displays the hello.php View     $app->render('hello.php'); });   //The following handles any dynamic requests to the /hello/NAME routes (like /hello/world)  $app->get('/hello/:name', function($name) use ($app){     // the following statement invokes and displays the hello.php View. It also passes the $name variable in an array so that the view can use it.     $app->render('hello.php', array('name' => $name)); }); 

4. /usr/local/HelloSlim/Routes/postRoutes.php

<?php   //The following handles the POST requests sent to the /greet route  $app->post('/greet', function() use ($app){     //The following statement checks if 'name' has been POSTed. If it has, it assigns the value to the $name variable. If it hasn't been set, it assigns a blank string.     $name = (null !== $app->request->post('name'))?$app->request->post('name'):'';      //The following statement checks if 'greeting' has been POSTed. If it has, it assigns the value to the $greeting variable. If it hasn't been set, it assigns a blank string.     $greeting = (null !== $app->request->post('greeting'))?$app->request->post('greeting'):'';      // the following statement invokes and displays the 'greet.php' View. It also passes the $name & $greeting variables in an array so that the view can use them.     $app->render('greet.php', array(         'name' => $name,         'greeting' => $greeting     )); }); 

5. /usr/local/HelloSlim/Views/footer.php

        <small>Copyright notice...</small>     </body> </html> 

6. /usr/local/HelloSlim/Views/header.php

<pre>
<! DOCTYPE html>
<html>
<head>
<title> Ứng dụng mẫu mỏng </title>
</ đầu <
<body>
</pre>

7. /usr/local/HelloSlim/Views/hello.php

 *** <?php include('header.php'); ?>  *** <h1>Hello <?php echo isset($name)?$name:''; ?></h1> <!-- The above line handles both the dynamic and the static GET routes that we implemented in the getRoutes.php file.  ***  <h2>Send a greeting</h2> <form method='POST' action='/greet'>     <label>Name</label><br>     <input name='name' placeholder='Who do you want to greet?'><br>     <label>Greeting</label><br>     <input name='greeting' placeholder='Your greeting message'><br>     <input type='submit' value='Greet!'> </form>  *** <?php include('footer.php'); ?> 

8. /usr/local/HelloSlim/Views/greet.php

    <?php       include('header.php');       echo "<p>$greeting, $name</p><p><a href='/hello'>First Page</a></p>";      include('footer.php');  

9. /usr/local/HelloSlim/routes.php

    <?php      include 'Routes/getRoutes.php';     include 'Routes/postRoutes.php'; 

Ảnh chụp màn hình ứng dụng mẫu

Nếu bạn truy cập ứng dụng mẫu mới tạo của bạn tại http://yourdomain.com/ , bạn sẽ thấy một cái gì đó giống như sau:

Starting Page

Lưu ý: Nếu bạn không sử dụng domain với server Digital Ocean của bạn , hãy sử dụng địa chỉ IP của server thay thế.

Nếu bạn truy cập http://yourdomain.com/hello , bạn sẽ nhận được những thứ sau:

Hello Static

Nếu bạn truy cập http://yourdomain.com/hello/World , bạn sẽ nhận được những thứ sau:

Hello Dynamic

Lưu ý: Nếu bạn thay thế 'Thế giới' trong URL bằng một từ khác, nội dung của trang sẽ thay đổi tương ứng.

Để kiểm tra lộ trình ĐĂNG, hãy nhập tên và lời chào vào các trường có sẵn và nhấn 'Chào!' như sau:

Greeting Entry

Sau khi nhấn "Greet!" , bạn sẽ nhận được thông tin như sau:

Greeting Result

Từ cuối cùng

Đến đây bạn đã cài đặt version làm việc có tổ chức tốt của Slim framework, bạn đã sẵn sàng bắt đầu làm việc với dự án của bạn . Nếu bạn cần trợ giúp thêm với Slim, bạn luôn có thể tham khảo tài liệu chính thức toàn diện .

<div class = “author”> Gửi bởi: <a href=osystemhttp://www.php.buzzosystem> Jay </a> </div>


Tags:

Các tin liên quan

Cách thêm và xóa người dùng trên VPS Ubuntu 14.04
2014-04-22
Cách cài đặt Ruby on Rails trên Ubuntu 14.04 bằng RVM
2014-04-22
Cách cài đặt kho lưu trữ trình soạn nhạc tùy chỉnh trên Ubuntu
2014-04-21
Cách cài đặt và sử dụng Fish Shell trên VPS Ubuntu
2014-04-09
Cách thiết lập hệ thống tệp phân tán Tahoe-LAFS trên server Ubuntu 14.04
2014-04-03
Cách cài đặt Hadoop trên Ubuntu 13.10
2014-03-20
Cách cài đặt ProcessWire trên VPS Ubuntu
2014-03-20
Cách cài đặt Hadoop trên Ubuntu 13.10
2014-03-20
Cách cài đặt HHVM (Máy ảo HipHop) trên VPS Ubuntu 13.10
2014-03-18
Cách thiết lập server cloud Ubuntu cho ứng dụng web Python
2014-02-25