LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
(1) Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
(2)Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
(3)Mysql是一个小型关系型数据库管理系统。 PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
(4)这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
(一)编译源码
1.得到mysql数据库的源码包(建议一般去官网下载)并进行解压
tar zxf mysql-boost-5.7.17.tar.gz
cd mysql-5.7.17/
2.安装源码编译工具cmake(支持编译C++语言)
cmake跨平台工具是用来预编译mysql源码的,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等
yum install cmake-2.8.12.2-4.el6.x86_64.rpm
3.创建预编译环境,可以定制即加上自己所需的安装条件(比如安装位置等等)
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql \指定mysql的安装位置
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data \数据库中数据存放的目录
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock \链接数据库的SOCKET文件
-DWITH_MYISAM_STORAGE_ENGINE=1 \ 安装MYISAM存储引擎
-DENABLED_LOCAL_INFILE=1 \ 允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1 \ 安装分区存储引擎
-DWITH_SSL=yes \ 支持SSL加密
-DDEFAULT_CHARSET=utf8 \ 使用UTF-8字符编码
-DDEFAULT_COLLATION=utf8_general_ci \ 校验字符
-DEXTRA_CHARSETS=all \ 安装所有扩展字符集
-DMYSQL_TCP_PORT=3306 \ MYSQL监听端口
3.在初次编译后,我们会发现有许多依赖性未安装,一个一个解决依赖项,预编译环境配置完成
yum install gcc-c++ -y
yum install bison -y
yum install ncurses-devel -y
rm -fr CMakeCache.txt
# 一次编译完成后,会提示我们删除所在目录下的CMakeCache.txt文件,才能清除上次编译的缓存,从而开始新的编译
yum install openssl-devel -y
4.编译汇编
make & make install
(二)配置MYSQL
1.进入源码编译目录,再进入mysql安装的位置,将编译完成的默认配置文件放在/etc下
cd /usr/local/lnmp/mysql/ # mysql的安装位置
cd support-files/ # 配置文件所在位置
cp my-default.cnf /etc/my.cnf # 将配置文件拷贝到/etc(系统默认配置文件目录)
# These are commonly set, remove the # and set as required.
basedir = /usr/local/lnmp/mysql # mysql的安装目录
datadir = /usr/local/lnmp/mysql/data # mysql数据存放位置
port = 3306 # mysql服务对外端口
# server_id = .....
socket = /usr/local/lnmp/mysql/data/mysql.sock # mysql与外界联系的套接字文件位置
3.将编译完成的mysql启动脚本复制到系统启动服务的默认目录中
cp mysql.server /etc/init.d/mysqld
4.对mysql服务进行限制(利用mysql用户),将mysql服务的工作空间局限在mysql用户的家目录中,创建mysql组和mysql用户
groupadd -g 27 mysql
useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/data -s /sbin/nologin mysql
# 指定mysql用户的家目录为/usr/local/lnmp/mysql/data
# (-M表示不创建其家目录)。为了系统安全,MYSQL默认使用mysql用户来运行相关程序。
5.将mysql目录下的data目录的所属组修改为mysql,因为mysql服务将要往这个目录中写数据,保证其有执行权限
6.将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令
vim /root/.bash_profile
source .bash_profile 加载.bash_profile文件
# 把mysql的对应的命令脚本添加到环境变量中。也可以在root的path中,使用软链接添加进来。(ln -s /usr/local/lnmp/mysql/bin/* /usr/local/sbin/)
mysqld --initialize --user=mysql
# 注意生成的初始化密码在最底下(注意不要冒号后边的空格)
(三).mysql的安全初始化
1.打开mysql服务
2.执行安全初始化脚本mysql_secure_installation
3.登陆mysql数据库测试
这样,LNMP架构中的MYSQL数据库源码编译完成….
1.得到PHP的源码包并解压
tar jxf php-5.6.35.tar.bz2
2进入解压目录创造预编译环境
.cd php-5.6.35
./configure --prefix=/usr/local/lnmp/php # php安装的位置
--with-config-file-path=/usr/local/lnmp/php/etc # php配置文件所在的位置
--with-mysql=mysqlnd
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd # 支持与mysql数据库之间建立联系
--with-openssl # 支持openssl加密
--with-snmp
--with-gd
--with-zlib
--with-curl
--with-libxml-dir #支持 libxml 函数
--with-png-dir --with-jpeg-dir --with-freetype-dir # php处理图片的格式
--with-pear -
--with-gmp
--enable-inline-optimization
--enable-soap
--enable-ftp
--enable-sockets
--enable-mbstring
--enable-fpm # 开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx # 对PHP服务的限制通过nginx用户来实现
--with-fpm-group=nginx # PHP以nginx用户组身份运行
--with-mcrypt # 提供了对多种块算法的支持 主要用来实现加密等算法
--with-mhash # 加密算法
3.解决依赖性
yum install libxml2-devel openssl-devel -y gd-devel-2.0.35-11.el6.x86_64.rpm curl-devel gmp-devel
yum install libmcrypt-2.5.8-9.el6.x86_64.rpm yum install libmcrypt-devel-2.5.8-9.el6.x86_64.rpm net-snmp-devel
4.编译和安装
make && make install
5.将配置文件拷贝到
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf
cp php-5.6.35/php.ini-production /usr/local/lnmp/php/etc/php.ini
7.做php服务的简单配置(配置pid和时区)
cd /usr/local/lnmp/php/etc
vim php.ini
vim php-fpm.conf # 打开 pid,添加时区Asia/Shanghai
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin nginx
8.将php启动的脚本复制到系统启动脚本的默认目录下,并测试php是否可以启动
cd php-5.6.35/sapi/fpm/
cp init.d.php-fpm /etc/init.d/php-fpm # init.d.php-fpm是编译完成的启动脚本
chmod +x /etc/init.d/php-fpm #给脚本加上可执行权限
/etc/init.d/php-fpm start #打开php服务
netstat -antlp # 查看php服务的监听端口
1.得到nginx的源码包并解压
tar zxf nginx-1.10.1.tar.gz
tar zxf nginx-sticky-module-ng.tar.gz # 带有sticky模块的nginx包
2.去掉nginx的版本号
cd nginx-1.10.1/src/core
vim nginx.h
3.注释debug
cd nginx-1.10.1/auto/cc
vim gcc
4.创造预编译环境
./configure --prefix=/usr/local/lnmp/nginx # nginx的安装路径
--with-http_ssl_module # 支持https
--with-http_stub_status_module
--with-threads # 支持线程并发
--user=nginx
--group=nginx # 运行在nginx用户和nginx组
--with-file-aio
5.解决源编译中的依赖性问题
yum install pcre-devel -y
make
make install
5.配置nginx服务
cd /usr/local/lnmp/nginx/conf/
vim nginx.conf
第一行加上运行用户,第13行加上最大文件数
第65---71行,去掉注释 # 将nginx与php结合起来
vim /etc/security/limits.conf
nginx - nofile 65536
7.将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令
vim /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin
source /root/.bash_profile # 重新加载/root/.bash_profile文件
8.检测nginx服务是否可用并打开nginx服务
nginx -t # 检测配置文件是否有错
nginx # 打开nginx服务
cd /usr/local/lnmp/nginx/html/
vim index.php
phpinfo()
?>
在浏览器处输入nginx和php所在主机ip/地址:172.25.1.5/index.php
11.修改php的默认访问(将php后缀文件作为默认发布文件):
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
location / {
root html;
index index.php(放在第一个) index.html index.htm;
}
nginx的源码编译结束…..