1,1php编译与安装
LAMP
apache、mysql、php
LNMP
nginx、mysql、php
mysql的安装与LAMP的mysql安装方法一样
先安装mysql再安装php
cd /usr/local/src
wget http://cn2.php.net/distributions/php-5.4.37.tar.bz2 下载
tar jxvf php-5.4.37.tar.bz2 解压
cd php-5.4.37
./configure --prefix=/export/servers/php --with-config-file-path=/export/servers/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/export/servers/mysql --with-mysql-sock=/export/Data/mysql/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-curl 编译(其中enable-fpm为最关键的工具)
make
echo $? 查看有没有错误 显示0正确
make install
echo $?
在make install前可以先把本机之前的php目录删除rm -rf /usr/local/php
cp php.ini-production /usr/local/php/etc/php.ini 拷贝配置文件
cp sapi/fpm/init.d.php-fpm /etc/init.d/php/fpm 拷贝启动脚步
chmod 755 /etc/init.d/php-fpm 修改执行权限
chkconfig --add php-fpm 加入系统服务列表
chkconfig php-fpm on 开机启动
cd /usr/local/php/etc/
ls
mv php-fpm.conf.default php-fpm.conf 把样本配置文件重命名
useradd -s /sbin/nologin php-fpm 添加用户php-fpm,编译时指定了用户和组就是php-fpm
service php-fpm start 启动服务
ps aux |grep php-fpm 查看进程
netstat -lnp 查看监听端口
1,2安装nginx
vim /etc/init.d/nginx
黏贴写入保存
:wq
chmod 755!$ 更改权限
chkconfig --add nginx 加入到启动列表
chkconfig nginx on 开机启动
service nginx start 成功启动
编辑完启动脚本后重新整理配置文件
vim /usr/local/nginx/conf/nginx.conf 打开nginx的配置文件
> /usr/local/nginx/conf/nginx.conf 全部去掉 ,“>” 这个符号之前阿铭介绍过,为重定向的意思,单独用它,可以把一个文本文档快速清空
vim /usr/local/nginx/conf/nginx.conf 打开nginx的配置文件
http://www.apelearn.com/study_v2/chapter18.html,把里面更加nginx配置的内容复制到配置文件里,内容分为两部分,一部分为配置的整体部分,另一部分server为虚拟主机部分,
{{可以把两部分拆分开来,例如不把server部分复制进配置文件里,这配置文件的最后一行gzip下添加include vhosts、*.conf; (nginx支持include)
:wq
pwd
cd /usr/local/nginx/conf/
mkdir vhosts
cd vhosts
vim default.conf
把server部分拷贝过来
在80后添加 default_server
如果为了限制 }} 往后学习再研究。。。
/usr/local/nginx/sbin/nginx -t 保存配置后,先检验一下配置文件是否有错误存在
service nginx start
ps aux |grep nginx
CtrlR可以快速搜索调用使用过的命令
1,5php-fpm配置文件
/usr/local/php/etc/php.ini管理php的全局配置
/usr/local/php/etc/php-fpm.conf 管理php-fpm服务的配置
> /usr/local/php/etc/php-fpm.conf 清空
http://www.apelearn.com/study_v2/chapter18.html 安装php的7.修改配置文件,拷贝内容
vim /usr/local/php/etc/php-fpm.conf
粘贴内容
[global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log [www] ([www]是pool的名字,pool在ps aux|grep php-fpm命令下可以显示,创建不同的pool可以监听不同的端口或者控制不同得到域名) listen = /tmp/php-fcgi.sock (领用sock的方式监听,可以改为/tmp/www.sock) user = php-fpm group = php-fpm pm = dynamic (动态的,管理下面的pm.,所有改为static,只有pm.max_children = 50 有效) pm.max_children = 50 (最大50个子进程) pm.start_servers = 20 (一开始20个) pm.min_spare_servers = 5 (空闲时最少) pm.max_spare_servers = 35 (空间时最多) pm.max_requests = 500 (每一个子进程 在生命周期内一共处理多少个请求,自动销毁) rlimit_files = 1024 (每一个进程所使用文件描述符的限制)
再创一个pool
[www1] listen = /tmp/www1.sock user = php-fpm group = php-fpm pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 rlimit_files = 1024
:wq
/usr/local/php/sbin/php-fpm -t 检查文件有没有错误
/etc/init.d/php-fpm restart
ps aux|grep php-fpm 查看pool
启动多个pool的好处
不同的pool控制不同的域名,也可以不同域名共用一个pool
pool可以分开使用不同权限
若只用一个pool,一个网站挂了其他也会跟着挂
跟踪操作
网站运行浏览慢
在【www】最后添加
slowlog = /tmp/www_slow.log
request_slowlog_timeout = 1 (脚本执行时间超过一秒就记录slow.log,让自己看到脚本哪里进行慢,
利用/tmp/www_slow.log排查出问题)
php_admin_value[open_basedir]=/data/www/:/tmp/ (不同的pool设置不同的open basedir,限制不同的域名)
:wq
1,6常见的502问题解决
nginx的高级配置
把之前装的论坛 discuz实现在nginx下访问
之前用的域名 www.test.com
cd /usr/local/nginx/conf/vhosts/
ls
mv 111.conf test.conf
vim test.conf
server name 改为www.test.com;
#禁用一个fastcgi_pass,另一个改为unix;/tmp/www.sock ;
:wq
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
外部浏览器访问www.test.com
出现502问题
查看nginx的错误日志error_log
error_log的位置可以在nginx.com里查看
vim /usr/local/nginx/conf/nginx.conf
找出error_log的位置
cat vim /usr/local/nginx/logs/nginx_error.log
找出错误,出现502,发现权限不够,不能读写该文件
ls -l /tmp/www.sock
vim /usr/local/php/etc/php-fpm.conf
group下添加配置,关于监听的用户和组的指定nobody
listen.owner = nobody
listen.group = nobody
:wq
/etc/init.d/php-fpm restart
外部访问
www.test.com
解决了502问题
1,7nginx用户认证
双层密码,在进入admin前还要再输一层密码
cd /usr/local/nginx/conf/vhosts
ls
vim test.conf
在root下面添加
location ~ .*admin\.php$ {
auth_basic "aminglinux auth";
auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
把下面的include、fastcgi_pass、fastcgi_index、fastcgi_param都拷贝到这里
}
:wq
利用apache生成密码的工具htpasswd创建文件 /usr/local/nginx/conf/.htpasswd
(若没有htpasswd,就yum install httpd)
htpasswd -c /usr/local/nginx/conf/.htpasswd aming
输入密码
创建用户和密码成功,若想再创建另一个用户,则不用-c和更加名字
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
验证:curl -x127.0.0.1:80 -uaming:密码 www.test.com/admin.php
显示出