web平台搭建-LNMP(CentOS-7)

web平台搭建-LNMP(CentOS-7)

准备工作

环境要求:

操作系统:CentOS 7.X  64位
关闭SELinux和iptables防火墙
此次试验环境使用网络yum源,保证系统能正常连接互联网

网络yum源:

先将系统自带的yum配置文件移除或者删除,然后下载以下两个配置文件
# 官方基础:
		http://mirrors.163.com/.help/CentOS7-Base-163.repo
 	   http://mirrors.aliyun.com/repo/Centos-7.repo 
# epel拓展:
		http://mirrors.aliyun.com/repo/epel-7.repo
下载完成后,需要使用命令清除掉原有的yum缓存,使用新的配置文件建立缓存
# 网络yum源配置:(虚拟机需要联网)
$ cd /etc/yum.repos.d mkdir back mv C* back/
$ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 
$ wget http://mirrors.aliyun.com/repo/epel-7.repo
$ yum clean all    #清除掉原有缓存列表 
$ yum makecache    #建立新的缓存列表 
$ yum update       #将所有能更新的软件更新(非必选)

安装编译工具和依赖软件包

$ yum -y install gcc gcc-c++ pcre-devel openssl openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel lrzsz

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: 7.1.* #我们使用的是php7
注意:每次安装LNMP时,软件包的小版本都不一样,官方会对其大版本下的小版本进行覆盖式更新,本文内部分链接会失效,切记按照下载版本进行安装
apache: 稳定,并发量小
Nginx : 并发量大

源码软件包安装

Nginx

下载Nginx源码包,解压

$ mkdir /lnmp 
$ cd /lnmp 
$ wget http://nginx.org/download/nginx-1.12.2.tar.gz 
$ tar -xf nginx-1.12.2.tar.gz

创建用于运行Nginx的用户

useradd -r -s /sbin/nologin nginx

解压缩Nginx并安装

$ cd nginx-1.12.2 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module 
$ make 
$ make install

上传编写好的nginx启动管理脚本(见文本尾部)

安装路径:/usr/local/nginx**
启动: /usr/local/nginx/sbin/nginx**
关闭: kill $(cat /usr/local/nginx/logs/nginx.pid)(不推荐用。可用热重启)**
热重启:pkill -HUP nginx**
语法检查:/usr/local/nginx/sbin/nginx -t**
将安装的命令软链接到PAPH变量中,让命令更简洁可用,比如语法检查如下命令原来用绝对路径执行,现在可以直接用。**
$ ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ 
$ nginx -t  (语法检查) 
$ nginx (启动)

nginx: [emerg] getpwnam("nginx") failed nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed 
# 报错是因为没有创建Nginx用户所致。

启动后访问nginx首页测试'

192.168.66.11

MySQL

下载:https://dev.mysql.com/downloads/mysql/
选择:MySQL Community Server 5.5 »
选择:Select Version: 按照自己要求选择
 Select Operating System: Source Code
 Select OS Version: Generic Linux
格式:mysql-N.N.NN.tar.gz

$ cd /lnmp 
$ wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz 
$ tar -xf mysql-5.5.62.tar.gz

创建用于运行Mysql的用户:

$ useradd -r -s /sbin/nologin mysql

解压缩Mysql并安装:

$ cd mysql-5.5.62/ 
$ 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
$ make 
$ make install 
$ ln -s /usr/local/mysql/bin/*  /usr/local/bin (方便执行命令)

修改安装后的目录权限

$ cd /usr/local/mysql chown -R root . chown -R mysql data

生成Mysql配置文件

$ cp -a /lnmp/mysql-5.5.62/support-files/my-medium.cnf /etc/my.cnf

初始化,生成授权表

$ cd /usr/local/mysql       #一定要先切换到此目录下,然后再执行下一步。 
$ ./scripts/mysql_install_db --user=mysql
初始化成功标志:两个ok

生成Mysql的启动和自启动管理脚本

$ cd /lnmp/mysql-5.5.62/support-files 
#切换到mysql的源码解压缩目录下的support-files 
$ cp -a mysql.server /etc/init.d/mysqld 
$ chmod +x /etc/init.d/mysqld 
$ service mysqld start  
$ chkconfig --add mysqld   #将脚本添加到chkconfig序列中 
$ chkconfig --list   #可以看到 
$ chkconfig mysqld on service mysqld start|stop|restart

给mysql的root用户设置密码

$ mysqladmin -uroot password 123456 
# 登录mysql用户 
$ mysql -uroot -p123456 
$ show databases   #查看数据库

PHP

下载:**http://www.php.net/

$ cd /lnmp 
$ wget https://www.php.net/distributions/php-7.1.29.tar.gz 
$ tar -xf php-7.1.29.tar.gz

解压缩PHP并安装

$ cd /lnmp/php-7.1.29/
$ ./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 
$ make 
$ make install

--enable-fpm 
报错提示:若遇到libpng.so not found .报错(老版本的PHP会出现此问题)
解决方案:(yum安装的命令一般都安装在lib 或者lib64下,因此要将其软链接到lib下 )
ln –s /usr/lib64/libpng.so  /usr/lib  (报错才需要此步)

生成php配置文件

$ cp -a /lnmp/php-7.1.29/php.ini-production /usr/local/php/etc/php.ini
复制源码包内的配置文件到安装目录下,并改名即可

创建软连接,使用php相关命令是更方便

$ ln -s /usr/local/php/bin/* /usr/local/bin/ ln -s /usr/local/php/sbin/* /usr/local/sbin/

配置Nginx连接PHP(重难点

nginx连接php需要启动php-fpm服务(配置参数)

$ cd /usr/local/php/etc/ 
$ cp -a php-fpm.conf.default php-fpm.conf #生成php-fpm的配置文件,并修改指定参数

$ vim php-fpm.conf #修改指定条目的参数:(取消注释) 
	pid = run/php-fpm.pid error_log = log/php-fpm.log (若打开需要做好日志的轮替) 	结尾处include=/usr/local/php/etc/php-fpm.d/*.conf 是调用以.conf结尾的文件

$ cd /usr/local/php/etc/php-fpm.d/ 
$ cp -a www.conf.default www.conf vim www.conf 
#修改用户和组的指定用户 
	user = nginx 
	group = nginx 
#修改Nginx启动管理脚本:将php-fpm的注释取消掉即可

修改Nginx的配置文件,使其识别.php后缀的文件

$ 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;    #修改为fastcgi.conf 
}

img

修改Nginx配置文件,使其默认自动加载php文件

location / {
	root html; #Nginx的默认网页路径:PREFIX/html 
	index index.php index.html; #设置默认加载的页面,以及优先级添加index.php 
}
# 语法检查 、查看nginx有没有启动
$ nginx -t netstat -antp
# 用脚本启动,先关闭
$ kill $(cat /usr/local/nginx/logs/nginx.pid) netstat -antp
# 添加脚本,并给脚本加权限,加入chkconfig
$ vim /etc/init.d/nginx    (添加后面脚本) 
$ chmod +x /etc/init.d/nginx 
$ chkconfig --add nginx 
$ chkconfig --list (查看是否添加) 
$ service nginx start   
$ netstat -antp  (检查端口看是否启动)

测试:

# 重启Nginx服务,创建php测试文件,访问并查看是否解析
$ cd /usr/local/nginx/html 
$ vim info.php     (添加下面内容)    
<?php        
	phpinfo()   
?>

浏览器测试
192.168.66.11

Nginx启动管理脚本

#!/bin/bash 
#Author:liu 
#chkconfig: 2345 99 33
#description: nginx server control tools 
#设置变量分别用变量执行和关闭nginx和php-fpm 
ngxc="/usr/local/nginx/sbin/nginx" 
pidf="/usr/local/nginx/logs/nginx.pid" 
ngxc_fpm="/usr/local/php/sbin/php-fpm" 
pidf_fpm="/usr/local/php/var/run/php-fpm.pid" 
case "$1" in   
	start)     
		$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
posted @ 2020-04-20 11:39  候你已久  阅读(56)  评论(0)    收藏  举报