一、准备工作
1.1 环境要求:
操作系统:CentOS 6.X 64 位
关闭 SELinux
和 iptables
防火墙
此次试验环境使用网络 yum 源,保证系统能正常连接互联网
防火墙
[root@localhost ~]$ iptables -F && service iptables save
[root@localhost ~]$ iptables -L
SELinux
[root@localhost ~]$ setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root@localhost ~]$ getenforce
1.2 配置yum源
可参考之前的文章设置yum源
Linux配置yum源
1.3 安装编译工具和依赖软件包
[root@localhost ~]$ yum -y install gcc* pcre-devel openssl openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel
1.4 Nginx、MySQL、PHP 三大软件的源码包下载地址
Nginx:http://nginx.org/en/download.html
MySQL:https://dev.mysql.com/downloads/mysql/
PHP:http://www.php.net/
版本选用:
Nginx: 1.12.* #选用软件的稳定版即可
Mysql: 5.5.* #5.5 以上版本需要 1G 以上的内存,否则无法安装
PHP: 5.6.* #LAMP 中我们使用的是 php7,此次使用 php5
注意:每次安装 LNMP 时,软件包的小版本都不一样,官方会对其大版本下的小版本进行覆盖式更新,本文内部分链接会失效,切记按照下载版本进行安装。
二、源码软件包安装
2.1 Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器
及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强(同时处理的用户请求量)
。
2.1.1 下载 Nginx 源码包
[root@localhost ~]$ mkdir /lnmp
[root@localhost ~]$ wget http://nginx.org/download/nginx-1.12.2.tar.gz -P /lnmp
[root@localhost ~]$ tar -zxvf nginx-1.12.2.tar.gz
2.1.2 创建用于运行 Nginx 的用户
[root@localhost ~]$ useradd -r -s /sbin/nologin nginx
2.1.3 解压缩 Nginx 并安装
[root@localhost ~]$ cd /lnmp/nginx-1.12.2
[root@localhost ~]$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
[root@localhost ~]$ make && make install
[root@localhost ~]$ /usr/local/nginx/sbin/nginx #启动nginx
[root@localhost ~]$ ps -ef | grep nginx
2.1.4 上传编写好的 nginx 启动管理脚本
[root@localhost ~]$ vim /etc/init.d/nginx
#!/bin/bash
#description(说明): nginx server control tools
#################################Nginx 启动管理脚本##################################
ngxc="/usr/local/nginx/sbin/nginx" #nginx启动命令
pidf="usr/local/nginx/logs/nginx.pid"
ngxc_fpm="/usr/local/php/sbin/php-fpm" #fpm启动命令
pidf_fpm="/usr/local/php/var/run/php-fpm.pid"
case "$1" in
#$1,输入的第一个参数
start) #输入的参数为start,启动nginx和fpm
$ngxc -t &> /dev/null
if [ $? -eq 0 ];then
$ngxc
$ngxc_fpm
echo "nginx service start success!"
else
$ngxc -t
fi
;;
stop)
kill -s QUIT $(cat $pidf)
kill -s QUIT $(cat $pidf_fpm)
echo "nginx service stop success!"
;;
restart)
$0 stop
$0 start
;;
reload)
$ngxc -t &> /dev/null
if [ $? -eq 0 ];then
kill -s HUP $(cat $pidf)
kill -s HUP $(cat $pidf_fpm)
echo "reload nginx config success!"
else
$ngxc -t
fi
;;
*)
echo "please input stop|start|restart|reload."
exit 1
esac
[root@localhost ~]$ chmod +x /etc/init.d/nginx
2.2 MySQL
2.2.1 下载 MySQL 源码包
格式: mysql-N.N.NN.tar.gz
[root@localhost ~]$ wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz -P /lnmp
[root@localhost ~]$ tar -zxvf mysql-5.5.62.tar.gz
2.2.2 创建用于运行 Mysql 的用户:
[root@localhost ~]$ useradd -r -s /sbin/nologin mysql
2.2.3 解压缩 Mysql 并安装:
[root@localhost ~]$ cd /lnmp/mysql-5.5.62
[root@localhost ~]$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
[root@localhost ~]$ make && make install
[root@localhost ~]$ ln -s /usr/local/mysql/bin/* /usr/local/bin #方便执行命令
2.2.4 修改安装后的目录权限
[root@localhost ~]$ cd /usr/local/mysql
[root@localhost ~]$ chown -R root .
[root@localhost ~]$ chown -R mysql data
2.2.5 生成 Mysql 配置文件
[root@localhost ~]$ cp -a /lnmp/mysql-5.5.62/support-files/my-medium.cnf /etc/my.cnf
2.2.6 初始化,生成授权表
[root@localhost ~]$ cd /usr/local/mysql
#一定要先切换到此目录下,然后再执行下一步。
[root@localhost ~]$ ./scripts/mysql_install_db --user=mysql
初始化成功标志:两个 ok
2.2.7 生成 Mysql 的启动和自启动管理脚本
[root@localhost ~]$ cd /lnmp/mysql-5.5.62/support-files
#切换到 mysql 的源码解压缩目录下的 support-files
[root@localhost ~]$ cp -a mysql.server /etc/init.d/mysqld
[root@localhost ~]$ chmod +x /etc/init.d/mysqld
[root@localhost ~]$ chkconfig --add mysqld
[root@localhost ~]$ chkconfig mysqld on
[root@localhost ~]$ service mysqld start|stop|restart
2.2.8 给 mysql 的 root 用户设置密码
[root@localhost ~]$ mysqladmin -uroot password 123456
[root@localhost ~]$ mysql -uroot -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.62-log Source distribution
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
2.3 PHP
[root@localhost ~]$ wget http://tw2.php.net/distributions/php-5.6.38.tar.gz -P /lnmp
[root@localhost ~]$ cd /lnmp && tar -zxvf php-5.6.38.tar.gz
2.3.1 解压缩 PHP 并安装:
[root@localhost ~]$ cd /lnmp/php-5.6.38
[root@localhost ~]$ ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --with-gd --without-pear --enable-fpm
[root@localhost ~]$ make && make install
报错提示: 若遇到 libpng.so not found .
报错(老版本的 PHP 会出现此问题)
解决方案:
[root@localhost ~]$ ln –s /usr/lib64/libpng.so /usr/lib
2.3.2 生成 php 配置文件
复制源码包内的配置文件到安装目录下,并改名即可
[root@localhost ~]$ cp -a /lnmp/php-5.6.38/php.ini-production /usr/local/php/etc/php.ini
2.3.3 创建软连接,使用 php 相关命令是更方便
[root@localhost ~]$ ln -s /usr/local/php/bin/* /usr/local/bin/
[root@localhost ~]$ ln -s /usr/local/php/sbin/* /usr/local/sbin/
2.4 配置 Nginx 连接 PHP(重难点)
2.4.1 nginx 连接 php 需要启动 php-fpm 服务
[root@localhost ~]$ cd /usr/local/php/etc/
[root@localhost ~]$ cp -a php-fpm.conf.default php-fpm.conf
#生成 php-fpm 的配置文件,并修改指定参数
[root@localhost ~]$ vim php-fpm.conf
#修改指定条目的参数:
pid = run/php-fpm.pid
user = nginx
group = nginx
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
#启动时开启的进程数、最少空闲进程数、最多空闲进程数(默认值,未修改)
#修改 Nginx 启动管理脚本:将 php-fpm 的注释取消掉即可
2.4.2 修改 Nginx 的配置文件,使其识别.php 后缀的文件
root@localhost ~]$ vim /usr/local/nginx/conf/nginx.conf
#取消下列行的注释,并修改 include 选项的后缀为 fastcgi.conf,并注意每一行结尾的分号和大括号
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params; #修改为 fsatcgi.conf
#}
测试:
重启 Nginx 服务,创建 php 测试文件,访问并查看是否解析
启动nginx脚本在 本目录2.1.4
[root@localhost ~]$ service nginx start
[root@localhost ~]$ service nginx restart
[root@localhost ~]$ cd /usr/local/nginx/html
[root@localhost ~]$ echo "<?php phpinfo();" > test.php
浏览器输入192.168.88.10/test.php
访问
2.4.3 修改 Nginx 配置文件,使其默认自动加载 php 文件
[root@localhost ~]$ vim /usr/local/nginx/conf/nginx.conf
location / {
root html; #Nginx 的默认网页路径:PREFIX/html
index index.php index.html; #设置默认加载的页面,以及优先级
}