Các yêu cầu về hiệu suất của WordPress có thể khác nhau giữa các dự án, nhưng có một điều chắc chắn không thay đổi xuyên suốt—nó phải nhanh.
Một yêu cầu khác không cần phải nói—đó phải là kinh tế, vì vậy chúng ta không thể có các giải pháp sử dụng nhiều tài nguyên. Các giải pháp phải tinh gọn, có ý nghĩa và đáng tin cậy và để tối đa hóa hoàn toàn thu nhập trên trang web của bạn, chi phí lưu trữ phải được giữ ở mức tối thiểu
Nếu bạn dự kiến sẽ nhận được nhiều lưu lượng truy cập, thì cấu hình máy chủ web mà bạn đang phục vụ WordPress có ảnh hưởng trực tiếp đến hiệu suất trang web của bạn, ảnh hưởng đến thời gian tải và độ ổn định.
Khi chọn máy chủ web của mình, bạn có một số lựa chọn; . Chúng tôi sẽ đề cập đến Apache và Nginx trong hướng dẫn này
Người ta ước tính rằng trên toàn bộ internet cộng lại, Apache Server và Nginx cùng nhau phục vụ 50% tổng lưu lượng truy cập web.
Nếu bạn là người mới tham gia vào chủ đề này, có thể bạn đang bối rối bởi hai mục đích dường như giống hệt nhau của phần mềm—để phục vụ các trang web. Tôi hy vọng sẽ làm rõ hơn bên dưới về sự khác biệt của hai loại này và cách tận dụng các tính năng của một trong hai.
Apache và Nginx là những dự án rất lâu đời và cả hai đều có lý do riêng để đạt được mục tiêu giống hệt nhau là phục vụ trang web WordPress của bạn. Tuy nhiên, khi chúng tôi tìm hiểu sâu hơn về thiết kế của chúng, sẽ có sự khác biệt lớn trong cách mỗi máy chủ xử lý các kết nối.
Sự khác biệt
Một sự khác biệt chính là cách các kết nối được xử lý bởi hai
Nói một cách đơn giản, Apache sử dụng giải pháp phân nhánh theo luồng hoặc giữ nguyên, giúp duy trì kết nối mở cho từng người dùng
Mặt khác, Nginx sử dụng non-blocking event loop, nhóm kết nối hoạt động không đồng bộ thông qua worker process
Do kiến trúc này, kết quả là một quy trình nginx đơn luồng và các quy trình bổ sung không được sinh ra để xử lý từng kết nối mới. Vì vậy, ngay cả ở thời điểm tải cao, CPU và RAM không bị đóng hộp theo phương pháp này
Cũng như kiến trúc, cũng có một số khác biệt và sắc thái nhỏ giữa hai cấu hình và chúng ta sẽ xem xét những điều này chi tiết hơn sau trong hướng dẫn này.
Trước tiên, hãy xem xét hai dự án và có cái nhìn tổng quan rõ ràng
apache
- Bắt đầu vào năm 1995 bởi Robert McCool, một cựu sinh viên từ Đại học Illinois, được phát triển liên tục dưới sự quản lý của Quỹ Phần mềm Apache từ năm 1999
- Được sử dụng rộng rãi nhất trên Internet từ năm 1996 [mặc định cho nhiều máy e. g. người dùng cPanel]
- Sử dụng hệ thống tải mô-đun động có thể mở rộng rộng rãi
- Sử dụng tệp
1
37 để viết lại URL - Sử dụng tệp
1
38 cho Cấu hình máy chủ với cú pháp giống như XML
WordPress hoạt động với Apache gần như ngay lập tức, cần có một mô-đun PHP như
139, nhưng không cần nhiều thứ khác để làm cho nó hoạt động.
Apache rất linh hoạt và có rất nhiều mô-đun. Thông thường,
140 được sử dụng để cung cấp tính năng viết lại URL nhằm diễn giải các URL như
141 đến
142
Nginx
- Bắt đầu vào năm 2002 bởi Igor Sysoev, một kỹ sư phần mềm người Nga, như một giải pháp cho vấn đề C10k—một thách thức đối với các máy chủ web để xử lý 10.000 kết nối đồng thời.
- Được phát hành công khai vào năm 2004, đáp ứng mục tiêu là một kiến trúc hướng sự kiện, không đồng bộ, không chặn
- Nhẹ chạy trên phần cứng tối thiểu cung cấp hiệu suất nội dung tĩnh tuyệt vời
- Đáp ứng cao dưới tải nặng
- Sử dụng tệp cấu hình
1
43 với cú pháp giống như dấu ngoặc nhọn JS - Có thể mở rộng với các mô-đun của bên thứ ba
Là phiên bản kế thừa của Apache, Nginx có lợi ích khi biết được những cạm bẫy và các vấn đề về hiệu suất của đồng thời có thể xảy ra và nó gặt hái được toàn bộ phần thưởng từ điều này với thiết kế vòng lặp sự kiện không đồng bộ rất nhanh
Đối với nội dung tĩnh, nó hoạt động rất nhanh. Đối với nội dung động, ví dụ như PHP, Nginx không có khả năng xử lý nội dung này bằng một mô-đun như Apache. Nhưng đây không phải là trở ngại vì nó sử dụng FastCGI để đạt được điều này. Điều này hoạt động rất tốt khi kết hợp với nhóm kết nối php fpm và memcache
Yêu cầu WordPress
- PHP7 >
- mysql 5. 6 hoặc Maria DB 10. 0 >
- mod_rewrite [nếu dùng Apache]
- SSL [nếu đang được sử dụng]
Cả Apache và Nginx đều hỗ trợ php fpm. Đây là trình quản lý FastCGI, trình quản lý quy trình rẽ nhánh cho PHP có thể được sử dụng để cung cấp thời gian phản hồi rất nhanh. Chạy dưới dạng daemon trên máy chủ, nó sẽ sinh ra các quy trình khi chúng được yêu cầu.
Cấu hình PHP FPM với Apache
Người dùng Ubuntu và Debian có thể cài đặt các gói cần thiết với aptitude qua
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0
Bây giờ kích hoạt mô-đun trong apache
1
10
Sau đó, trong tệp cấu hình
144, hãy thêm phần sau
1
13
14
15
16
17
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.01
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.03
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.04
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.05
Ngoài ra, trong VirtualHost cho WordPress của bạn [đường dẫn mặc định
145], hãy thêm phần sau
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.07
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.09
16
11
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
13
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
15
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.04
17
18
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.01
100
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.03
102
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.05
Bây giờ hãy khởi động lại apache và bạn đã sẵn sàng để sử dụng
1
105
Tạo tệp
146 và tìm trong trình duyệt của bạn. PHP bây giờ sẽ được phục vụ với FPM.
Bây giờ hãy kiểm tra blog WordPress của bạn. Nhận thấy bất kỳ sự khác biệt?
Cấu hình PHP FPM với Nginx
Người dùng Ubuntu và Debian có thể cài đặt gói như sau
_______107
Bây giờ, bên trong tệp cấu hình của bạn [mặc định /etc/nginx/sites-available/default] trong khối máy chủ, bạn cần thêm cấu hình FastCGI như sau
1
109
14
11
16
13
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
15
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
17
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.04
19
18
131
100
133
102
135
136
137
138
139
140
141
142
143
19
145
131
147
148
149
150
151
152
153
19
155
156
157
19
Ở đây, chúng tôi sử dụng đoạn mã từ Nginx để đặt tham số cgi và chuyển fastcgi kết nối ổ cắm.
Tiếp theo, đảm bảo rằng bạn đã đặt
147 trong php ini, vì cài đặt mặc định đang phá vỡ cấu hình. Chỉnh sửa
148 và đặt
1
160
14
162
16
164
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
166
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
168
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.04
170
18
172
100
174
102
176
136
160
Bây giờ bạn có thể lưu tệp và tải lại PHP FPM. làm điều này thông qua
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.000
Cuối cùng, chúng ta có thể kiểm tra
149 trong trình duyệt để xác nhận rằng máy chủ hiện đang sử dụng PHP FPM với Nginx
Làm mod_rewrite trong Nginx
Nginx không sử dụng tệp
137 và để viết lại URL, nó có cách tiếp cận đơn giản hơn nhiều
Để blog WordPress của bạn hoạt động với Nginx, chỉ cần thêm phần sau vào phần
151 trong cấu hình Nginx của bạn
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.002
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.004
16
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.006
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.008
Nếu bạn đang sử dụng một thư mục cho blog WordPress của mình, vui lòng đặt như sau
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.010
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.006
16
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.008
Khởi động lại Nginx và bạn sẽ viết lại URL hoạt động
_______ 816
Thiết lập tối ưu
Bạn có nhiều tùy chọn để tối ưu hóa WordPress thông qua bộ nhớ đệm trên máy chủ thông qua memcache, varnish và cả ở cấp ứng dụng WordPress với các plugin sẽ cho phép bạn dễ dàng truy cập vào phần này.
Tuy nhiên, những gì Nginx cung cấp cho bạn là một giải pháp tuyệt vời để phục vụ nội dung trang web tĩnh với bộ đệm nội dung tĩnh mạnh mẽ và nhanh chóng của nó
Bộ nhớ cache nội dung tĩnh
Nginx rất nhanh khi được sử dụng làm bộ đệm nội dung tĩnh và đây là lúc việc sử dụng nó thực sự vượt trội về WordPress và các bài đăng trên blog có nhiều hình ảnh. Bạn có thể phục vụ tất cả CSS, JS và hình ảnh của mình thông qua máy chủ Nginx chỉ chạy cho những nhu cầu này.
Tốt nhất là luôn làm điều này trên miền không có cookie để trình duyệt thực sự lưu vào bộ nhớ cache [vì cookie không thể lưu vào bộ nhớ đệm], vì vậy, sử dụng tên miền phụ như
152 hoặc
153 sẽ là lý tưởng
Khối vị trí cho cấu hình miền phụ tĩnh này sẽ trông như thế này
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.018
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.020
16
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.022
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.024
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.026
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.04
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.028
18
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.030
100
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.032
102
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.034
136
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.036
Sử dụng
154, chúng tôi kích hoạt bộ nhớ đệm cho các tệp phương tiện tĩnh của mình. Chúng tôi chỉ định các tệp tối đa vào bộ đệm và trong bao lâu với
155
nếu bạn muốn thiết lập bộ nhớ đệm cho toàn bộ dự án, chỉ cần thêm bốn dòng sau vào nginx của bạn. cấu hình conf
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.038
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.040
16
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.042
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.044
Quan trọng.
156 sẽ lưu vào bộ nhớ cache các lỗi 404 thực tế, vì vậy tốt hơn hết là tắt tính năng này nếu bạn đang sử dụng bộ cân bằng tải kết hợp với điều này
Nhóm kết nối PHP-FPM
Có thể sử dụng các nhóm khác nhau cho mỗi WordPress khác nhau và sau đó, bạn có thể phân bổ tài nguyên rất chính xác cho từng trang web—thậm chí sử dụng những người dùng và nhóm khác nhau cho mỗi nhóm nếu cần. Cấu hình rất linh hoạt.
Bạn có thể thiết lập một số cấu hình, ví dụ
1____846
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.048
16
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.050
Trong mỗi điều sau đây, chúng ta có thể đặt rất nhiều cấu hình như vậy
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.052
14
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.054
16
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.056
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.058
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.060
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.04
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.062
18
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.064
100
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.066
102
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.068
136
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.070
138
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.072
139
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.074
141
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.076
143
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.078
145
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.080
147
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.082
149
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.084
151
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.086
153
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.088
155
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.090
157
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.092
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.093
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.094
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.095
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.096
Với điều này, bạn có thể chỉ định các tùy chọn cấu hình PHP-FPM, chẳng hạn như chiều. max_children và bạn cũng có thể chỉ định các biến môi trường cũng như đặt tên người dùng và cài đặt nhóm tại đây
Cân bằng tải Nginx
Nếu bạn sắp nhận được nhiều lưu lượng truy cập thì có thể bạn sẽ muốn thiết lập bộ cân bằng tải để sử dụng với thiết lập php-fpm của mình
Thông thường, chúng tôi sẽ muốn khởi động một số máy chủ ngược dòng phụ trợ, tất cả đều đang chạy bản sao của blog của bạn, sau đó có một máy chủ khác chạy nginx trước máy chủ này, hoạt động như một bộ cân bằng tải và sẽ điều hướng tải giữa các máy chủ ngược dòng.
Điều này có nghĩa là bạn có thể sử dụng nhiều máy chủ để cung cấp năng lượng cho blog của mình cùng một lúc và cấu hình để thực hiện việc này tương đối dễ dàng.
Một cấu hình ví dụ sẽ như thế này. Đầu tiên chúng ta bắt đầu với một mô-đun ngược dòng
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.098
14
100
16
102
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
104
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.008
Ở đây, mỗi backend1. ví dụ. com có cấu hình Nginx riêng, phản ánh tình trạng của trang web trước khi có bộ cân bằng tải. Nginx sẽ chọn máy chủ nào sẽ sử dụng cho mỗi yêu cầu
Nếu một trong các phần phụ trợ của chúng tôi có ổ cứng nhanh hơn, chẳng hạn như SSD hoặc ở gần cơ sở người dùng chính của bạn hơn về mặt địa lý, thì bạn có thể đặt trọng số như vậy
1
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.098
14
110
16
112
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
114
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.008
Ngoài ra, nếu bạn cho rằng máy chủ có thể ngừng hoạt động hoặc lo ngại về thời gian chờ, thì cũng có các tùy chọn cấu hình cho việc này
1____898
14
120
16
112
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
114
Bây giờ, với cấu hình này, sau 3 lần thất bại hoặc hết thời gian chờ 15 giây, máy chủ sẽ không còn được sử dụng bởi bộ cân bằng tải. Nếu bạn muốn đánh dấu thủ công một máy chủ là không hoạt động, hãy thêm từ khóa
157, e. g.
158
Tiếp theo, chúng tôi cần chuyển thông tin đó tới máy chủ thông qua proxy bằng cách sử dụng
159 ngược dòng mà chúng tôi vừa xác định trước đó
1
126______14
128
16
130
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.00
132
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.02
sudo apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.008
Bây giờ hãy khởi động lại máy chủ của bạn với
160 và bạn đang chạy phiên bản cân bằng tải của trang web của mình.
Cuối cùng về chủ đề này, cũng để bạn tham khảo ở đây là hướng dẫn nginx về cách cung cấp nội dung tĩnh và các tùy chọn cấu hình tốt nhất. Ví dụ: lưu ý sử dụng
161 và
162 cho Mp3
Di chuyển Apache sang Nginx
Bên cạnh việc đọc hướng dẫn sử dụng Nginx và tự mình thực hiện các thay đổi, bạn có thể sử dụng công cụ nguồn mở apache2nginx để dịch cấu hình của bạn từ Apache sang Nginx
Làm theo các bước cài đặt tại apache2nginx README và sau khi cài đặt, bạn sẽ có khả năng di chuyển các tệp cấu hình chỉ bằng cách chạy
_______036
Bây giờ bạn có thể kiểm tra cấu hình và dùng thử trong phần cài đặt Nginx của mình. Bạn có thể thấy bản dịch không hoàn hảo, nhưng nó sẽ giúp bạn có cơ sở để bắt đầu
Phần kết luận
Về tốc độ và hiệu suất, Nginx là lựa chọn rõ ràng hơn Apache, nhưng điều đó không có nghĩa là Apache không thể xử lý một số lưu lượng truy cập. Nếu bạn đang có kế hoạch sớm xuất hiện trên trang nhất của Reddit, có lẽ bạn nên xem xét việc có được một giải pháp mạnh mẽ hơn với Nginx và PHP-FPM
Di chuyển WordPress của bạn sang Nginx không khó lắm và cấu hình tiếp theo trong Nginx rất đơn giản và dễ truy cập so với cấu hình của Apache.
Mặc dù không có các mô-đun giống như Apache và có thể không quen thuộc lúc đầu, nhưng bạn sẽ có thể tìm thấy sự thay thế trong hầu hết các trường hợp. Nếu không, như một giải pháp dự phòng, bạn luôn có thể ủy quyền máy chủ cũ thông qua nginx của mình cho mục đích này nếu cần
Có nhiều cách để định cấu hình cả hai máy chủ, do đó hầu như luôn có thể tìm thấy một giải pháp tốt cho bất kỳ yêu cầu nào. Hiện tại, có vẻ như Apache sẽ luôn là lựa chọn mặc định trên phần mềm lưu trữ cPanel, do công cụ thiết lập EasyApache đi kèm với nó.
Trong tương lai, có thể nhiều máy chủ hơn sẽ áp dụng các công cụ Nginx cPanel như Engintron cũng cung cấp Nginx trên cPanel.
Hiện tại, nếu bạn muốn chuyển sang WordPress do Nginx cung cấp, bạn sẽ cần thiết lập VPN Linux tại DigitalOcean, AWS hoặc nhà cung cấp dịch vụ lưu trữ khác