我总是将Apache用于我的 PHP 项目。但现在,我想离开它,开始使用以下选项之一:
React
或
PHP's built-in web server
哪个表现更好?当然,什么是最好的?你的推荐是什么?
答案 0 :(得分:3)
好的,所以有一个很酷的东西叫做nginx。 不要停止阅读
许多人没有意识到的一件事是nginx可以非常快速且高效地执行代理请求。
你可能会问,什么是代理请求?!好的。
从远程用户收到代理请求到nginx。 Nginx将接收该请求,然后将请求转发给另一个侦听器。这个监听器可以是一个unix域套接字,Apache,网络上的另一个nginx服务器,甚至是内置的PHP内置服务器。
就个人而言,听起来你对PHP-FPM知之甚少,这是一个基于套接字的PHP解析器。回到Apache的旧时代,人们过去常常使用名为mod_php
的东西,Apache会使用共享库手动解析请求。这是可怕的。
如果您因为这个原因想要离开,我建议升级,并通过将PHP-FPM与Nginx一起使用来提升您的性能。 Rackspace有一篇很好的文章:http://www.rackspace.com/knowledge_center/article/installing-nginx-and-php-fpm-setup-for-nginx
段:
示例nginx配置:
server {
server_name www.DOMAINNAME;
rewrite ^(.*) http://DOMAINNAME$1 permanent;
}
server {
listen 80;
server_name DOMAINNAME;
root /var/www/DOMAINNAME/htdocs;
index index.php;
include /etc/nginx/security;
# Logging --
access_log /var/log/nginx/DOMAINNAME.access.log;
error_log /var/log/nginx/DOMAINNAME.error.log notice;
# serve static files directly
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
access_log off;
expires max;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm/DOMAINNAME.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}
该location ~ \.php$
路由会将所有PHP请求转发到您的php-fpm实例。当然,更新你的nginx配置以匹配你的套接字名称。
如果你想在内置的PHP服务器中使用它,你可以这样做(假设它在localhost:8000上运行):
location ~ \.php$ {
fastcgi_pass http://localhost:8000;
}
这样,你可以拥有两全其美。 (请记住,内部PHP服务器未经过优化或强化。我建议使用PHP-FPM。
答案 1 :(得分:2)
PHP的内置网络服务器仅用于开发和测试。它是一个从未打算处理实际负载的简单服务器。
事件驱动的服务器只会增加一堆不必要的复杂性,除非你真的添加它的功能。
它们都不适用于任何严肃或通用的服务器。除非你有一个具体的理由使用不同的堆栈,否则你应该坚持使用Apache。它稳定,安全,可配置,并且能够很好地完成工作。