PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2017-11-29 11:16:33  修改时间:2024-11-19 02:51:15  分类:Apache/Nginx  编辑

codeigniter(CI)是一个轻量型的PHP优秀框架,在nginx下需要特别的配置才可以使用。

修改Codeigniter

application/config/config.php进行修改,大约在48行左右。

$config['uri_protocol'] = "PATH_INFO"; // 用默认的 REQUEST_URI 也可以
作者:Albert.Wen  添加时间:2012-10-30 23:04:11  修改时间:2024-10-31 08:26:16  分类:Apache/Nginx  编辑

第一个有用的Bash Shell:清空apache2的日志文件(文件大小变成0,但文件任然存在)

cp /dev/null  /var/log/apache2/access.log

当apache2的日志文件很大时,利用这条命令定时清空日志文件,用处就非常大啰。

注意:文件执行的权限!!!

作者:Albert.Wen  添加时间:2017-10-27 20:12:57  修改时间:2024-11-10 17:14:46  分类:Apache/Nginx  编辑

这篇文章我们就特别来讲解下,nginx、php-fpm 以及 mysql 运行在各个用户下的配置。

先来做个说明:nginx本身不能处理PHP,它只是个web服务器。当接收到客户端请求后,如果是php请求,则转发给php解释器处理,并把结果返回给客户端。如果是静态页面的话,nginx自身处理,然后把结果返回给客户端。

Nginx下php解释器使用最多的就是fastcgi。一般情况nginx把php请求转发给fastcgi(即 php-fpm)管理进程处理,fastcgi管理进程选择cgi子进程进行处理,然后把处理结果返回给nginx。

在这个过程中就牵涉到两个用户,一个是nginx运行的用户,一个是php-fpm运行的用户。如果访问的是一个静态文件的话,则只需要nginx运行的用户对文件具有读权限或者读写权限。

而如果访问的是一个php文件的话,则首先需要nginx运行的用户对文件有读取权限,读取到文件后发现是一个php文件,则转发给php-fpm,此时则需要php-fpm用户对文件具有有读权限或者读写权限。

作者:Albert.Wen  添加时间:2017-12-25 14:52:29  修改时间:2024-11-21 00:03:30  分类:Apache/Nginx  编辑

nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:

if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
    return 403;
}

下面这是等效的,并真实可用的配置

set $flag 0;
if ($remote_addr ~ "^(12.34|56.78)") {
    set $flag "${flag}1";
}
if ($http_user_agent ~* "spider") {
    set $flag "${flag}2";
}
if ($flag = "012") {
    return 403;
}
作者:Albert.Wen  添加时间:2012-08-17 10:35:02  修改时间:2024-10-08 11:51:02  分类:Apache/Nginx  编辑

可能出现下面这三种的错误可能性:

第一种:启用 rewrite 和 .htaccess 设置

rewrite设置:找到apache的配置文件httpd.conf文件,找到:#LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的#号。

改为:LoadModule rewrite_module modules/mod_rewrite.so

作者:Albert.Wen  添加时间:2012-08-17 09:37:35  修改时间:2024-10-28 06:33:54  分类:Apache/Nginx  编辑

今天在本地调试Discuz 7.2的时候,发现URL没法进行伪静态。我以为是.htaccess没设置对,反复修改还是不行。我突然想到,是不是我的apache本来就不支持.htaccess呢。于是我搜索起来。

有网站介绍说:打开httpd.conf文件用文本编辑器打开后,查找

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
作者:Albert.Wen  添加时间:2013-08-02 21:46:18  修改时间:2024-11-05 21:43:32  分类:Apache/Nginx  编辑

编译参数解释:

--prefix=/usr/local/apache :指定安装目录
--with-included-apr : 在编译时强制使用当前源代码中绑定的APR版本
--enable-so : 允许运行时加载DSO模块(注意:so模块需静态(static)编译)
--enable-deflate=shared : 将deflate模块编译为DSO
--enable-expires=shared : 将expires模块编译为DSO
--enable-ssl=shared : 将ssl模块编译为DSO
--enable-headers=shared : 将headers模块编译为DSO
--enable-rewrite=shared : 将rewrite模块编译为DSO
--enable-static-support : 使用静态连接(默认为动态连接)编译所有二进制支持程序
--with-mpm=prefork : 使用prefork形式的mpm

更详细的编译参数解释:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html

作者:Albert.Wen  添加时间:2013-08-07 14:40:12  修改时间:2024-11-16 09:15:45  分类:Apache/Nginx  编辑

prefork是一个非线程型的、预派生的MPM,使用多个进程,每个进程在某个确定的时间只单独处理一个连接,效率高,但内存使用比较大。可通过了解prefork的配置认识prefork,配置位置:apache/conf/extra/httpd-mpm.conf

作者:Albert.Wen  添加时间:2013-08-06 16:31:05  修改时间:2024-10-12 20:05:00  分类:Apache/Nginx  编辑

问题背景:

在一台只有512内存的vps上安装directadmin之后经常内存耗,经过查看之后发现Apache成了罪魁祸首急速消耗内存SWAP剩余空间都是0,最终导致内核开始大下杀手,把MySQL都杀了,通过下文调整了Apache的MPM参数得到解决。

作者:Albert.Wen  添加时间:2013-08-22 11:09:21  修改时间:2024-09-21 14:06:24  分类:Apache/Nginx  编辑

Document root must be a directory

这是系统开启了SELinux安全策略造成的。把目录或文件设成了 user_home_t 类型,因此 apache 的进程没有权限,无法访问。针对Apache的进程所使用的SELinuxtarget policy规定了apache的进程只能访问 httpd_sys_content_t 类型的目录或文件。