yum搭建lnmp环境(CentOS)V2014-1-29

本文一键安装包
用于CentOS 5.x

yum install wget -y;wget http://www.huzs.top/soft/lnmp5.sh;sh lnmp5.sh

用于CentOS 6.x

yum install wget -y;wget http://www.huzs.top/soft/lnmp.sh;sh lnmp.sh

一键安装说明
NGINX:/etc/nginx/nginx.conf
NGINX虚拟主机:/etc/nginx/conf.d/
PHP:/etc/php.ini
PHP-FPM:/etc/php-fpm.d/www.conf
MYSQL:/etc/my.cnf
MYSQL数据库位置:/var/lib/mysql/
MYSQL默认root用户密码:空
phpinfo:http://IP/index.php
phpmyadmin:http://IP/phpmyadmin

1.准备系统
设置系统字符集,防止显示乱码

mv /etc/sysconfig/i18n /etc/sysconfig/i18n.default
vim /etc/sysconfig/i18n

内容如下:

LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
export LC_ALL="zh_CN.GB18030"

查看系统时间和修改时区

date
#如果时间和时区不正确,做如下操作
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

清理原有程序,添加运行用户和组。

yum remove httpd php mysql
/usr/sbin/groupadd www
/usr/sbin/useradd -s /sbin/nologin -g www www
ulimit -SHn 65535

2、使用NGINX官方源安装NGINX。
安装NGINX官方源:

vi /etc/yum.repos.d/nginx.repo

粘贴如下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

安装NGINX:

yum install nginx

安装后的相关目录如下:
/etc/nginx  主目录
/etc/sysconfig/nginx  # 服务配置
/etc/rc.d/init.d/nginx  # 启动脚本
/usr/share/nginx # HTML目录
/usr/sbin/nginx  #主程序
/var/log/nginx  # 日志目录
3、【可选】配置CentOS 6 YUM atomic源,默认的标准源里没有最新的php和MYSQL等工具包。

wget http://www.atomicorp.com/installers/atomic;sh ./atomic

下载atomic yum源(此源包含的软件比较新的稳定版。)
安装提示输入时输yes或者直接回车

4.安装开发包和库文件

yum install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel

5.安装php

yum install php php-fpm php-devel php-common php-cli php-pdo php-odbc php-mysql php-mssql

yum install php-gd php-imap php-ldap php-mbstring php-mcrypt php-snmp php-soap php-tidy php-xml php-xmlrpc php-pear php-bcmath php-process

6.安装配置MYSQL-SERVER。

yum install mysql mysql-devel mysql-server

如果你的内存小于1G,mysql请使用5.5以下版本。atomic源默认是5.5的数据库。MySQL5.5 开始默认使用InnoDB引擎。如果你的服务器内存(包括虚拟内存)小于512M,请不要马上启动数据库,否则会因为内存不足而启动失败。这样我就需要手动指定使用最省内存的不支持事务日志的MyISAM引擎来存储。修改配置文件/etc/my.cnf后再启动。编辑配置文件:

mv /etc/my.cnf /etc/my.cnf.default
vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character_set_server = utf8
default-character-set = utf8
#指定MyISAM引擎
default-storage-engine = MyISAM
#停用innodb
skip-innodb
#开启bin-log日志
#log-bin
#设置主服务器
#server-id = 1
#设置从服务器
#server-id = 2
#master-host = 192.168.1.180
#master-user = slave
#master-password = 123456
#master-port = 3306

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set = utf8

7、开启LNMP服务器

service nginx start
service php-fpm start
service mysqld start

8.设置LNMP服务在系统启动后自动运行。

chkconfig nginx on
chkconfig php-fpm on
chkconfig mysqld on

9.设置MYSQL数据库的密码(默认密码为空)
方法1(推荐):使用安全安装向导设置(按提示操作)

mysql_secure_installation

方法2:直接设置root的密码为123456

[root@CentOS ~]# mysqladmin -u root password "123456"

10.配置nginx
备份当前的NGINX主配置文件。

mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.default

新建NGINX主配置文档

vim /etc/nginx/nginx.conf

使用如下配置文档

user  www;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;
client_max_body_size 20m;
server_tokens off;
keepalive_timeout 65;

fastcgi_intercept_errors on;
error_page 404 = http://www.huzs.top/404.html;

gzip on;
gzip_comp_level 5;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_disable "MSIE [1-6]\.";

include /etc/nginx/conf.d/*.conf;
}

NGINX的配置文件相关说明:
设置使用www用户运行nginx。

user www;

Nginx 的进程控制。worker_processes指明了nginx要开启的进程数,据官方说法,一般开一个就够了,多开几个,可以减少机器io带来的影响。 一般为当前机器总cpu核心数的1到2倍。如,我的机器为双核,那么开4个足够了。注意,一个线程也算一个CPU。编辑配置文件:
当设置成auto,将自动启动与cpu数量相同的worker进程。

worker_processes  auto;

设置NGINX上传文件大小。找到http{}段,添加

client_max_body_size 20m;

开启nginx的GZIP页面压缩,以提高页面打开速度和降低宽带费用。在http段中加入下面几行配置

 gzip on;
gzip_comp_level 5;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_disable "MSIE [1-6]\.";

隐藏NGINX的版本号。不同版本,特别是低版本的nginx可能存在漏洞,就不希望能被人轻易获取到系统版本号。

server_tokens off;

如果客户没有自定义自己的错误页面,则给一个统一的错误页面。

fastcgi_intercept_errors on;
error_page 404 = http://www.huzs.top/404.html;

11.站点的配置

mv /etc/nginx/conf.d/default.conf /etc/nginx/

创建nginx配置文件,添加fastcgi支持。“/etc/nginx/conf.d/”这里是所有站点的配置文件。如果需要给哪个站点添加支持,就编辑起配置文件xxx.conf

vi /etc/nginx/conf.d/default.conf

server {
listen 80;
server_name localhost;
root /www/web/default;
index index.html index.htm index.php;

#charset utf-8;

error_page 404 /404.html;

location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 7d;
}

location ~ .*\.(js|css)?$ {
expires 12h;
}
}

创建新的配置文件后,需要重新加载配置使其生效。命令如下:

service nginx restart

12、PHP的配置

vim /etc/php.ini

设置PHP上传文件。编辑文件php.ini,分别设置使PHP CGI修正其路径以遵守规格和设置PHP允许上传的文件大小

vi /etc/php.ini

cgi.fix_pathinfo=1
upload_max_filesize = 20M
date.timezone ="Asia/Shanghai"

一些需要禁用的PHP危险函数,查找到 disable_functions ,添加需禁用的函数名(一般屏蔽高危级即可),如下:
危险等级:高

eval,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,symlink,popepassthru,fsocket,fsockopen

危险等级:中

phpinfo,stream_socket_server,readlink,syslog,scandir

危险等级:低

error_log

详细说明浏览:http://www.huzs.top/?p=2000

13.PHP-FPM配置

vim /etc/php-fpm.d/www.conf

设置使用www用户运行php-fpm。

user = www
group = www

PHP 的进程数控制,编辑配置文件:
  php5.3的fasgcgi模式下的进程的管理存在两种风格——static和dynamic。
如果设置成static,php-fpm进程数自始至终都是pm.max_children指定的数量,不再增加或减少。如果设置成 dynamic,则php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加, 保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于 pm.max_spare_servers。
我们做如下设置:

pm.max_children:50 //静态方式下开启的php-fpm进程数量。(默认50)
pm.start_servers:1 //动态方式下的起始php-fpm进程数量。(默认5)
pm.min_spare_servers:1 //动态方式下的最小php-fpm进程数量。(默认5)
pm.max_spare_servers: 2 //动态方式下的最大php-fpm进程数量。(默认35)

由于yum安装的php默认用户是apache,在我们改变用户为www后,/var/lib/php/session权限仍未apache。导致phpmyadmin无法运行。所以,需执行如下操作,变更权限。

chown -R www:www /var/lib/php/session
service php-fpm restart

14.建立info.php文件

mkdir -p /www/web/default
chown -R www:www /www/
chmod -R 750 /www/
echo "">/www/web/default/index.php

测试nginx是否解析php

MySQL的常用操作
建立一个与用户名(wordpress密码为:password)同名的数据库,并赋予权限。

CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';
GRANT USAGE ON * . * TO 'wordpress'@'localhost' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE IF NOT EXISTS `wordpress` ;
GRANT ALL PRIVILEGES ON `wordpress` . * TO 'wordpress'@'localhost';

启动 mysql 服务的时候报如下错误:

Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

解决方法:

mysql_install_db –user=mysql 初始化数据库即可

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注