共计 5884 个字符,预计需要花费 15 分钟才能阅读完成。
一、操作系统级环境及软件版本
操作系统:CentOS release 6.5 (Final)minimal
内核版本:2.6.32-431.el6.x86_64
MySQL 版本:MySQL-5.6.28
nginx 版本:nginx-1.8.1
php 版本:php-5.6.19
二、安装 MySQL-5.6.28
获取地址:http://mirrors.sohu.com/mysql/ 自行选择想要的版本
mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz 这个版本是官方编译好的版本,解压后直接初始化即可使用,如果使用源码编译安装需要注意的是 MySQL5.5 版本以后要用 cmake 进行编译,编译时需要事先安装 cmake。
解压 mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz
# tar -zxvf mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz
将解压后的文件移动到 /usr/local/ 下并命名为 mysql
# mv mysql-5.6.28-linux-glibc2.5-x86_64 /usr/local/mysql
创建 mysql 用户没有家目录,并且不能登录
# useradd -M mysql -s /sbin/nologin
创建数据库文件存储位置
# mkdir -p /database/mysql
将所有者和所属组改为 mysql
# chown -R mysql.mysql /database/mysql/
初始化数据库
# ./scripts/mysql_install_db –user=mysql –datadir=/database/mysql
将 mysql 的二进制 bin 目录添加到用户的环境变量中
# vim ~/.bash_profile
将 /usr/local/mysql/bin 添加到 PATH 中
# source ~/.bash_profile
配置 mysql 的环境并且开机自启动
# cp mysql.server /etc/init.d/mysqld
一定要执行这个,否则后悔莫及,不解释
# sed -i ‘s#^datadir=#datadir=/database/mysql#’ /etc/init.d/mysqld
# chkconfig –add mysqld
# chkconfig mysqld on
编辑 mysql 的配置文件
# vim /usr/local/mysql/my.cnf
添加如下内容不配置主从的情况下的配置:
basedir=/usr/local/mysql
datadir=/database/mysql/data
port=3306
socket=/tmp/mysql.sock
lower_case_table_names=1
key_buffer_size=256M
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=4M
myisam_sort_buffer_size=64M
thread_cache_size=16
query_cache_size=16M
thread_concurrency=4
interactive_timeout=8
wait_timeout=8
slow_query_log=on
long_query_time=1
slow-query-log-file=/database/mysql/slow.log
具体参数参考 MySQL 常用配置
三、安装 php
安装 php 之前先安装差不多用到的包
# yum -y install openssl-devel bzip2-devel libxml2-devel curl-devel libpng-devel libjpeg-devel freetype-devel libtool-ltdl-devel perl-devel
安装 epel-release 扩展源
rpm -ivh ” http://www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm “
# yum -y install libmcrypt-devel
创建 php-fpm 用户
# useradd -M php-fpm -s /sbin/nologin
# tar zxvf php-5.6.19.tar.gz
# cd php-5.6.19
# ./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –enable-fpm –with-fpm-user=php-fpm –with-fpm-group=php-fpm –with-mysql=/usr/local/mysql/ –with-mysql-sock=/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
# make -j 2
# make install
# cp php.ini-production /usr/local/php/etc/php.ini
将 php-fpm 添加到系统服务并设置为开机自启动
# 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/
# mv php-fpm.conf.default php-fpm.conf
检查 php-fpm 的位置文件是否正确
# /usr/local/php/sbin/php-fpm -t
启动 php-fpm
# service php-fpm start
四、安装 nginx
# tar -zxvf nginx-1.8.1.tar.gz
# cd nginx-1.8.1
# ./configure –prefix=/usr/local/nginx –with-pcre
# make -j 2
# make install
启动 nginx
# /usr/local/nginx/sbin/nginx
去配置文件里将 php 的配置项打开
# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
重新加载 nginx 配置文件
# /usr/local/nginx/sbin/nginx -s reload
在 /usr/local/nginx/html 目录先可以创建 php 的信息页进行测试五五、php-fpm 常用跟配置
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = /tmp/www.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
slowlog = /tmp/phpslow.log
request_slowlog_timeout = 1
六、常见的 502 错误
主要是因为 nginx 对 php-fpm 的 sock 没有读写权限造成的,还有一点就是在搭建 discuz 论坛的时候 discuz 目录下的权限应该对 php-fpm 用户有度读写的权限才可以,并不是 nginx。
# chown -R php-fpm:php-fpm /web/discuz/
七、nginx 用户认证
在 discuz 的配置文件中加入下面的内容
location ~ .*admin\.php$ {
auth_basic “fanjinbao auth”;
auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
include fastcgi_params;
fastcgi_pass unix:/tmp/discuz.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /web/discuz$fastcgi_script_name;
}
.htpasswd 文件需要借助于 apahce 的密码生成工具才可以哦
八、nginx 域名跳转
在 discuz.conf 的 server 中添加如下内容:
if ($host != ‘www.discuz.com’)
{
rewrite ^/(.*)$ http://www.discuz.com/$1 permanent;
}
九、nginx 不记录指定文件类型日志
在 discuz.conf 的 server 中添加如下内容:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
access_log off;
}
location ~ (static|cache)
{
access_log off;
}
十、nginx 的日志切割脚本
#!/bin/bash
d=`date -d “-1 day” +%F`
[-d /tmp/nginx_log] || mkdir /tmp/nginx_log
mv /web/discuz.log /tmp/nginx_log/$d.log
/etc/init.d/nginxd reload > /dev/null
cd /tmp/nginx_log/
gzip -f $d.log
十一、nginx 配置静态文件过期时间
location ~ \.(js|css)
{
access_log off;
expires 2h;
}
十二、nginx 配置防盗链
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
access_log off;
expires 15d;
valid_referers none blocked *.discuz.com *.fansik.com;
if ($invalid_referer)
{
return 403;
}
}
测试防盗链是否配置成功可以使用 curl 命令进行测试:
# curl -e “http://www.baidu.com/111” -x127.0.0.1:80 ‘http://www.discuz.com/static/image/common/logo.png’ -I
这个返回的状态码肯定是 403
# curl -e “http://www.fansik.com/111” -x127.0.0.1:80 ‘http://www.discuz.com/static/image/common/logo.png’ -I
这个返回的状态码肯定是 200
十二、nginx 的访问控制
直接在配置文件 (或者 location 中) 添加
allow 127.0.0.1;
deny 1.1.1.1;
十三、nginx 禁止指定 user_agent
if ($http_user_agent ~* ‘curl|baidu|11111’)
{
return 403;
}
~*:不区分大小写
十四、nginx 代理和负载
upstream baidu{
server 61.135.169.125:80;
server 61.135.169.121:80;
}
server {
listen 80;
server_name www.baidu.com;
location / {
proxy_pass http://baidu/;
proxy_set_header Host $host;
}
}
Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL http://www.linuxidc.com/Linux/2014-05/102351.htm
Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm
CentOS 6.4 下的 LNMP 生产环境搭建及安装脚本 http://www.linuxidc.com/Linux/2013-11/92428.htm
生产环境实用之 LNMP 架构的编译安装 +SSL 加密实现 http://www.linuxidc.com/Linux/2013-05/85099.htm
LNMP 全功能编译安装 for CentOS 6.3 笔记 http://www.linuxidc.com/Linux/2013-05/83788.htm
CentOS 6.3 安装 LNMP (PHP 5.4,MyySQL5.6) http://www.linuxidc.com/Linux/2013-04/82069.htm
在部署 LNMP 的时候遇到 Nginx 启动失败的 2 个问题 http://www.linuxidc.com/Linux/2013-03/81120.htm
Ubuntu 安装 Nginx php5-fpm MySQL(LNMP 环境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129334.htm