About The Author

Sharing Tutorials on Using Computers, Basic, Simple and Easy Tips on Using Internet, Tricks and Techniques That I've Learnt Thus Far.

Email subscription

Pages

Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts

11.07.2010

Khôi phục thành phần Wubi Ubuntu Bootloader

Khi sử dụng Wubi để cài đặt và gỡ bỏ Ubuntu thì danh mục này sẽ biến mất khỏi danh sách Windows Boot Manager. Dưới đây là mẹo nhỏ giúp bạn khôi phục và sử dụng Ubuntu như trước.
Wubi là 1 tiện ích hỗ trợ giúp người dùng cài đặt Ubuntu trực tiếp từ môi trường Windows, hoàn toàn không bị lẫn lộn, được quản lý và điều khiển trực tiếp qua Windows Boot Loader:
Tuy nhiên, chỉ cần 1 sự xáo trộn nhỏ trong quá trình điều chỉnh cũng khiến hệ thống không thể khởi động được. Nếu bạn cài thêm boot loader, khôi phục lại Windows từ đĩa khởi động, hoặc cài lại Windows theo kiểu Repair… Ubuntu sẽ biến mất:
Nhưng với công cụ hỗ trợ EasyBCD và một số điều chỉnh với Command Prompt, các bạn hoàn toàn có thể khôi phục Ubuntu và sử dụng như bình thường. Cách sau hoạt động tốt với Windows 7 hoặc Vista.
Thêm Wubi vào Windows Boot Loader với EasyBCD
Đường dẫn tải EasyBCD: http://neosmart.net/dl.php?id=1
Tải phiên bản EasyBCD mới nhất và cài đặt:
Khởi động EasyBCD, chọn Add/Remove Entries từ cửa sổ bên trái:
Chọn tiếp thẻ Linux trong phần Add an Entry ở phía cuối. Sau đó chọn thanh lựa chọn của Type > Wubi:
Đặt tên theo ý thích, sau đó nhấn nút Add Entry:
Và trong bảng hiển thị, sẽ có 2 thành phần: Windows và Ubuntu. Nhấn nút Save để lưu thay đổi và thoát khỏi chương trình:
Chỉnh sửa thông tin boot bằng Command Prompt
Nếu kết thúc bước trên, khởi động lại hệ thống và sử dụng Ubuntu ngay thì bạn sẽ nhận được thông báo lỗi của Boot loader vì Windows chưa biết chính xác Wubi Ubuntu được lưu trữ ở đâu. Vì vậy, sau khi thêm thành phần vào EasyBCD, kích hoạt Command Prompt trong chế độ administrative:
Gõ lệnh sau để hiển thị thông tin về các thành phần boot có trong Windows boot loader:
bcdedit
Ở đây, chúng ta sẽ thay đổi các thành phần tương ứng để Windows có thể nhận biết Ubuntu được lưu trữ ở đâu. Lưu ý rằng thành phần Real-mode Boot Sector chứa toàn bộ thông tin mà chúng ta đang cần. Trong bài viết này, Ubuntu được cài đặt lên ổ E, vì vậy chúng ta cần thêm vào thành phần này trước tiên. Nhưng nếu Ubuntu của bạn cài trên ổ C thì có thể bỏ qua bước này.
Để thay đổi ký hiệu nhận dạng phân vùng, gõ lệnh sau:
bcdedit /set {device_id} partition=X:
Tiếp theo, thêm đường dẫn tới phân vùng cài đặt Ubuntu. Đường dẫn này sẽ có dạng như sau \ubuntu\winboot\wuildr.mbr, các tham số có thể khác nhau tùy theo từng hệ thống. Trỏ tới đường dẫn của Ubuntu (kiểm tra lại nếu thấy cần thiết), và sau đó gõ câu lệnh sau:
bcedit /set {device_id} path \your_ubuntu_path\winboot\wubildr.mbr
Đóng ứng dụng Command Prompt, khởi động lại hệ thống và bạn đã có thể sử dụng cả Windows và Ubuntu như trước kia.
Chúc các bạn thành công!

T.Anh (theo HowToGeek)

10.15.2010

Cài đặt song song Ubuntu 10.10 với Windows 7

Ubuntu 10.10 vừa ra mắt với giao diện đẹp cùng nhiều tính năng hấp dẫn. Tuy nhiên với đại đa số người dùng Linux nói chung và Ubuntu nói riêng vẫn chỉ là lựa chọn thứ 2 sau Windows. Chính vì vậy rất nhiều bạn đọc muốn cài đặt và dùng thử Ubuntu lên máy tính đang chạy Windows.
Hướng dẫn dưới đây sẽ giúp các bạn cài Ubuntu 10.10 trên máy đã có Windows 7.

Các bước chuẩn bị

  1. Đĩa Ubuntu: Đĩa cài đặt bạn có thể mua ngoài cửa hàng hoặc truy cập vào trang download của Ubuntu tải file iso và ghi ra CD/DVD.
  2. Phân vùng ổ cứng để cài Ubuntu lên đó.
  3. Chỉnh để máy khởi động từ CD/DVD

Các bước cài đặt

Bước 1: Khởi động máy từ đĩa cài đặt Ubuntu và chọn “Install Ubuntu”
Bước 2: Trong bước Preaparing to Install Ubuntu chọn Forward để tiếp tục
Bước 3: Trong cửa sổ tiếp theo, chọn phân vùng cài đặt, bạn chọn mục thứ 3: Specify partition manually rồi chọn Forward để tiếp tục.
Bước 4: Màn hình kế tiếp cho phép chúng ta chỉnh sửa các phân vùng ổ cứng. Bạn phải phải xác định được chắc chắn đâu là phân vùng định cài đặt Ubuntu lên. Nếu xác định nhầm toàn bộ dữ liệu trên phân vùng đó sẽ bị xóa.
Như trong hình dưới đây chúng ta có 42949 MB chỗ trống (khoảng hơn 40GB). Nếu phân vùng bạn định cài Ubuntu không giống như hình dưới (có thể do bạn đã format dạng NTFS hay FAT32 trên Windows) bạn cần chọn nút Delete để xóa phân vùng đó.
Chọn Add để tạo 2 phân vùng từ phần đĩa trống:
  • Phân vùng thứ nhất dành cho swap (có dung lượng khoảng 1 đến 2 lần độ lớn của RAM)
  • Phân vùng thứ 2 có dung lượng chính là chỗ trống còn lại, với định dạng ext4 và mount point là / (root).
Lưu ý: Toàn bộ các bước xóa, tạo mới phân vùng đến lúc này đều là thực hiện trên lý thuyết, chưa được áp dụng vào ổ cứng. Vì vậy nếu thấy chưa hợp lý các bạn có thể chọn Revert để làm lại từ đầu. Với những bạn hiểu biết nhiều về Linux/Unix có thể tạo các phân vùng cho các mount point khác nhau.
Bước 5: Sau khi tạo các phân vùng xong, các bạn chọn ổ cứng chính (ví dụ như /dev/sda, chứ không phải /dev/sda1, /dev/sda2 ...) để ghi Boot loader. Sau đó chọn Install Now để bắt đầu cài đặt.
Bước 6: Trong khi máy tiến hành cài đặt bạn sẽ phải chọn Timezone, Keyboard layout và tên đăng nhập cùng mật khẩu cho máy.
Khi cài đặt xong, Ubuntu sẽ yêu cầu bạn khởi động lại máy. Khi khởi động vào máy bạn sẽ thấy menu boot của GRUB cho phép lựa chọn khởi động vào Ubuntu hay Windows 7.
Có thể thấy bước quan trọng và cần lưu ý nhất trong quá trình cài đặt là bước 3 và bước 5. Trong hai bước này chúng ta phải xác định phân vùng cài đặt và vùng ghi Boot loader. Nếu chọn sai trong bước 3 chúng ta sẽ xóa nhầm dữ liệu, còn nếu chọn sai trong bước 5 chúng ta sẽ không thể boot vào Windows 7.
Hoài Nam

9.26.2010

Hướng dẫn thiết lập hệ thống lưu trữ độc lập tương tự NFS

Trong bài viết sau, Quản Trị Mạng sẽ giới thiệu với các bạn cách thiết lập hệ thống lưu trữ dữ liệu độc lập trên nền tảng Ubuntu 10.04. Thay vì sử dụng NFS, chúng ta sẽ dùng GlusterFS, hệ thống client được cung cấp khả năng truy cập đến các thiết bị lưu trữ. GlusterFS là tập hợp file hệ thống có thể được nhân rộng tới vài peta-byte. Chương trình có thể lưu trữ dữ liệu trên những các mô hình, thiết bị khác nhau qua giao thức Infiniband RDMA hoặc TCP/IP được kết nối vào 1 hệ thống lớn song song với các tập tin mạng. Những thiết bị lưu trữ này phải tương thích tốt với hệ điều hành server x86_64 như SATA-II RAID và Infiniband HBA.

Lưu ý sơ bộ

Trong bài thử nghiệm này, chúng ta sử dụng 2 hệ thống server và client:
 - server: server1.example.com và địa chỉ IP: 192.168.0.100
 - client: client1.example.com và địa chỉ IP 192.168.0.101

Tất cả các lệnh đều được thực hiện bằng tài khoản gốc, do đó hãy đăng nhập vào root:
sudo su
Cả 2 mô hình này đều có thể áp dụng trên các hostname của hệ thống khác. Nếu không thực hiện được qua DNS, hãy sửa lại file /etc/hosts như sau:
vi /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1
192.168.0.101 client1.example.com client1

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Các bạn nên sử dụng địa chỉ IP thay vì hostname, vì sẽ tiện lợi hơn rất nhiều trong những bước thực hiện tiếp theo.

Cài đặt và thiết lập hệ thống Server GlusterFS


Quá trình này sẽ được áp dụng trên server1.example.com. Các gói cài đặt GlusterFS đã có sẵn trong Ubuntu 10.04, do đó hãy sử dụng lệnh sau:
aptitude install glusterfs-server
Cú pháp:
glusterfs --version
sẽ hiển thị phiên bản của GlusterFS vừa cài đặt (ở đây là 3.0.2):
root@server1:~# glusterfs --version
glusterfs 3.0.2 built on Mar 23 2010 00:24:16
Repository revision: v3.0.2
Copyright (c) 2006-2009 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.
root@server1:~#
Tiếp theo, chúng ta tạo thêm các thư mục sau:
mkdir /data/
mkdir /data/export
mkdir /data/export-ns
Sau đó, tạo file thiết lập /etc/glusterfs/glusterfsd.vol (nhưng trước đó chúng ta nên sao lưu file gốc /etc/glusterfs/glusterfsd.vol) – có chức năng chỉ định thư mục nào sẽ được khởi tạo (/data/export) và client nào được cho phép kết nối (192.168.0.101 = client1.example.com):
cp /etc/glusterfs/glusterfsd.vol /etc/glusterfs/glusterfsd.vol_orig
cat /dev/null > /etc/glusterfs/glusterfsd.vol
vi /etc/glusterfs/glusterfsd.vol

volume posix
type storage/posix
option directory /data/export
end-volume

volume locks
type features/locks
option mandatory-locks on
subvolumes posix
end-volume

volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume

volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow 192.168.0.101 # Edit and add list of allowed clients comma separated IP addrs(names) here
subvolumes brick
end-volume
Lưu ý rằng chúng ta vẫn có thể sử dụng được các ký hiệu đặc biệt với địa chỉ IP (ví dụ 192.168.*) và sau đó phân chia riêng rẽ các địa chỉ IP bằng dấu phẩy (ví dụ 192.168.0.101,192.168.0.102). Sau đó hãy khởi động server GlusterFS:
/etc/init.d/glusterfs-server start
Cài đặt và thiết lập hệ thống Client GlusterFS

Với client1.example.com, chúng ta có thể cài đặt GlusterFS client như sau:
aptitude install glusterfs-client glusterfs-server
Sau đó tạo thư mục:
mkdir /mnt/glusterfs
Và tạo file /etc/glusterfs/glusterfs.vol (cũng như với server, chúng ta nên sao lưu file cấu hình /etc/glusterfs/glusterfs.vol này trước):
cp /etc/glusterfs/glusterfs.vol /etc/glusterfs/glusterfs.vol_orig
cat /dev/null > /etc/glusterfs/glusterfs.vol
vi /etc/glusterfs/glusterfs.vol

volume remote
type protocol/client
option transport-type tcp
option remote-host server1.example.com # can be IP or hostname
option remote-subvolume brick
end-volume

volume writebehind
type performance/write-behind
option window-size 4MB
subvolumes remote
end-volume

volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume
Hãy chắc chắn tham số hostname hoặc địa chỉ IP trong dòng option remote-host được khai báo chuẩn xác với hệ thống. Bây giờ chúng ta có thể ghép file hệ thống GlusterFS tới /mnt/glusterfs bằng 1 trong 2 câu lệnh sau:
glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs
hoặc
mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs
Khi sử dụng lệnh mount, các bạn sẽ thấy kết quả trả về tương tự như sau:
root@client1:~# mount
/dev/mapper/server2-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 on /boot type ext2 (rw)
/etc/glusterfs/glusterfs.vol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
root@client1:~#
và:
df -h

root@client1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server2-root
29G 851M 26G 4% /
none 243M 172K 242M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 36K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
none 247M 0 247M 0% /lib/init/rw
none 29G 851M 26G 4% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/etc/glusterfs/glusterfs.vol
18G 848M 16G 5% /mnt/glusterfs
root@client1:~#
Thay vì phải ghép các chia sẻ lần lượt từ GlusterFS trên hệ thống client, các bạn có thể can thiệp vào file /etc/fstab để quá trình này tự động khi client được kích hoạt. Mở file /etc/fstab và thêm dòng mã sau:
vi /etc/fstab

[...]
/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0
Để kiểm tra lại sau khi chỉnh sửa file /etc/fstab hệ thống có hoạt động bình thường hay không, khởi động lại client:
reboot
dùng lệnh df -h và mount để kiểm tra danh sách hiển thị các liên kết chia sẻ bên trong đó.

Trên đây là 1 số bước cơ bản để cài đặt và thiết lập hệ thống lưu trữ độc lập tương tự NFS với GlusterFS trên Ubuntu 10.04. Chúc các bạn thành công!
T.Anh (theo HowToForge)

9.18.2010

Cài đặt Liferay 6.0.5 Community với Tomcat trên Ubuntu 10.04

Liferay Portal là 1 giải pháp dành cho doanh nghiệp dựa trên nền tảng web với khả năng mang lại kết quả gần như ngay lập tức và giá trị sử dụng lâu dài. Hãy tận hưởng lợi ích của các giải pháp toàn diện và nền tảng ứng dụng dành cho doanh nghiệp chỉ với 1 phần mềm duy nhất. Trong bài viết sau, Quản Trị Mạng sẽ giới thiệu với các bạn cách cài đặt Liferay 6.0.5 Community với tài khoản root và MySQL server có sẵn.
Cài đặt Java JDK
Trước tiên, chúng ta cần tạo thư mục dành cho java:
mkdir /usr/java
tại hệ thống thử nghiệm này, chúng tôi đang sử dụng hệ điều hành Ubuntu phiên bản 64bit (với hệ thống Ubuntu 32bit các bạn cần tải gói i586 tương ứng). Truy cập địa chỉ này và tải file jdk-6u21-linux-x64.bin, lưu vào thư mục java vừa tạo ra.

Tiếp theo, chúng ta cần gán thuộc tính thực thi cho file đó và kích hoạt:
cd /usr/java
chmod +x jdk-6u21-linux-x64.bin
./jdk-6u21-linux-x64.bin
Hãy thêm dòng mã /etc/profile đối với JDK6 và Liferay Portal. Mở file /etc/profile:
nano /etc/profile
và thêm những dòng sau vào phía cuối của file:
export JAVA_HOME=/usr/java/jdk1.6.0_21
export LIFERAY_HOME=/usr/liferay/liferay-portal-6.0.5/tomcat-6.0.26
export PATH=$JAVA_HOME/bin:$LIFERAY_HOME/bin:$PATH
Hãy chắc chắn rằng tham số JAVA_HOME và LIFERAY_HOME đã được thiết lập chuẩn xác. Để làm việc này, mở Terminal và gõ lệnh:
echo $JAVA_HOME
echo $LIFERAY_HOME
Tạo cơ sở dữ liệu

Đăng nhập vào MySQL bằng tài khoản root:
mysql -u root –p
và bước đầu tạo cơ sở dữ liệu như sau:
CREATE DATABASE lportal DEFAULT CHARACTER SET utf8;
quit;
Tạo thư mục cho Liferay
mkdir /usr/liferay
Cài đặt Liferay

Tải và giải nén gói Liferay cùng với Tomcat vào thư mục /usr/liferay. Tiếp đến, tạo file Portal-Ext.Properties:
cd $LIFERAY_HOME/webapps/ROOT/WEB-INF/classes
nano portal-ext.properties
Và chèn thêm dòng mã sau:
#
# MySQL
#
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost/lportal?useUnicode=true&characterEn
coding=UTF-8&useFastDateParsing=false
jdbc.default.username=root
jdbc.default.password=password
schema.run.enabled=true
schema.run.minimal=true
Thay đổi lại giá trị username và password mong muốn.

Sử dụng tiếp lệnh sau:
cd $LIFERAY_HOME/bin
chmod +x *.sh
để gán thuộc tính thực thi cho các file đó.

Khởi động Liferay


Lần khởi động đầu tiên này thông thường sẽ mất từ 10 – 15 phút (phụ thuộc vào cấu hình và tình trạng phần cứng):
$LIFERAY_HOME/bin/startup.sh
và để truy cập vào Liferay, các bạn áp dụng mẫu sau:
http://<địa chỉ IP của server Liferay>:8080
ví dụ ở đây là:
http://192.168.0.1:8080
Trên đây là 1 số thao tác cơ bản để cài đặt và sử dụng Liferay 6.0.5 Community cùng với Tomcat trên nền tảng Ubuntu 10.04. Chúc các bạn thành công!
T.Anh (theo HowToForge)

9.14.2010

Cài đặt Apache2 với mod_fcgid và PHP5 trên Ubuntu 10.04

Trong bài viết sau, Quản Trị Mạng sẽ giới thiệu với các bạn cách cài đặt Apache2 với module hỗ trợ mod_fcgid và PHP5 trên nền tảng Ubuntu 10.04. Module này là 1 sự thay thế khá hoàn hảo cho module cũ – mod_fastcgi. Nó cho phép bạn thực hiện các đoạn mã PHP với tài khoản tương ứng của Apache.



Lưu ý sơ bộ



Tại bài thử nghiệm này chúng ta sử dụng hệ điều hành Ubuntu server với hostname server1.example.com và địa chỉ IP 192.168.0.100. Tại đây, ta tạo 2 vhost Apache, bao gồm www.example1.comwww.example2.com để mô phỏng mục đích sử dụng của mod_fcgid. Hãy đăng nhập vào hệ thống bằng tài khoản root:

sudo su

/bin/sh là đường dẫn liên kết đến /bin/dash, nhưng chúng ta chỉ cần đến /bin/bash chứ không phải là /bin/dash. Do vậy hãy gõ lệnh sau:

dpkg-reconfigure dash



Install dash as /bin/sh? <-- gõ No

Tiếp đó, chúng ta cần tắt bỏ AppArmor:

/etc/init.d/apparmor stop

update-rc.d -f apparmor remove

aptitude remove apparmor apparmor-utils

Cài đặt Apache2 / mod_fcgi / PHP5



Để cài đặt đầy đủ 3 ứng dụng trên theo thứ tự, sử dụng lệnh sau:

aptitude install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi

Nhưng nếu Apache2 đã được cài đặt cùng với PHP5 như 1 module của Apache thì cần phải tắt bỏ module PHP5 đó đi:

a2dismod php5

và kích hoạt những module sau:

a2enmod rewrite

a2enmod suexec

a2enmod include

a2enmod fcgid

Sau đó mở file /etc/php5/cgi/php.ini:

vi /etc/php5/cgi/php.ini

bỏ chú thích tại dòng cgi.fix_pathinfo = 1:

[...]

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's

; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok

; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting

; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting

; of zero causes PHP to behave as before. Default is 1. You should fix your scripts

; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.

; http://php.net/cgi.fix-pathinfo

cgi.fix_pathinfo=1

[...]

Tiếp tục mở file /etc/apache2/mods-available/fcgid.conf … :

vi /etc/apache2/mods-available/fcgid.conf

và thêm dòng mã PHP_Fix_Pathinfo_Enable 1 (không giống như các phiên bản Ubuntu trước kia, với bản 10.04 dòng mã này không được nằm trong section của <VirtualHost> nếu không sẽ gây ra lỗi PHP_Fix_Pathinfo_Enable cannot occur within <VirtualHost> section):

<IfModule mod_fcgid.c>

AddHandler fcgid-script .fcgi

FcgidConnectTimeout 20

PHP_Fix_Pathinfo_Enable 1

</IfModule>

Và khởi động lại Apache:

/etc/init.d/apache2 restart

Tạo Vhosts cho www.example1.com và www.example2.com



Trong bước tiếp theo, chúng ta sẽ tạo 2 vhost - www.example1.com (với thư mục tài liệu gốc là /var/www/web1/web) và www.example2.com (thư mục tài liệu gốc là /var/www/web2/web). Trong đó, www.example1.com thuộc sở hữu của tài khoản người dùng và nhóm web1, còn www.example2.com thuộc sở hữu của tài khoản người dùng và nhóm web2. Trước tiên, chúng ta tạo tài khoản người sử dụng và các nhóm tương ứng:

groupadd web1

groupadd web2

useradd -s /bin/false -d /var/www/web1 -m -g web1 web1

useradd -s /bin/false -d /var/www/web2 -m -g web2 web2

Tiếp theo, tạo các thư mục tài liệu gốc tương ứng với các vhost và nhóm đó:

mkdir -p /var/www/web1/web

chown web1:web1 /var/www/web1/web

mkdir -p /var/www/web2/web

chown web2:web2 /var/www/web2/web

Chúng ta sẽ sử dụng PHP với suExec, và thư mục tài liệu gốc của suExec tại /var/www, như được chỉ ra bằng lệnh sau:

/usr/lib/apache2/suexec -V



root@server1:~# /usr/lib/apache2/suexec -V

-D AP_DOC_ROOT="/var/www"

-D AP_GID_MIN=100

-D AP_HTTPD_USER="www-data"

-D AP_LOG_EXEC="/var/log/apache2/suexec.log"

-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"

-D AP_UID_MIN=100

-D AP_USERDIR_SUFFIX="public_html"

root@server1:~#

Nhưng chúng ta lại không thể gọi trực tiếp các file PHP nhị phân (/usr/lib/cgi-bin/php) trực tiếp bởi vì ó được đặt bên ngoài thư mục gốc của suExec. Nhưng suExec lại không chấp nhận các đường dẫn liên kết mềm, do đó cách giải quyết duy nhất để khắc phục vấn đề này là tạo mã kích hoạt hỗ trợ cho từng website riêng biệt trong thư mục con của /var/www; và những đoạn mã này sẽ đảm nhận nhiệm vụ gọi các thư viện của PHP tại /usr/lib/cgi-bin/php. Và những đoạn mã này phải thuộc quyền quản lý của các tài khoản người dùng và nhóm riêng biệt trong từng website. Tại đây, chúng ta sẽ tạo những đoạn mã tương ứng bên trong thư mục /var/www/php-fcgi-scripts, ví dụ là /var/www/php-fcgi-scripts/web1 và /var/www/php-fcgi-scripts/web2:

mkdir -p /var/www/php-fcgi-scripts/web1

mkdir -p /var/www/php-fcgi-scripts/web2



vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter



#!/bin/sh

PHPRC=/etc/php5/cgi/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/lib/cgi-bin/php



vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter



#!/bin/sh

PHPRC=/etc/php5/cgi/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/lib/cgi-bin/php

Thông tin tại dòng PHPRC sẽ chỉ tới thư mục của file php.ini (ví dụ /etc/php5/cgi/ thành /etc/php5/cgi/php.ini). PHP_FCGI_MAX_REQUESTS là số lượng các yêu cầu tối đa được fcgid xử lý trước khi dừng lại và quá trình mới bắt đầu. PHP_FCGI_CHILDREN khởi tạo số lượng các “PHP children” sẽ được kích hoạt.



Đoạn mã php-fcgi-starter phải được thực thi:

chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi-starter

chmod 755 /var/www/php-fcgi-scripts/web2/php-fcgi-starter

chown -R web1:web1 /var/www/php-fcgi-scripts/web1

chown -R web2:web2 /var/www/php-fcgi-scripts/web2

Bây giờ, chúng ta sẽ tạo vhost Apache dành cho www.example1.com và www.example2.com:

vi /etc/apache2/sites-available/web1



<VirtualHost *:80>

ServerName www.example1.com

ServerAlias example1.com

ServerAdmin webmaster@example1.com

DocumentRoot /var/www/web1/web/



<IfModule mod_fcgid.c>

SuexecUserGroup web1 web1

<Directory /var/www/web1/web/>

Options +ExecCGI

AllowOverride All

AddHandler fcgid-script .php

FCGIWrapper /var/www/php-fcgi-scripts/web1/php-fcgi-starter .php

Order allow,deny

Allow from all

</Directory>

</IfModule>



# ErrorLog /var/log/apache2/error.log

# CustomLog /var/log/apache2/access.log combined

ServerSignature Off



</VirtualHost>

a2ensite web1



vi /etc/apache2/sites-available/web2



<VirtualHost *:80>

ServerName www.example2.com

ServerAlias example2.com

ServerAdmin webmaster@example2.com

DocumentRoot /var/www/web2/web/



<IfModule mod_fcgid.c>

SuexecUserGroup web2 web2

<Directory /var/www/web2/web/>

Options +ExecCGI

AllowOverride All

AddHandler fcgid-script .php

FCGIWrapper /var/www/php-fcgi-scripts/web2/php-fcgi-starter .php

Order allow,deny

Allow from all

</Directory>

</IfModule>



# ErrorLog /var/log/apache2/error.log

# CustomLog /var/log/apache2/access.log combined

ServerSignature Off



</VirtualHost>

a2ensite web2

Hãy chắc chắn rằng bạn đã khai báo đường dẫn chính xác, bao gồm cả tên các tài khoản người dùng và nhóm tại dòng SuexecUserGroup. Reload Apache với lệnh sau:

/etc/init.d/apache2 reload

Kiểm tra



Để tiến hành kiểm tra, chúng ta sẽ tạo 1 file PHP nho nhỏ. Ví dụ với www.example1.com:

vi /var/www/web1/web/info.php



<?php

phpinfo();

?>

Sau đó, mở trình duyệt và gõ địa chỉ sau: http://www.example1.com/info.php. Nếu tất cả hoạt động bình thường, kết quả hiển thị sẽ giống như hình dưới đây, và bạn sẽ nhìn thấy thông số CGI/FastCGI tại dòng Server API:

Tùy chỉnh file php.ini cho từng website



Như đã đề cập bên trên, mỗi website riêng biệt đều có mã kích hoạt php-fcgi-starter tương ứng, vì vậy chúng ta không thể tạo riêng file php.ini cho từng website được. Để mô tả quá trình này, chúng ta sẽ copy file php.ini mặc định (/etc/php5/cgi/php.ini) tới thư mục /var/www/web2/ và “ép” www.example2.com sử dụng php.ini từ thư mục /var/www/web2/:

cp /etc/php5/cgi/php.ini /var/www/web2/

chown web2:web2 /var/www/web2/php.ini

Tại đây, bạn có thể chỉnh lại file /var/www/web2/php.ini theo ý thích. Sau đó chúng ta tiếp tục mở file /var/www/php-fcgi-scripts/web2/php-fcgi-starter … :

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

và thêm giá trị /var/www/web2/ vào dòng PHPRC:

#!/bin/sh

PHPRC=/var/www/web2/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/lib/cgi-bin/php

Và tải lại Apache:

/etc/init.d/apache2 reload

Tiếp theo, tạo file phpinfo(); cho www.example2.com … :

vi /var/www/web2/web/info.php



<?php

phpinfo();

?>

Và kiểm tra bằng đường dẫn http://www.example2.com/info.php. Tại dòng Loaded Configuration File sẽ hiển thị thông tin /var/www/web2/php.ini:

Thay đổi thiết lập của file cấu hình PHP



Trong quá trình luân chuyển file php.ini mới tới website, bạn vẫn có thể thay đổi lại những thiết lập của mã php-fcgi-starter (hoặc sử dụng song song cả 2) bằng cách thêm tiền tố -d để chuyển thành file PHP thực thi. Ví dụ, nếu muốn tắt bỏ module magic_quotes_gpc của website www.example2.com thì chúng ta sẽ làm như sau:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter



#!/bin/sh

PHPRC=/etc/php5/cgi/

export PHPRC

export PHP_FCGI_MAX_REQUESTS=5000

export PHP_FCGI_CHILDREN=8

exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off

Tiếp tục tải lại Apache:

/etc/init.d/apache2 reload

Mở trình duyệt, kiểm tra lại mã info.php bằng địa chỉ http://www.example2.com/info.php, tìm kiếm thông tin của magic_quotes_gpc – hệ thống sẽ hiển thị tình trạng Off:

Trên đây là 1 số thao tác để cài đặt Apache2 cùng module mod_fcgid và PHP5 trên nền tảng Ubuntu 10.04. Chúc các bạn thành công!

T.Anh (theo HowToForge)