本文一键安装包
用于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 初始化数据库即可