Wednesday, July 30, 2014

Cài đặt DNN Code template extension cho Visual studio 2012 (trở lên)

Link download extension cho VS:

http://visualstudiogallery.msdn.microsoft.com/bdd506ef-d5c3-4274-bf1d-9e673fb23484

Sau khi tải về chỉ cần mở ra và tiến hành cài đặt, extension này cho phép khi New Project trong VS, ngôn ngữ C# chẳng hạn, sẽ có mục tên là Dot Net Nuke gồm hai template là DNN Compiled Module và DNN Compiled DAL2 Module. Chi tiết về hai loại module này có thể tham khảo trên internet với keyword: "dot net nuke mudule types"

Quá trình tạo mới module DNN:

1. Đa số trong các tutorial, người ta sử dụng Compiled DAL2 Module,khi tạo project nên lưu ý.
2. Thư mục của project module không phải tùy ý mà bắt buộc nằm trong "thư mục cài đặt dnn/Desktop Modules".
3. Uncheck các lựa chọn như "Create directory for solution"
4. Nếu đặt tên module là RestaurantMenu, ta sẽ có cấu trúc
wwwroot/dnn_install_dir/Desktop Modules/RestaurantMenu/your_module_project_files


Sau khi tạo được project nó sẽ như thế này




DNN TaskManager - Procedure DNN

Các procedure CRUD

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{databaseOwner}[{objectQualifier}TaskManager_Task]') AND type in (N'U'))
DROP TABLE {databaseOwner}[{objectQualifier}TaskManager_Task]

Kiểm tra trong các sys.objects có object có id là (giống lớp Static) OBJECT_ID (N'{databaseOwner}[{objectQualifier}TaskManager_Task] ') và có loại là (syntax: type in)   (N'U')

Kiểm tra có bảng dbo.dnn_TaskManager_Task

IF EXIST (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{databaseOwnder}[{objectQualifier}TaskManager_Task]') AND type in (N'U'))



Kiểm tra có proc TaskManager_AddTask

IF EXIST (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N{databaseOwner}[{objectQualifier}TaskManager_Task]') AND OBJECTPROPERTY(N'IsProcedure') = 1 )




Tuesday, July 29, 2014

Fix lỗi xung đột cổng 80

Vào Run -> regedit ->Enter

HKEY_LOCAL_MACHINE -> System ->CurrentControlSet -> services -> HTTP

New một DWORD value, đặt tên là NoRun, nhấp đúp mở ra và đặt giá trị là 1

Restart máy tính


Monday, July 28, 2014

Cài đặt Dot Net Nuke

B0:

Quick info
DNN là gì tự google

Portal là một website cung cấp các thông tin từ nhiều nguồn khác nhau, đúng hơn là cung cấp cho bạn đường đi tới các nguồn thông tin đó, cũng có thể hiểu như một web site tin tức.

Module là những mảnh - vùng con con trên website hay Portal, dùng để cấu tạo nên trang web. Ngày xưa bạn đã làm các hộp login, search, thời tiết ,vùng Gridview hiển thị nội dung,... tóm lại là các ô hình chữ nhật với chức năng riêng biệt cấu tạo nên website. Nay với kiến trúc module hóa, người ta nghĩ ra cách để bạn có thể làm riêng các phần đó và add/remove/custom vào nhiều website với phương châm viết một lần dùng lại mãi. Đó chính là tinh thần của các CMS như Wordpress, Joomla bên php hay Dot net nuke bên .net

ISS nên google thì hơn và cũng quá quen với những ai làm .net web. Cứ hiểu gọn gọn như nó là một server ảo dùng để host các website dot net trên máy local của bạn (nếu bạn chưa quen)

Download bản cài DNN 7 từ trang chủ, bản install.ZIP

B1:

Chắc chắn là máy tính của bạn đã có IIS, để kiểm tra

Vào Run -> gõ inetmgr  -> Enter

Nếu thấy IIS xuất hiện thì bạn vui lòng bỏ qua phần cài đặt IIS
bên dưới

-----------------Cài đặt IIS--------------------------
ISS được tích hợp sẵn trong Win 7 trở lên lên không cần thêm nguồn tài nguyên như CD hay internet
-Vào Add and Remove program trong  Control Panel

-> Turn Window features on or off 



Mục này sẽ cho phép bật và tắt các tiện ích của window, vốn chúng đã được cài đặt nên chỉ đơn giản là bật lên hay tắt đi


Tích chọn IIS và OK. Sau khi xong rồi
Vào Run -> inetmgr -> Enter để kiểm tra
Giao diện của IIS 7.5 trên win 7



B2: Tìm tới thư mục C:\ inetpub \ wwwroot
Thư mục này là thư mục web root của server IIS, chỉ có sau khi máy đã bật IIS. Bình thường nếu bạn không sử dụng bất kì server ảo nào khác ví dụ Apache (thường thấy trong các bộ toolkit php như WAMP, XAMPP...)thì  khi trong trình duyệt ta gõ localhost chính là browser tới thư mục này. Đúng ra phải là localhost:80 nhưng cổng 80 là mặc định nên không cần


Tạo 1 thư mục để chứa DNN, ví dụ dnn

Xả nén install.zip vào thư mục vừa tạo C:\ inetpub \ wwwroot \ dnn

Cần cấp quyền đọc ghi - Full Control cho thư mục dnn, click phải vào folder dnn, Properties, Security, -> Edit
Lần lượt chọn các user và tick vào Full Control
Xong rồi nhấn OK

B3: Cấu hình trong web.config.xml

Do bộ cài dnn thực ra là một website .net nên nó có web.xml, open file đó với text editor bất kì, find cụm từ <connectionStrings>, cứ để cả cặp dấu < > vào, nó sẽ đưa bạn tới dòng có chứa CS.
  <connectionStrings>  
   <add name="SiteSqlServer" connectionString="Data Source=FAMILY-PC\SQLSERVER2008;Initial Catalog=dnn01;User ID=sa;Password=123456" providerName="System.Data.SqlClient" />  
  </connectionStrings>  
  <appSettings>  
   <add key="SiteSqlServer" value="Data Source=FAMILY-PC\SQLSERVER2008;Initial Catalog=dnn01;User ID=sa;Password=123456" />  
Mở SQL server ra, tạo một DB mới cho dnn, ví dụ tên db là dnn
Điền thông tin security của bạn vào connectionString. Lưu ý chúng ta sử dụng SQL 2008/2012 chứ không dùng SQL Local DB Express, do đó cứ mạnh dạn xóa các CS của SQL Express đi, uncomment những connectionString của SQL 2008/2012 và điền thông tin của bạn vào. Do đây là  file XML nên comment của nó là <!--  nội dung  -->, bạn chỉ cần xóa phần đầu và phần cuối là xong

B4: Cấu hình trong IIS



Chạy lại IIS, trong phần Sites mặc định có 1 website tên là DefaultSite, nếu không có thì tạo một website tùy ý, folder của nó sẽ là thư mục wwwroot ở trên, lưu ý chỉ là đến ngang wwwroot thôi chứ không thêm dnn vào, nếu thấy có xung đột cổng (sẽ báo occupied) liên quan tới cổng 80 đã bị sử dụng bởi một bên khác, thường là PID 4 của hệ thống. Xem bài http://ndhsharing.blogspot.com/2014/07/fix-loi-xung-ot-cong-80.html để giải quyết.



Trong site đó sẽ có thư mục dnn của bạn mới tạo ở ở bước trên, click phải vào dnn và chọn Convert to application. Nếu không làm bước này về sau khi chạy thử site IIS sẽ báo lỗi liên quan tới machine code và yêu cầu bạn phải vào convert thành application

Bấm chọn site của bạn, là cái cấp trên của dnn, nhìn sang tab bên phải có mục Binding. Trong phần này ta có thể add/remove các binding, hiểu nôm na là các tên miền ảo. Ví dụ bạn thêm cho site của mình một binding có URL là dnndev.me thì khi bạn gõ URL trên vào browser nó sẽ browser tới site của bạn trên IIS. Phần binding khi nào đụng tới Visual studio mới cần phải quan tâm

Vào mục Application Pools, sẽ có một cái Pool tương ứng với site của bạn
Vào Basic setting của nó, chọn nền tảng là .NET  Framwork 4, DNN 7 sẽ báo lỗi với .net 2.0

Từ trang chính IIS, Vào Directory browsing -> Enable


B5: Xem kết quả

Trong IIS, click phải vào site của bạn, manage, Start để chạy site, mặc định bình thường thì nó cũng đã chạy rồi, nếu có xung đột cổng xem lại phần trên
Tiếp theo browse tới site của bạn, ví dụ localhost:8082/dnn


Lần đầu tiên bạn chạy, nếu may mắn bạn sẽ vào trang Install của DNN. Chọn template là Desfault site (không chọn blank nếu chưa có kinh nghiệm đầy mình), điền các thông tin User/Password để login vào quyền admin của Portal, nên nhớ cẩn thận vì pass được mã hóa ghi vào CSDL nên nếu quên chỉ có nước cài lại dnn

Các thông tin liên quan đến DB, nếu đã điền đúng trong web config thì chỉ cần chọn Default và Next, nếu không thì bạn có thể Custom, nhớ là SQL 2008/2012

Next, progess bar sẽ chạy cho tới khi cài đặt kết thúc, đây là thời gian dnn tự sinh CSDL mẫu gồm các table và record vào CSDL trống dnn mà bạn đã tạo ở phía trên

Sau khi hoàn tất bạn có thể truy cập Portal của mình, thử login bằng quyền admin để xem phần trong thế nào