LNMP架构介绍
LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
- Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
- Nginx是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。
- Mysql是一个小型关系型数据库管理系统。
- PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
实验操作环境:linux6.5
操作的主机,selinux及iptables处于关闭状态。
Nginx的源码编译安装及配置
nginx的安装包可在官网下载(nginx.org)
[root@server1 ~]# tar zxf nginx-1.16.0.tar.gz
[root@server1 nginx-1.16.0]# ls
auto CHANGES.ru configure html man src
CHANGES conf contrib LICENSE README
编辑文件去掉nginx版本号(防止黑客攻击)和注释掉debug方便快速解析(日志内容太多)
vim src/core/nginx.h ## 去掉版本号
14 #define NGINX_VER "nginx"
vim auto/cc/gcc ## 注释debug
171 # debug
172 #CFLAGS="$CFLAGS -g"
安装编译需要的依赖(环境不同可能需要依赖不同,编译失败时看error,缺少什么装什么)
需要在解压出来的目录下
yum install gcc pcre-devel openssl-devel -y
[root@server1 nginx-1.16.0]#./configure --prefix=/usr/local/lnmp/nginx \
> --with-http_ssl_module \
> --with-http_stub_status_module \
> --with-threads \
> --with-file-aio \
> --user=nginx \
> --group=nginx
结束之后没有报错 即为安装成功
编译安装
make && make install
出现这条消息且没有报错即为成功编译
Nginx的相关配置
nginx配置文件: /usr/local/lnmp/nginx/conf/nginx.conf
[root@server1 nginx-1.16.0]# vim /usr/local/lnmp/nginx/conf/nginx.conf
43 location / {
44 root html;
45 index index.php index.html index.htm;
## 支持php,默认以先后顺序访问
46 }
65 location ~ \.php$ { ## 将以下注释去掉,支持php
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 include fastcgi.conf; ##修改成.conf结尾
71 }
sbin下是nginx的启动脚本
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
## 制作一个软连接 方便开启nginx
检测语法错误
nginx -t ## 会直接指出错误的地方
上图报错是因为编译的时候选定了nginx用户和nginx组
手动创建用户即可
useradd nginx
启动nginx后,查看80端口情况。确认端口和服务一起开启
netstat -tnlp
Mysql数据库的源码编译安装及配置
安装包可从官网下载
tar zxf mysql-boost-5.7.27.tar.gz
官网下载Mysql预编译工具包,并进行安装(cmake:它支持编译c++语言)
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y
编译之前安装依赖,编译过程报错缺什么安装什么
yum install gcc gcc-c++ ncurses-devel bison -y
进行预编译(创建预编译环境时需指定一些之后用得到的参数)
如果之前编译失败过,在重新cmaek之前要删掉缓存
rm -rf CMakeCache.txt
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \ #安装目录
> -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \ #数据库存放目录
> -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \ #Unix socket文件路径
> -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装myisam存储引擎
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装innobase存储引擎
> -DDEFAULT_CHARSET=utf8 \ #utf8字符
> -DDEFAULT_COLLATION=utf8_general_ci \ #检验字符
> -DEXTRA_CHARSETS=all \ #安装所有扩展字符集
> -DWITH_BOOST=boost/boost_1_59_0
出现以下即为编译成功
make && make install ## 此过程需要时间较长
## 在编译之前确保虚拟机至少2G内存,双cpu
Mysql的相关配置
复制mysql服务启动脚本到/etc/init.d下,并给与可执行权限
cp -p /usr/local/lnmp/mysql/support-files/mysql.server /etc/init.d/mysqld
## 记得-p带权限一起复制
chmod +x /etc/init.d/mysqld ## 添加执行权限
复制mysql配置文件到/etc下并进行修改
cp /usr/local/lnmp/mysql/support-files/etc/my.cnf /etc/my.cnf
vim /etc/my.cnf #编辑mysql的配置文件。
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
为了方便操作更改环境变量并刷新
vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile
mysql ## 按两次tab键补全,来验证mysql环境变量配置成功
创建mysql的用户和组
useradd mysql
修改权限,创建/usr/local/lnmp/mysql/data,并更改该目录用户和所有组为mysql
cd /usr/local/lnmp/mysql/
mkdir data
chown mysql.mysql data
获取mysql的登陆密码
mysqld --user=mysql --initialize
## 执行命令后,密码在最后一行,一定要记住这个密码。
9=e7TyXGc7Bp
开启数据库,安全初始化,更改登陆密码。
/etc/init.d/mysqld start
mysql_secure_installation
## 更改密码时,就是刚刚生成的密码(9=e7TyXGc7Bp),其他默认回车
记得查看端口3306,确保端口和服务都是开启的
netstat -tnlp
Php的源码编译安装及配置
官网下载php安装包
tar jxf php-5.6.35.tar.bz2
安装编译前的依赖性
[root@server1 ~]# yum install libxml2-devel -y
[root@server1 ~]# yum install openssl-devel -y
[root@server1 ~]# yum install libcurl-devel -y
[root@server1 ~]# yum whatprovides */jpeglib.h
[root@server1 ~]# yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64 -y
[root@server1 ~]# yum whatprovides */png.h
[root@server1 ~]# yum install libpng-devel-1.2.49-1.el6_2.x86_64 -y
[root@server1 ~]# yum install freetype-devel -y
[root@server1 ~]# yum whatprovides */gmp.h
[root@server1 ~]# yum install gmp-devel-4.3.1-7.el6_2.2.x86_64 -y
以下俩个需要在官网下载
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
[root@server1 ~]# yum install libmcrypt-* -y
[root@server1 ~]# yum install net-snmp-devel -y
- yum provides */不知道名称的包
可以搜索安装包名称
配置编译环境
cd php-5.6.35
./configure --prefix=/usr/local/lnmp/php \ #php安装的位置
> --with-config-file-path=/usr/local/lnmp/php/etc \ #php配置文件所在的位置
> --with-openssl \ #支持openssl加密
> --with-snmp \ #支持与mysql所数据库之间建立联系
> --with-libxml-dir \ #支持libxml函数
> --with-png-dir \ #支持php处理图片的格式(png格式)
> --with-jpeg-dir \ #支持php处理图片的格式(jpeg格式)
> --with-freetype-dir \ #支持php处理图片的格式(freetype格式)
> --enable-fpm \ #开启fpm模式(nginx等服务用的)
> --with-fpm-user=nginx \ #对php服务的限制通过nginx用户来实现
> --with-fpm-group=nginx \ #php以nginx用户组身份运行
> --with-mcrypt \ #提供了对多种算法的支持,主要用来实现加密等算法
> --with-mhash #加密算法
编译安装
make && make install ## 该过程需要的时间较久
Php的相关配置
复制php启动脚本到/etc/init.d目录下,并给与执行权限
cd php-5.6.35/sapi/fpm/
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm ## 给启动脚本加可执行的权限
修改pid
因为上述的编译安装没有生成php-ftp.pid文件以供使用。所以要用下面的方案来生成php-fpm.pid文件
cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
## 拷贝文件。注意:这步是必须的,因为之后要在nginx服务的配置文件中进行相应的配置,使得nginx支持.conf结尾的文件
vim php-fpm.conf
打开端口 pid = run/php-fpm.pid(取消注释)
修改时区
[root@server1 php-5.6.35]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini
## 注意必须将cp过来的文件的名字该为php.ini
[root@server1 php-5.6.35]# vim /usr/local/lnmp/php/etc/php.ini
date.timezone = Asia/Shanghai ## 将时区改为亚洲上海
开启php服务.并且查看9000端口是否存在
etc/init.d/php-fpm start ## 开启php-fpm服务
netstat -tnlp
测试:
网页输入172.25.3.1(搭建lnmp服务器ip),即可访问到nginx默认页面。
检测是否支持php语言
cd /usr/local/lnmp/nginx/html/
vim index.php ## 编辑一个php的默认发布页面
<?
phpinfo()
?>