l LNMP一键安装包是什么?
n LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、MySQL、PHP、phpMyAdmin)生产环境的Shell程序。同时提供一些实用的辅助脚本如:可以帮助完成Nginx、MySQL/MariaDB、PHP的升级、常用缓存组件的安装、重置MySQL root密码、502自动重启、日志切割等许多实用脚本。
l 我们为什么需要它?
n 编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
n 不会Linux的站长或Linux新手想使用Linux作为生产环境……
l 它有什么优势?
n 无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对VPS用户进行了优化。
l 如何获取它?
n 你可以自由下载并使用它在VPS(VDS)或独立服务器上,做为真正的生产环境或测试环境。
l 我们为什么采用LNMP这种架构?
n 采用Linux、PHP、MySQL的优点我们不必多说。
n Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当的稳定。
n Nginx相当的稳定、功能丰富、安装配置简单、低系统资源……
Nginx与apache、lighttp性能综合对比,如下图:
注意:关闭rpm默认安装的apache和mysql
lamp环境的准备工作,nginx安装时,也需要完成
1.准备php函数的rpm包
1)保证yum源正常
2) 所有lamp的准备都要完成
rpm安装的httpd关闭,同时禁用自启动
关闭selinux和iptables
2.准备lnmp其他的源代码包
http://lnmp.org/install.html
3.一键安装过程
系统需求:
l CentOS/Debian/Ubuntu Linux系统
l 需要2GB以上硬盘剩余空间
l 128M以上内存
l VPS或服务器必须已经联网!
l Linux下区分大小写,输入命令时请注意!
1)一键安装过程
您可以选择使用下载版(推荐国外或者美国VPS使用)或者完整版(推荐国内VPS使用),两者没什么区别。
执行安装程序前需要您确认您的Linux发行版,可以执行:cat /etc/issue 查看是CentOS、Debian还是Ubuntu,也可以通过VPS服务商提供的控制面板上查看。确定好之后,选择下面对应系统的安装命令:
CentOS系统下执行:wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh
按上述命令执行后,会出现如下提示:
(注:如果是Debian系统,会提示Where are your servers located?asia,america,europe,oceania or africa,这里是选择服务器/VPS在哪个大洲,一般都是美国VPS,直接回车就行,如果是中国的,输入asia,回车。如果输入有错误,可以按住Ctrl再按Backspace键删除,以下均可采用此方法删除。)
这一步需要设置MySQL的root密码,输入后回车进入下一步,如下图所示:
这里需要确认是否启用MySQL InnoDB,如果不确定是否启用可以输入 y ,这个可以单独在MySQL文件里关闭,输入 y 表示启用,输入 n 表示不启用。输入 y 或 n 后回车进入下一步,显示如下信息:
这一步是选择php版本,可以选择 PHP 5.3.17或 PHP 5.2.17,安装PHP 5.3.17的话输入 y ,安装PHP 5.2.17 输入 n,输入y 或 n 后回车,进入下一步MySQL版本的选择,如下图:
可以选择MySQL 版本 5.5.27 或 5.1.60,安装MySQL5.5.27的话输入 y ,安装MySQL 5.1.60 输入n,输入y 或 n 后回车,完成选择。
提示"Pressany key to start...",按回车键确认开始安装。
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。
安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。
2)、安装完成如果显示如下界面:
说明已经安装成功。
接下来按添加虚拟主机教程,添加虚拟主机,通过sftp或ftp服务器上传网站,将域名解析到VPS或服务器的IP上,解析生效即可使用。
3)、安装失败
如果出现类似上图的提示,则表明安装失败,说明没有安装成功!!需要用winscp或其他类似工具,将/root目录下面的lnmp-install.log下载下来,到LNMP支持论坛发帖注明你的发行版名称版本号(可通过cat /etc/issue获得)、32位还是64位,并将lnmp-install.log压缩以附件形式上传到论坛,我们会通过日志查找错误,并给予相应的解决方法。
4)、eAccelerator,xcache,memcached,imageMagick,ionCube的安装
本文主要介绍eAccelerator,xcache,memcached,imageMagick,ionCube这几个PHP加速和php扩展的安装及使用,这些不一定对每个人都有用,自己按需要安装,下面会对各个程序的作用、安装方法及相关注意事项。
a)、eAccelerator
eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。
安装
进入lnmp解压后的目录,执行:./eaccelerator.sh 运行后有如下提示:
eaccelerator 0.9.5.3 支持PHP 5.2,如需此版本,输入 old 回车。
eaccelerator 0.9.6.1 支持PHP5.2、5.3,如需此版本,输入 new 回车。
eaccelerator 1.0-dev 支持PHP5.2、5.3、5.4,如需此版本输入 dev 回车。
提示“Pressany key to start...or Press Ctrl+c to cancel” 后回车确认,脚本就会自动安装eaccelerator。
b)、xcache
XCache 是一个国人开发的又快又稳定的 PHP opcode 缓存器.经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过(在linux 上)测试并支持所有现行 PHP 分支的最新发布版本。
安装
进入lnmp解压后的目录,执行:./xcache.sh 运行后有如下提示:
一个有两个版本可以选择,分别是XCache 2.0.0和XCache 3.0.1 ,建议安装XCache 3.0.1 输入new 回车
出现“Pressany key to start...or Press Ctrl+c to cancel“,再次回车确认即可开始安装。
c)、memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
安装
进入lnmp解压后的目录,执行:./memcached.sh
回车确认后就会自动安装memcachephp扩展和memcached。
d)、imageMagick
ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过100种图象格式。可用来替换GD库。
安装
进入lnmp解压后的目录,执行:./imageMagick.sh
回车确认后就会自动安装imageMagick。
设置:比如在DiscuzX里设置时路径需要填写:/usr/local/imagemagick/bin/ 并且禁用函数里的exec要去掉才可以正常使用。
5)、LNMP相关软件目录及文件位置除去所必须的依赖包,LNMP一键安装包会安装一下软件:
默认安装软件:
- Nginx
- MySQL
- PHP
- PHPMyAdmin
- Zend Optimizer
可选软件:
- PureFTPd(可选)
- Proftpd(可选)
- Apache(可选)
- eAccelerator(可选)
- ionCube(可选)
- imageMagick(可选)
- memcached(可选)
- xcache(可选)
注明可选的为可使用安装脚本自行安装,未注明的为会自动安装。
不一定可选包都适合你,按需安装即可。
LNMP相关软件安装目录
Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
PHP目录 : /usr/local/php/
PHPMyAdmin目录 :0.9版为/home/wwwroot/phpmyadmin/1.0/1.1版为/home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版为 /home/wwwroot/ 1.0版为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录:0.9版为/home/wwwroot/default/ftp/1.0版为/home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/
LNMP相关配置文件位置
Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf
LNMPA相关目录文件位置
Apache目录:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/
6)、LNMP状态管理命令
LNMP状态管理命令:
LNMP状态管理:/root/lnmp {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx{start|stop|reload|restart}
MySQL状态管理:/etc/init.d/mysql{start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached{start|stop|restart}
PHP-FPM状态管理:/etc/init.d/php-fpm{start|stop|quit|restart|reload|logrotate}
PureFTPd状态管理:/etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd状态管理:/etc/init.d/proftpd {start|stop|restart|reload}
如重启LNMP,输入命令:/root/lnmp restart 即可,单独重启mysql:/etc/init.d/mysql restart
LNMPA状态管理命令:
LNMPA状态管理:/root/lnmpa {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx{start|stop|reload|restart}
MySQL状态管理:/etc/init.d/mysql{start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached{start|stop|restart}
PureFTPd状态管理:/etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd状态管理:/etc/init.d/proftpd {start|stop|restart|reload}
Apache状态管理:/etc/init.d/httpd{start|stop|restart|graceful|graceful-stop|configtest|status}
7)、如何安装LNMPA?
LNMPA是LNMP的扩展,需要先按LNMP安装教程安装好LNMP后,在LNMP压缩包解压后的目录里再执行./apache.sh 开始安装,会提示输入邮箱,回车确认后将会自动开始安装。(低于1G内存不建议使用LNMPA,升级到LNMPA后无法降回LNMP)
当提示安装成功后即可体验LNMPA了。
4. 修改Nginx配置文件
vi/usr/local/nginx/conf/nginx.conf
user www www;
worker_processes 1;
#启动进程,通常设置成和cpu的数量相等。相当于cpu个数
error_log logs/nginx_error.log;
#错误日志
pid /usr/local/nginx/nginx.pid;
#主进程PID保存文件
#Specifies the value for maximum file descriptors that can be opened by thisprocess.
worker_rlimit_nofile 51200;
#文件描述符数量 ulimit -a openfile 小于此数值
修改Linux允许打开文件的最大数量
[iyunv@localhost ~]# ulimit -SHn 51200
[iyunv@localhost ~]# ulimit -a
events
{
use epoll;
#网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以 上内 核,可以大大提高nginx的性能
worker_connections 51200;
#单个工作进程最大允许连接数
}
http
#整体环境配置
{
include mime.types;
default_type application/octet-stream;
#设定mime类型,文件传送类型由mime.type文件定义
server_names_hash_bucket_size128; #保存服务器名字的hash表大小
client_header_buffer_size 32k; #客户端请求头部缓冲区大小
large_client_header_buffers 432k; #最大客户端头缓冲大小
client_max_body_size 50m; #客户端最大上传文件大小(M)
sendfile on;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文 件,对于普通应用,必须设为 on。如果用来进行下载等应用磁盘IO重负载应用,可 设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
tcp_nopush on;
#这个是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的 传输出去,这样有助于解决网络堵塞。(只在sendfile on时有效)
keepalive_timeout 60;
#连接超时时间
tcp_nodelay on;
#禁用nagle算法,也即不缓存数据。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size256k;
#fastcgi设置php-fpm
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascripttext/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#开启gzip网络压缩
#limit_zone crawler $binary_remote_addr 10m;
server_tokens off;
#隐藏nginx版本号(curl -I 192.168.4.154可以查看,更加安全)
#log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#定义日志格式
server
{
listen 80;
#监听80端口
server_name www.lnmp.org;
#服务器名
index index.html index.htmindex.php;
#默认网页文件
root /home/wwwroot/default;
#网页主目录
location ~ .*\.(php|php5)?$
{
try_files $uri=404;
#分析文件是否存在,如果不存在报404错误
fastcgi_pass unix:/tmp/php-cgi.sock;
#指定FastCGI服务器监听端口与地址。这里使用unix socket
#nginx以unix-domain-socket方式连接fastcgi(php)。更快,适合大流量访问
#另外一种 nginx连接fastcgi的方式是http方式的[ 127.0.0.1:9000 方式连接 fastcgi(php)
fastcgi_indexindex.php;
#默认网页文件
includefcgi.conf;
#fcgi.conf配置文件生效
}
location /status {
stub_status on;
access_log off;
}
#开启status状态监测
location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
#静态文件处理,保存期30天
location ~ .*\.(js|css)?$
{
expires 12h;
}
#js和css文件处理,保存期12小时
access_log /home/wwwlogs/access.log access;
#正确访问日志
}
include vhost/*.conf;
#vhost/下子配置文件生效
}
5.配置开机启动nginx,php-fpm,ulimit
1)nginx
Vi /etc/rc.local
/usr/local/nginx/sbin/nginx
2)php-fpm
Vi /etc/rc.local
/usr/local/php/sbin/php-fpm start
3)ulimit
Vi /etc/profile
ulimit -SHn 65535
设置Linux系统最大文件打开数和Nginx并发量
4)mysql
Vi /etc/rc.local
/usr/local/mysql/bin/mysqld_safe --user=mysql &
一键安装包已经完成自启动,加入了chkconfig管理,可以直接使用service命令和chkconfig命令管理
6.检查nginx配置文件语句错误
/usr/local/nginx/sbin/nginx -t
7.平滑重启nginx进程
1)pkill -HUP nginx
2)kill -HUP `pgrep -uroot nginx`
Pgrep -uroot nginx 取出nginx主进程PID
3)/usr/local/nginx/sbin/nginx -s reload
8.配置nginx虚拟主机
Sina和sohu域名事先解析
Vi /usr/local/nginx/conf/nginx.conf
==èwww.sina.com公司网站
server
{
listen 80;
server_name www.sina.com;
index index.html index.htmindex.php;
root /home/wwwroot/sina;
location ~ .*\.(php|php5)?$
{
try_files $uri=404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_indexindex.php;
includefcgi.conf;
}
}
==èwww.sohu.com公司网站
server
{
listen 80;
server_name www.sohu.com;
index index.html index.htmindex.php;
root /home/wwwroot/sohu;
location ~ .*\.(php|php5)?$
{
try_files $uri=404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_indexindex.php;
includefcgi.conf;
}
}
重启nginx
最后在客户端测试虚拟主机www.baidu.com和www.sina.com两家公司网站
9.列表页显示
server
{
listen 80;
server_name www.sina.com;
index index.html index.htmindex.php;
root /home/wwwroot/sina;
autoindex on;
10.nginx状态监控
location/nginxstatus{
stub_status on;
access_log off;
}
#客户端访问网址:http://IP/nginxstatus
11.rewrite正则过滤
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
Rewrite指令最后一项参数为flag标记,支持的flag标记如下:
Last
停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;
Break
停止执行当前这一轮的ngx_http_rewrite_module指令集;
Redirect
在replacement字符串未以“http://”或“https://”开头时,使用返回状态码为302的临时重定向;
Permanent
返回状态码为301的永久重定向。
Last和break用来实现uri重写,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent用来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配,不再匹配后面的规则.
例1:域名跳转
输入www.sina.com,跳转到www.sohu.com
server
{
listen 80;
server_namewww.sina.com;
indexindex.html index.htm index.php;
root /home/wwwroot/sina;
if ($http_host =www.sina.com) {
rewrite (.*) http://www.sohu.com permanent;
}
location ~.*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
server
{
listen 80;
server_namewww.sohu.com;
indexindex.html index.htm index.php;
root /home/wwwroot/sohu;
location ~.*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
例2:文件跳转
server
{
listen 80;
server_name www.sina.com;
index index.html index.htm index.php;
root /home/wwwroot/sina;
rewrite index /index.php last;
location ~ .*\.(php|php5)?$
{
try_files $uri=404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_indexindex.php;
includefcgi.conf;
}
}
12.代理负载均衡技术(反向代理)
http
{
upstream myweb1 {
#定义地址池
server 192.168.244.10:80;
server 192.168.244.11:80;
}
server {
listen 80;
server_name www.sohu.com;
#使用www.sohu.com访问
location / {
proxy_pass http://myweb1;
#使用地址池
proxy_set_header Host $host;
#利用HOST变量向后端服务器传递需要解析的客户端访问的域名(传递域名)
proxy_set_header X-Forwarded-For $remote_addr;
#$remote_addr把客户端真实IP赋予X-Forwarded-For。后端服务器才能获取真实的客户端IP。以便记录日志,要不日志中记录的访问信息都是负载服务器,而不是客户端(传递IP)
}
}
}
LNMP升级及Nginx、MySQL/MariaDB、PHP升级说明
http://lnmp.org/faq/upgrade.html
|