LNMP编译安装教程

前言:

本文参考地址

本文适合于已经对Linux操作系统具有基本操作经验,并且能够在Linux或Windows上通过一键搭建工具或者yum命令行进行环境搭建的读者,阅读本文需具有一定的专业知识,本文不建议初学者阅读。

本文所描述的是在标准的CentOS 7.3.1611 64位操作系统下,因是公司老项目迁移,所以版本略低,安装Nginx 1.18.0 + PHP 5.4.44 + MySQL5.6.46环境。采用源码编译安装的方式,虽然较直接使用yum命令安装较为复杂,但是源码安装可以自定义指定安装路径,可以自定义配置安装配套的库和插件,这样服务器运维人员将更清楚自己服务器的情况,从而,在日后的环境、插件的升级和更新操作中,将变得更加简便和容易。

准备安装工具:

安装make

1
yum -y install gcc automake autoconf libtool make

安装g++

1
yum -y install gcc gcc-c++ glibc

创建安装目录:

本文是在阿里云服务器上安装,所以在服务器根目录下创建alidata目录,然后在alidata目录里面分别创建server目录、webapps目录和package目录,其中server目录存放所有的服务器软件(本文中所涉及到的nginx、php、mysql等),webapps目录存放所有部署的代码及程序,package目录用来存放安装过程中需要用到的编译后的库文件。
需以root权限,依次执行以下命令

1
2
3
mkdir /alidata
cd /alidata/
mkdir webapps package server

这里需要说明,上述的server目录,是指环境安装完成后,运行程序所在的目录,并非nginx等程序的源码存放目录,为了方便,本文将下载到的这些运行环境程序的源码统一存放于/opt目录下,读者可根据自身情况及喜好,将运行环境程序源码存放于任意不是/alidata/server的目录下。

安装Nginx:

下载pcre(官网

1
2
3
cd /opt/
wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
tar -zxvf pcre-8.41.tar.gz

下载zlib(官网

1
2
3
cd /opt/
wget http://zlib.net/fossils/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz

下载openssl(官网

1
2
3
cd /opt/
wget https://www.openssl.org/source/openssl-1.1.1j.tar.gz
tar -zxvf openssl-1.1.1j.tar.gz

为nginx添加用户及组

nginx的工作进程需要以某一个用户的权限进行运行,为了服务器安全,一般指定一个普通用户权限的账号做为nginx的运行角色,根据个人习惯,这里使用www用户做为nginx工作进程的用户,后续安装的PHP也以www用户做为工作进程用户,依次执行以下命令以创建用户及用户组

1
2
groupadd -r www
useradd -r -g www www

下载安装nginx(官网

1
2
3
4
5
6
cd /opt/
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/alidata/server/nginx --sbin-path=/alidata/server/nginx/sbin/nginx --conf-path=/alidata/server/nginx/nginx.conf --pid-path=/alidata/server/nginx/nginx.pid --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-select_module --with-poll_module --error-log-path=/alidata/server/nginx/logs/error.log --http-log-path=/alidata/server/nginx/logs/access.log --with-pcre=/opt/pcre-8.41 --with-zlib=/opt/zlib-1.2.11 --with-openssl=/opt/openssl-1.1.1j
make && make install

./configure配置详解如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
--prefix表示nginx要安装到哪个路径下
--sbin-path表示nginx的可执行文件存放路径
--conf-path表示nginx的主配置文件存放路径,nginx允许使用不同的配置文件启动,通过命令行中的-c选项
--pid-path表示nginx.pid文件的存放路径,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid
--error-log-path表示nginx的主错误、警告、和诊断文件存放路径
--http-log-path表示nginx的主请求的HTTP服务器的日志文件的存放路径
--user表示nginx工作进程的用户
--group表示nginx工作进程的用户组
--with-select_module或--without-select_module表示启用或禁用构建一个模块来允许服务器使用select()方法
--with-poll_module或--without-poll_module表示启用或禁用构建一个模块来允许服务器使用poll()方法
--with-http_ssl_module表示使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的
--with-pcre表示pcre的源码路径,因为解压后的pcre是放在opt目录下的,所以是/opt/pcre-8.41;
--with-zlib表示zlib的源码路径,这里因为解压后的zlib是放在opt目录下的,所以是/opt/zlib-1.2.11
--with-openssl表示openssl库的源码路径

启动nginx

1
/alidata/server/nginx/sbin/nginx

其他nginx命令

1
2
3
/alidata/server/nginx/sbin/nginx -s stop	#关闭nginx服务
/alidata/server/nginx/sbin/nginx -t #测试配置文件是否可用 可加参数 -c 指定文件目录
/alidata/server/nginx/sbin/nginx -s reload #重载服务

查看启动状态,验证安装成果。输入下面命令显示进程即为成功。

1
ps aux | grep nginx

image-20210310153226806

或在公网访问服务器ip,有页面即为成功,需要在阿里云开放80端口。

image-20210310153243806

加入全局系统环境变量

用命令vim /etc/profile打开文件在末尾加上export PATH=$PATH:/alidata/server/nginx/sbin保存退出,使用命令source /etc/profile立即生效,使用命令nginx -v查看结果。

image-20210310160943477

设置nginx开机自启动

使用命令vim /etc/rc.local打开文件在最后一行加入/alidata/server/nginx/sbin/nginx,记得使用命令chmod 755 /etc/rc.local给文件权限。

安装Php:

通过yum命令安装php需要的常用库

1
yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel

下载安装Php(官网

1
2
3
4
5
6
cd /opt/
wget http://cn2.php.net/distributions/php-5.4.44.tar.gz
tar -zxvf php-5.4.44.tar.gz
cd php-5.4.44
./configure --prefix=/alidata/server/php --with-config-file-path=/alidata/server/php/etc --enable-fpm --with-mcrypt --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysqli --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
make && make install

设置php配置文件

将官方提供的配置模板拷贝到配置参数中所指定的目录中,然后可以根据自己服务器的需求,对php.ini文件的内容进行修改。

注意官方提供php.ini-development (开发环境用)与 php.ini-production(生产环境用)两个建议,随自己心愿拷贝。

1
cp /opt/php-5.4.44/php.ini-production /alidata/server/php/etc/php.ini

设置php-fpm配置文件

1
2
cd /alidata/server/php/etc/
cp php-fpm.conf.default php-fpm.conf

使用vim php-fpm.conf命令对文件的global下和www下的内容进行如下修改,保存并退出(其他配置可根据自己的情况进行相应修改)。

1
pid = /alidata/server/php/var/run/php-fpm.pid

image-20210310175159244

1
2
3
user = www
group = www
listen = 127.0.0.1:9000

image-20210310175854092

启动php-fpm

1
/alidata/server/php/sbin/php-fpm

其他命令

1
2
3
4
kill -INT `cat /alidata/server/php/var/run/php-fpm.pid`		#立即终止php-fpm
kill -QUIT `cat /alidata/server/php/var/run/php-fpm.pid` #平滑终止php-fpm
kill -USR1 `cat /alidata/server/php/var/run/php-fpm.pid` #重新打开日志文件
kill -USR1 `cat /alidata/server/php/var/run/php-fpm.pid` #重启(平滑重载所有worker进程并重新载入配置和二进制模块)

启动后用命令ps aux | grep php-fpm查看,如有进程表示成功。

image-20210310180127597

加入全局系统环境变量

用命令vim /etc/profile打开文件在末尾加上export PATH=$PATH:/alidata/server/php/bin:/alidata/server/php/sbin保存退出,使用命令source /etc/profile立即生效,使用命令php -v查看结果。

image-20210310180506797

设置php-fpm开机自启动

使用命令vim /etc/rc.local打开文件在最后一行加入/alidata/server/php/sbin/php-fpm ,记得使用命令chmod 755 /etc/rc.local给文件权限。

安装mysql:

下载安装cmake(官网

1
2
3
4
5
6
cd /opt/
wget https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6.tar.gz
tar -zxvf cmake-3.19.6.tar.gz
cd cmake-3.19.6
./bootstrap --prefix=/alidata/package/cmake
make && make install

加入全局系统环境变量

用命令vim /etc/profile打开文件在末尾加上export PATH=$PATH:/alidata/package/cmake/bin保存退出,使用命令source /etc/profile立即生效,使用命令cmake --version查看结果。

下载安装ncurses(官网)

1
2
3
4
5
6
cd /opt/
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
tar -zxvf ncurses-6.0.tar.gz
cd ncurses-6.0
./configure --prefix=/alidata/package/ncurses
make && make install

安装libaio库

1
yum -y install libaio*

为MySQL添加用户及组

1
2
groupadd mysql
useradd -r -g mysql mysql

下载安装MySQL(官网

1
2
3
4
5
6
cd /por/
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.46.tar.gz
tar -zxvf mysql-5.6.46.tar.gz
cd ./mysql-5.6.46
cmake -DCMAKE_INSTALL_PREFIX=/alidata/server/mysql -DMYSQL_UNIX_ADDR=/alidata/server/mysql/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1-DMYSQL_DATADIR=/alidata/server/mysql/data -DMYSQL_USER=mysql
make && make install

cmake配置详解如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-DCMAKE_INSTALL_PREFIX  			#数据文件存放目录
-DMYSQL_UNIX_ADDR         #sock文件路径
-DDEFAULT_CHARSET       #默认字符集
-DDEFAULT_COLLATION     #默认字符校对 utf8_general_ci 不区分大小写 utf8_general_cs 区分大小写
-DWITH_EXTRA_CHARSETS   #扩展字符支持  默认all
-DWITH_MYISAM_STORAGE_ENGINE=1 #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 #支持Memory引擎
-DWITH_READLINE=1 #快捷键功能
-DWITH_storage_STORAGE_ENGINE   #存储引擎的支持,默认支持MyISAM,MERGE,MEMORY,CVS存储引擎
-DENABLED_LOCAL_INFILE=1   #启用加载本地数据
-DMYSQL_DATADIR         #数据存放目录
-DMYSQL_USER                #mysql运行用户
-DMYSQL_TCP_PORT=3306 #端口

修改mysql目录权限

1
chown -R mysql:mysql cd /alidata/server/mysql/

执行初始化脚本

1
2
cd /alidata/server/mysql/
scripts/mysql_install_db --basedir=/alidata/server/mysql --datadir=/alidata/server/mysql/data --user=mysql

拷贝启动脚本

1
cp support-files/mysql.server /etc/init.d/mysqld

vim /etc/my.cnf 修改文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[client]

port = 3306
socket = /alidata/server/mysql/tmp/mysql.sock


[mysqld]

basedir=/alidata/server/mysql
datadir=/alidata/server/mysql/data
socket=/alidata/server/mysql/tmp/mysql.sock
user = mysql
symbolic-links=0
log-error=/alidata/server/mysql/logs/error.log
pid-file=/alidata/server/mysql/logs/mysql.pid

[mysqld_safe]

log-error=/alidata/server/mysql/logs/error.log
pid-file=/alidata/server/mysql/logs/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

vim /etc/init.d/mysqld 修改 basedir 和 datadir 路径,与my.cnf中保持一致。

image-20210311161158103

启动停止命令

1
2
3
4
5
6
/etc/init.d/mysqld start		#启动MySQL
/etc/init.d/mysqld stop #停止MySQL
/etc/init.d/mysqld restart #重启MySQL
/etc/init.d/mysqld reload #重新加载MySQL
/etc/init.d/mysqld force-reload #强制重新加载MySQL
/etc/init.d/mysqld status #查看MySQL状态

加入全局系统环境变量

用命令vim /etc/profile打开文件在末尾加上export PATH=$PATH:/alidata/server/mysql/bin保存退出,使用命令source /etc/profile立即生效,使用命令mysql查看结果。

设置mysql开机自启动

使用命令vim /etc/rc.local打开文件在最后一行加入/alidata/server/mysql/bin/mysqld ,记得使用命令chmod 755 /etc/rc.local给文件权限。