Datgs' Blog

Quyết chiến quyết thắng !

Archive for the tag “Apache”

Lỗi mod_security (mod_security2 )

Mod_security rất tốt cho việc bảo vệ website khỏi các vụ tấn công. Tuy nhiên nhược điểm của nó là thường hay gây lỗi cho chính các ứng dụng web. Nhất là khi upload file lên phía server.

Vì vậy trong các trường hợp ta có thể tắt mod_security bằng một file .htaccess.

SecFilterEngine Off (tắt toàn bộ)
SecFilterScanPOST Off (tắt kiểm duyệt POST)

Thông thường chúng ta nên thử SecFilterScanPOST Off

Sau đó nếu tình hình không có gì thay đổi, mới cần sử dụng SecFilterEngine Off

Nói thêm, có 2 mod_sercurity và mod_security2, tất nhiên là đời sau tiến bộ hơn đời trước.

Nói thêm, chỉ có thể sử dụng .htacess khi mà được phép bởi DDISABLE_HTACCESS_CONFIG của apache. Ngược lại thì chỉ còn cách gọi trung tâm hỗ trợ.

Nói thêm, mod_security2 có nhiều tham số nâng cao hơn mod_security, nhưng về mục đích sử dụng là như nhau. Và xét toàn diện, module này làm cho webserver chạy chậm đi một lượng kha khá :)

Cấu hình subdomain với DNS, Apache và các sử dụng trong PHP

http://andy.sinaptix.com/2007/08/22/username-as-subdomain-in-codeigniter

http://ma.tt/2003/10/wildcard-dns-and-sub-domains/

I’ve been wondering for a while if I can do automatic subdomain using username, same as WordPress MU does. Some thought come across and all leads to same point , the $base_url() variable.

What makes me a bit wary is that particular variable reside in config file, which suppose to be static. On the other hand, manipulating the variable in controller is easy but redundant. So what the heck…
There are three places to modify for this :

  1. DNS entry
  2. Apache vhost
  3. Codeigniter config.php

Life has been good to me since I have full control over those three, I have my own DNS server, and apache server, so if you are less fortunate than I am, do not hesitate to nag , beg and annoy your hosting company to do changes for you

DNS entry :

make sure you put wildcard entry :
mygreatsite.com. A 123.123.123.001
*.mygreatsite.com. A 123.123.123.001

Apache vhost :

We use separate vhost file for each domain, and include those files using Apache “Include” directive, to keep things tidy and avoid fiddling with main apache config.
<virtualhost>
ServerName mygreatsite.com
ServerAlias *.mygreatsite.com
ServerAdmin superduperadmin@superduperwebcompany.com
#RedirectMatch 301 (.*) http://mygreatsite.com$1
DocumentRoot /var/oi/keepcodeigniterhere
<directory>
Options Indexes FollowSymLinks MultiViews
</directory>
AllowOverride All
Order allow,deny
allow from all
</virtualhost>

the most important part is :
#RedirectMatch 301 (.*) http://mygreatsite.com$1
CodeIgniter config.php :

I test using this simple hack ( on the config.php ) :
$config['base_url'] = “http://”.$_SERVER["HTTP_HOST"];

And wala !! I can test using whatever.mygreatsite.com and codeigniter still working as if there is nothing wrong with $base_url variable, therefore you can use any words ( hence, wildcard ) as subdomain prefix and apache will direct the request to the same codeigniter installation. Next step I will do is using username as subdomain, eliminating ugly url like
http://www.mygreatsite.com/someuser/profile
and make it nicer as in
http://someuser.mygreatsite.com/profile
Nice !!
Yeah I know I have to test rigorously to ensure nothing is broken with codeigniter ( and my application ) but at this moment I think it leads to the right direction.
I also do some search at CodeIgniter’s forum just to verify my method and I’ve found great reference :
http://codeigniter.com/forums/viewthread/51627/

For wildcard DNS, take a look at this guide by WordPress creator :
http://photomatt.net/2003/10/10/wildcard-dns-and-sub-domains/

Apache modules

mod_evasive

mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.

Cài đặt apache, php, mysql trên windows (cập nhật)

Chú ý: chỉ áp dụng chính xác cho phiên bản apache2.2.x php5.2.x và mysql 5.x, với các phiên bản khác có thể có một chút đổi khác.

Có thể chỉ phù hợp với những người có kinh nghiệm cài đặt Apache, PHP và MySQL. Nếu hướng dẫn dưới đây là không đầy đủ. Bạn có thể tìm một hướng dẫn chi tiết hơn cho từng mục.

0. Chuẩn bị

Chú ý duy nhất là nếu bạn cài đặt đè lên bản apache cũ, bạn hãy xóa file config cũ đi. Vì khi cài đè apache không đè các file config.

1. Các bộ cài

Apache 2.2.x tải về từ  website http://httpd.apache.org/ (chọn bản MSI installer)

MySQL5.xtải về từ website http://dev.mysql.com/downloads/mysql/5.0.html (chọn bản MSI installer)

PHP5.2.x tải bản zip dành cho windows tại http://www.php.net/downloads.php.

2. Cài đặt

Cài đặt Apache2.2.x bình thường với cấu hình cơ bản là localhost, localhost, <admin email>, 8080 hoặc 80. Chú ý một trong hai cổng 8080 hoặc 80 phải tự do, tức là chưa có dịch vụ nào sử dụng nó.

Cài đặt MySQL5.x bình thường. Đến phần cấu hình next cho đến khi được yêu cầu nhập root password. Bạn nên chọn một password. Với server đang phát triển, thường chọn mật khẩu root là 123456.

PHP giải nén và chú ý ghi nhớ đường dẫn đến thư mục PHP của bạn.

3. Cấu hình

Để Apache2.2.x chạy PHP dưới dạng một module bạn làm như sau

Mở file httpd.conf của Apache (nằm trong thư mục conf, nơi bạn đã cài apache)

Thêm vào httpd.conf đoạn cấu hình

LoadModule php5_module “E:\WEBSERVER\php5\php5apache2_2.dll”
AddType application/x-httpd-php .php
PHPIniDir “E:\WEBSERVER\php5″

LoadModule php5_module “PHP_PATH\php5apache2_2.dll”

AddType application/x-httpd-php .php

PHPIniDir “PHP_PATH”

Với chú ý rằng PHP_PATH là nơi bạn đã giải nén PHP.

Để Apache2.2.x chọn index.php làm trang web mặc định để

Tìm tới dòng

DirectoryIndex index.html

Sửa lại thành

DirectoryIndex index.html index.php

Nếu bạn muốn index.php có ưu tiên cao hơn, bạn có thể chuyển nó về trước index.html

DirectoryIndex index.php index.html

Chuẩn bị file php

Tìm trong thư mục bạn đã giải nén PHP file php5ts.dll và copy nó vào thư mục bin của apache.

Trong thư mục bạn đã giải nén PHP, copy toàn bộ các file *.dll bạn nhìn thấy vào trong thư mục Windows/system32 chú ý chỉ copy file bạn nhìn thấy, không cần copy các file trong thư mục

Bước này chỉ là kinh nghiệm của tôi qua việc cài đặt các phiên bản trước. Có thể trong phiên bản này bước này không còn cần thiết nữa. Tuy nhiên, tôi vẫn thường làm theo cách này và không gặp bất cứ trục trặc nào.

Trong thư mục bạn đã giải nén PHP, copy php.ini-dist và sửa tên file bạn vừa copy thành php.ini.

Bạn sửa luôn php.ini-dist thành php.ini cũng không sao cả.

Cấu hình php.ini

1. Mở file php.ini bằng notepad, notepad++ hay wordpad

2. Tìm trong php.ini từ khóa doc_root và sửa thành

doc_root = APACHE_PATH/htdocs

* Trong đó APACHE_PATH là nơi bạn đã cài đặt apache.

* Chú ý rằng

htdocs là nơi mặc định của apache để đặt các public files (html, php). Bạn có thể cấu hình lại, hoặc dùng virtual host, hoặc dùng Script-Alias… Tuy nhiên, nếu bạn mới bắt đầu sử dụng Apache thì bạn không cần phải quá quan tâm đến vấn đề này. Chỉ cần cấu hình mặc định là được.

3. Tìm trong php.ini từ khóa extension_dir và cấu hình thành

extension_dir = PHP_PATH/ext

* extension_dir là đường dẫn đến nơi bạn để các thư viện mở rộng của PHP

4. Tìm các dòng ;extension=php_*.dll đó là các extension mà php cung cấp cho bạn. Chú ý rằng nếu có ; tức là thư viện đó chưa được sử dụng. Nếu bạn muốn sử dụng thư viện nào, chỉ cần bỏ dấu ; . Các thư viện cần đề dev bao gồm

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_soap.dll

5. Copy các file *.dll trong thư mục PHP_PATH vào thư  mục system32 của windows (WINDOWS/system32) (nhắc lại một câu ở trên vì thao tác này khá là dễ bị quên)

4. Hoàn thành

Khởi động lại apache là hoàn tất.

Lựa chọn HTTP Server, tối đa lượng truy cập đồng thời

Theo
Cong Dang Chien hatza700@gmail.com;
phpvietnam@googlegroups.com

Ở công ty, nhóm mình đang maintenace cho một hệ thống quản lý quảng cáo dựa trên OpenX. Hiện hệ thống bọn mình mới chỉ chạy tạm trên một server Xeon QuadCore 2Ghz. 

Mới đầu cài Apache thì chỉ khoảng 400 kết nối TCP đồng thời là chết.

Khi cài lighttpd, mới cấu hình đơn giản thôi, chưa tối ưu thật sự thì hệ thống chịu được 900 kết nối TCP mà vẫn chưa sao. Đây là kết nối thật đó, chứ không phải bọn mình load test đâu. Còn khi bọn mình load test ở bằng PC quadcore của bọn mình thì hệ thống chịu đc 3000 kết nối.

Nói chung apache quản lý các kết nối đồng thời kém hơn lighty. Nhưng thằng khủng nhất hiện nay là Nginx. Bác nào chịu khó mày mò tiếng Nga (nó có tài liệu tiếng anh nhưng ko nhiều) thì thử cài xem.

Có môt chú kĩ sư ở wordpress khoe cài đặt được một con load balancing dựa trên Nginx chịu đc 8000 kết nối đồng thời thật (ko phải là load test). Căn bản yêu cầu bài toán ở cty mình chỉ cần mức lighttpd nên mình cũng ko có nhu cầu tối ưu thêm làm gì.

Post Navigation

Follow

Get every new post delivered to your Inbox.