LNMP是Linux+ Nginx+ MySQL +PHP的简称。先安装mysql;然后是php,php使用fast-cgi的方式运行;最后安装Nginx。
安装平台:CentOS6.7 X86_64 MySql版本:mysql-5.6.27 MySql安装目录:/usr/local/mysql MySql数据库存放目录:/data/mysql MySql的用户和组:mysql:mysql MySql源码存放目录:/usr/local/src
安装前的准备: (1)、关闭selinux vim /etc/selinux/config SELINUX=enforcing ##加#注释 SELINUX=disabled ##增加 :wq #保存退出,然后重启系统,如果不重启,可临时关闭使用命令:setenforce0
(2)、添加好防火墙规则到/etc/sysconfig/iptables [iyunv@balichvm ~]# vim /etc/sysconfig/iptables -A INPUT -m state --stateNEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --stateNEW -m tcp -p tcp --dport 80 -j ACCEPT
:wq保存退出,添加好规则后的防火墙规则如下: # Firewall configurationwritten by system-config-firewall # Manual customization ofthis file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --stateESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --stateNEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --stateNEW -m tcp -p tcp --dport 3306 -jACCEPT #新增 -A INPUT -m state --stateNEW -m tcp -p tcp --dport 80 -jACCEPT #新增 -A INPUT -j REJECT--reject-with icmp-host-prohibited -A FORWARD -j REJECT--reject-with icmp-host-prohibited COMMIT
1、安装mysql
1)、下载mysql,这里使用的是免编译的安装包,下载地址: ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz 这是mysql官网提供的一个镜像站点。
首先进入/usr/local/src目录,使用wget命令下载 [iyunv@balichvm src]# wgetftp://ftp.jaist.ac.jp/pub/mysql/ ... bc2.5-x86_64.tar.gz
2)、解压下载的mysql安装包,然后把解压的文件移动到/usr/local/mysql(移动重命名) [iyunv@balichvm src]# tarzxvfmysql-5.6.27-linux-glibc2.5-x86_64.tar.gz ##解压 [iyunv@balichvm src]# mvmysql-5.6.27-linux-glibc2.5-x86_64/usr/local/mysql ##移动并重命名
3)、创建用户mysql数据库的用户和用户组mysql,并且这个用户是无需登录系统。 [iyunv@balichvm src]#groupaddmysql ##创建mysql组 [iyunv@balichvm src]# useradd-s /sbin/nologin -g mysql mysql ##创建mysql用户加入mysql组,不允许登录
4)、创建用于存放mysql数据库的目录,并且把所有者和所属组设置为mysql [iyunv@balichvm src]# mkdir-p/data/mysql ##创建存放mysql数据库的目录 [iyunv@balichvm src]# chown-R mysql:mysql/data/mysql/ ##修改属主和数组
5)、初始化数据库,在mysql的安装目录下/usr/local/mysql [iyunv@balichvm src]# cd/usr/local/mysql/ ##进入mysql安装目录 [iyunv@balichvm mysql]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ ##初始化数据库
--user=mysql ##指定数据库的所属主 --datadir=/data/mysql/ ##指定数据库的数据库文件的存放目录
安装过程中的错误: Installing MySQL systemtables..../bin/mysqld: error while loading shared libraries: libaio.so.1:cannot open shared object file: No such file or directory
提示缺少了shared libraries: libaio.so,那就安装不上,如下: [iyunv@balichvm mysql]# yuminstall libaio 然后继续执行上面的安装命令。
如果看到了两个ok ,则表明mysql已经安装成功了。 6)、拷贝配置文件my.cnf [iyunv@balichvm mysql]# pwd /usr/local/mysql [iyunv@balichvm mysql]# cpsupport-files/my-default.cnf /etc/my.cnf ##拷贝配置文件 cp:是否覆盖"/etc/my.cnf"? y [iyunv@balichvm mysql]#
7)、拷贝启动脚本并修改其属主和数组。 [iyunv@balichvm mysql]# cpsupport-files/mysql.server/etc/init.d/mysqld ##拷贝启动文件 [iyunv@balichvm mysql]# chmod755 /etc/init.d/mysqld ##修改权限,增加执行权限
8)、修改启动脚本/etc/init.d/mysqld,并把启动脚本加入到系统服务,设置开机启动。 [iyunv@balichvm mysql]# vim/etc/init.d/mysqld 找到: basedir= datadir= 修改为: basedir=/usr/local/mysql ##mysql数据库的安装目录 datadir=/data/mysql ##mysql数据库的存放目录
[iyunv@balichvm mysql]#chkconfig --addmysqld ##把mysqld添加到系统服务 [iyunv@balichvm mysql]#chkconfig mysqldon ##设置为开机启动
9)、启动mysql数据库 [iyunv@balichvm mysql]#/etc/init.d/mysqldstart ##启动mysql数据库 StartingMySQL............................................. SUCCESS!
为了验证,我们可以使用ps和netstat查看启动的进程和开启的端口号。 [iyunv@balichvm src]# ps aux|grep mysql|grep -v grep root 3541 0.0 0.1 106192 1524 pts/2 S 12:38 0:00 /bin/sh/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql--pid-file=/data/mysql/balichvm.org.pid mysql 3656 19.1 44.7 1011064 603915pxs/2 Sl 12:38 0:45 /usr/local/mysql/bin/mysqld--basedir=/usr/local/mysql --datadir=/data/mysql--plugin-dir=/usr/local/mysql/lib/plugin --user=mysql--log-error=/data/mysql/balichvm.org.err--pid-file=/data/mysql/balichvm.org.pid
[iyunv@balichvm src]# netstat-lnp |grep mysql|grep -v grep tcp 0 0:::3306 :::* LISTEN 3656/mysqld unix 2 [ ACC ] STREAM LISTENING 32648 3656/mysqld /tmp/mysql.sock
10)、将mysql的安装目录加入到环境变量,这是为了方便使用(如果不加,要登录mysql需要写全路径)
[iyunv@balichvm mysql]# vim/etc/profile #编辑环境变量配置文件 exportPATH=$PATH:/usr/local/mysql/bin #在最面添加
[iyunv@balichvm mysql]#source/etc/profile ##刷新一次环境变量
11)、登录mysql、修改mysql密码 登录mysql的方法可以使通过ip/端口或者是socket的方式登录。 ip/端口的方式:mysql –Hhostname –Pport –uuser–ppasswd socket的方式:mysql –S socketdir –uuser –ppasswd
修改mysql的密码: [iyunv@balichvm mysql]#mysqladmin -uroot password 'fgjh123.' ##设置密码为fgjh123.
mysql的完成安装。
2、安装php PHP版本:php-5.6.13 安装目录:/usr/local/php56 php用户:php-fpm
1)、下载php,地址是:http://cn2.php.net/distributions/php-5.6.13.tar.bz2 [iyunv@balichOS src]# pwd /usr/local/src ##进入/usr/local/src目录 [iyunv@balichOS src]# wgethttp://cn2.php.net/distributions/php-5.6.13.tar.bz2 ##下载php
2)、解压php [iyunv@balichOS src]# tar-jxvf php-5.6.13.tar.bz2 ##解压
3)、创建安装php的数据存放目录/usr/local/php56,创建php运行的用户php-fpm,并且该用户不需要登录系统; [iyunv@balichOS src]# mkdir/usr/local/php56 ##创建目录 [iyunv@balichOS src]#groupadd php-fpm [iyunv@balichOS src]# useradd-s /sbin/nologin -M -g php-fpm php-fpm ##创建用户 [iyunv@balichOS src]#
4)、配置编译参数 [iyunv@balichOS php-5.6.13]#./configure --prefix=/usr/local/php56--with-config-file-path=/usr/local/php56/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 --with-pear --with-curl--with-openssl
5)、编译(make)和安装(make install) [iyunv@balichOS php-5.6.13]#make && make install ##编译和安装
6)、拷贝php的配置文件php.ini到/usr/local/php56/etc/php.ini. [iyunv@balichOS php-5.6.13]#cp php.ini-production /usr/local/php56/etc/php.ini ##拷贝配置文件
7)、拷贝php-fpm的配置文件php-fpm.conf [iyunv@balichOS php-5.6.13]#cd /usr/local/php56/etc/ [iyunv@balichOS etc]# cpphp-fpm.conf.default php-fpm.conf ##拷贝配置文件 [iyunv@balichOS etc]# vimphp-fpm.conf ##编辑php-fpm配置文件 增加或者修改如下配置: [global] #全局配置 pid =/usr/local/php56/var/run/php-fpm.pid #pid error_log = /usr/local/php56/var/log/php-fpm.log #错认日志 这两行默认是分号 ; 注释的,用的是相对路径,把分号去掉,修为为绝对路径。
[www] #资源池,一般一个网站用一个池 listen =127.0.0.1:9000 #资源池的监听形式,也有用socket的形式。 user = php-fpm #以那个用户运行 group = php-fpm #以那个组运行 这三行默认存在,不需要修改
pm = dynamic #控制子进程的形式有动态(dynamic)和静态(static) 默认存在,不行修改
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 #设置文件打开描述符的rlimit限制 默认没有打开,去掉分号即可。
保存,:wq,退出。 [iyunv@balichOS etc]#/usr/local/php56/sbin/php-fpm –t ##检查配置文件是否有错误。 [02-Nov-2015 23:48:47]NOTICE: configuration file /usr/local/php56/etc/php-fpm.conf test is successful
8)、拷贝启动脚本php-fpm,修改权限,并加入系统服务 [iyunv@balichOS etc]# cp/usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #拷贝启动脚本 [iyunv@balichOS etc]# chmod755 /etc/init.d/php-fpm #修改权限 [iyunv@balichOS etc]#chkconfig --add php-fpm #加入系统服务 [iyunv@balichOS etc]#chkconfig --level 35 php-fpm on #设置开机启动
9)、启动php-fpm进程。 [iyunv@balichOS etc]# servicephp-fpm start ##启动php-fpm Starting php-fpm done [iyunv@balichOS etc]# netstat-lnp |grep -v grep|grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 61542/php-fpm
兼听的是127.0.0.1:9000。
3、安装Nginx Nginx安装版本:nginx-1.8.0 Nginx安装目录:/usr/local/nginx
Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。其官网是:http://nginx.org/
1)、下载和解压ngxin,wgethttp://nginx.org/download/nginx-1.8.0.tar.gz [iyunv@balichOS src]# wget http://nginx.org/download/nginx-1.8.0.tar.gz [iyunv@balichOS src]# tar-zxvf nginx-1.8.0.tar.gz ##解压
2)、配置编译参数 [iyunv@balichOS nginx-1.8.0]#./configure \--prxfix=/usr/local/nginx ./configure: error: invalidoption "--prxfix=/usr/local/nginx" [iyunv@balichOS nginx-1.8.0]#./configure \ >--prefix=/usr/local/nginx \ >--with-http_realip_module \ > --with-http_sub_module\ >--with-http_gzip_static_module \ > --with-http_stub_status_module\ > --with-pcre \ > --with-http_ssl_module
3)、编译(make)和安装(make install) [iyunv@balichOS nginx-1.8.0]#make && make install
4)、编写nginx的启动和关闭脚本,然后启动Nginx服务。 [iyunv@balichOS nginx-1.8.0]#cd /usr/local/nginx/ [iyunv@balichOS nginx]# ls conf html logs sbin [iyunv@balichOS nginx]# vim/etc/init.d/nginx ##编写nginx启动、关闭脚本 #!/bin/bash # chkconfig: - 30 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx"
start() { echo -n $"Starting $prog: " mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL }
stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN-TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL }
reload(){ echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL }
restart(){ stop start }
configtest(){ $NGINX_SBIN -c $NGINX_CONF -t return 0 }
case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage: $0{start|stop|reload|restart|configtest}" RETVAL=1 esac
exit $RETVAL
保存 :wq 退出。
更改权限,添加到系统服务列表,设置开机启动 [iyunv@balichOS nginx]# chmod755 /etc/init.d/nginx ##更改权限 [iyunv@balichOS nginx]#chkconfig --add nginx ##添加到系统服务列表 [iyunv@balichOS nginx]#chkconfig --level 35 nginx on ##设置开机启动 [iyunv@balichOS nginx]#
[iyunv@balichOS nginx]#service nginx start ##启动nginx服务 正在启动 Nginx: [确定] [iyunv@balichOS nginx]# psaux |grep -v grep |grep nginx root 65527 0.0 0.1 44612 1040 ? Ss 03:17 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf nobody 65528 0.0 0.1 45040 1632 ? S 03:17 0:00 nginx: worker process [iyunv@balichOS nginx]#netstat -lnp|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 65527/nginx [iyunv@balichOS nginx]#
4、nginx结合php
1)、编辑nginx的配置文件/usr/local/nginx/conf/nginx.conf,修改或者增加如下: [iyunv@balichOS nginx]# vim/usr/local/nginx/conf/nginx.conf
user php-fpm php-fpm; ##首行默认注释,修改为php-fpm的用户。
index index.html index.htm index.php; ##增加index.php,对php的支持
#pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # 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; } 找到上面的那一段,把从location开始部分有#号注释的去掉。最后保存配置文件。然后重启nginxs [iyunv@balichOS nginx]#service nginx restart 停止 Nginx: [确定] 正在启动 Nginx: [确定]
2)、编辑php文件测试phpd的解析,nginx的默认网站根目录在/usr/local/nginx/html 目录下。 [iyunv@balichOS nginx]# vim/usr/local/nginx/html/info.php
<?php phpinfo(); ?> 保存 :wq,然后使用浏览器或者curl测试。 [iyunv@balichOS nginx]# curl-I localhost/ino.php HTTP/1.1 404 Not Found Server: nginx/1.8.0 Date: Mon, 02 Nov 201519:44:29 GMT Content-Type: text/html;charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.6.13
已经正常解析了。LNMP环境搭建完成。
|