源码包安装LNMP

一、安装前准备工作

 

主机 操作系统 IP 主要软件
服务器 Centos 7.6(X86_64) 172.20.77.201

mysql-5.7.19.tar.gz
php-7.1.24.tar.gz

nginx-1.14.1.tar.gz

boost_1_59_0.tar.gz

libiconv-1.14.tar.gz

libmcrypt-2.5.8.tar.gz

mhash-0.9.9.9.tar.gz

mcrypt-2.6.8.tar.gz
pcre-8.41.tar.gz

 

首先把准备好的源码包利用winscp工具上传上服务器/usr/local/src目录下,如下图所示

源码包安装LNMP

 

二、安装mysql

说明:由于安装MySQL5.7需要先安装boost1.59及以上版本,所以要先安装boost

1.解压 boost并拷贝 boost 到 /usr/local/boost 目录

[root@localhost src]# tar -zxvf boost_1_59_0.tar.gz

[root@localhost src]# cp -r boost_1_59_0 /usr/local/boost

 2.安装编译所需的常用组件和依赖包

[root@localhost src]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake

3.创建运行mysql服务的用户mysql(-M参数表示不创建用户家目录 )

[root@localhost src]# useradd -s /sbin/nologin -M mysql

4.解压MySQL,进入 mysql-5.7.19 目录

[root@localhost src]# tar -zxvf mysql-5.7.19.tar.gz

[root@localhost src]# cd mysql-5.7.19/

5.新建MySQL安装所需要目录

[root@localhost mysql-5.7.19]# mkdir -p /usr/local/mysql/{data,logs,pids}

6.修改 /usr/local/mysql 目录所有者权限

[root@localhost mysql]# chown mysql:mysql /usr/local/mysql

7.使用cmake命令进行编译

 [root@localhost mysql]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

cmake编译完成后,如下图所示

源码包安装LNMP

 

 8.使用make命令进行编译(注意:此过程等待时间较长,具体看服务器硬件配置)

[root@localhost mysql-5.7.19]# make

编译完成,如下图所示

 源码包安装LNMP

 

 9.编译完成后执行 make install  进行安装,如下图所有示

源码包安装LNMP

安装完成如下图所示

源码包安装LNMP

 10.将mysql添加到环境变量,修改/etc/profile文件,在文件最末尾添加

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

源码包安装LNMP

 更新配置文件:source /etc/profile

源码包安装LNMP

 

 11.初始化数据库, –initialize 表示默认生成一个安全的密码,–initialize-insecure 表示不生成密码

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

源码包安装LNMP

 

 12.将mysql服务文件拷贝到/etc/init.d/目录,并给出执行权限

[root@localhost mysql-5.7.19]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.7.19]# chmod a+x /etc/init.d/mysqld

13.将MySQL服务加入开机启动项

[root@localhost mysql-5.7.19]# chkconfig --add mysqld
[root@localhost mysql-5.7.19]# chkconfig mysqld on
[root@localhost mysql-5.7.19]# chkconfig --list | grep mysqld

源码包安装LNMP

 

 14.修改/etc/my.cnf文件,编辑配置文件如下,仅供参考

源码包安装LNMP

 

 15.启动mysql

源码包安装LNMP

 

 问题错误:

由于缺少 mysqld.log 和 mysqld.pid 文件导致无法正常启动

解决方法:

创建文件mysqld.log 和 mysqld.pid

[root@localhost mysql-5.7.19]# touch /usr/local/mysql/logs/mysqld.{log,pid}

 修改 /usr/local/mysql 的权限

[root@localhost mysql-5.7.19]# chown mysql:mysql -R /usr/local/mysql/

 16.再次启动mysql

[root@localhost logs]# service mysqld start
Starting MySQL. SUCCESS!

17.查看mysql是否启动成功

源码包安装LNMP

 

 18.测试连接mysql

源码包安装LNMP

 

19.查看数据库,如果看到以下几个数据库说明数据库初始化成功

源码包安装LNMP

 

20.进入数据库查看用户表

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user,password from user;
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

 问题错误:
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

解决方案:

由于MySQL 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,查询时使用authentication_string字段即可
源码包安装LNMP

 

 21.由于初始化数据库没有设置密码,所以root密码为空,不安全,不推荐,设置一下密码

设置密码(推荐),注意此方法必须使用flush privileges拿令刷新一下权限才能生效

源码包安装LNMP

 

三、安装Nginx

1.创建运行nginx服务的用户 

[root@localhost ~]# useradd  --system -M -s /sbin/nologin  nginx

 2.解压pcre

[root@localhost src]# tar -zxvf pcre-8.41.tar.gz

3.配置pcre

[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/pcre

4.编译并安装pcre

[root@localhost pcre-8.41]# make && make install

5.查看pcre版本

[root@localhost pcre-8.41]# pcre-config --version

8.41

6.安装nginx依赖包(Nginx依赖于pcre、zlib、openssl,在编译前配置时如果有问题
可以使用yum方式安装三个包pcre-devel、zlib-devel、openssl-devel)

[root@localhost src]# yum install -y pcre-devel zlib-devel openssl-devel

7.解压nginx

[root@localhost src]# tar -zxvf nginx-1.14.1.tar.gz

8.配置nginx编译环境

[root@localhost src]# cd nginx-1.14.1/

[root@localhost nginx-1.14.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

 编译环境配置完成如下图所示

源码包安装LNMP

9.编译安装nginx

[root@localhost nginx-1.14.1]# make&&make install

编译安装完成如下图所示

 源码包安装LNMP

 10.修改nginx安装目录权限所有者

[root@localhost local]# chown -R nginx:nginx /usr/local/nginx/

 11.查看nginx安装目录结构

[root@localhost src]# cd nginx-1.14.1/
[root@localhost nginx-1.14.1]# cd /usr/local/nginx/
[root@localhost nginx]# tree

如下图所示

源码包安装LNMP

12.编辑nginx服务配置文件/usr/local/nginx/conf/nginx.conf ,修改nginx服务启动的默认用户为nginx

[root@localhost nginx]# vi /usr/local/nginx/conf/nginx.conf
#user nobody;
user nginx nginx;
worker_processes 1;

13.启动nginx

[root@localhost nginx]# /usr/local/nginx/sbin/nginx

14.查看nginx是否启动成功

[root@localhost nginx]# ps aux|grep nginx

源码包安装LNMP

15.查看nginx端口占用情况

[root@localhost nginx]# netstat -tlnp|grep nginx

 源码包安装LNMP

16.防火墙放行80端口

[root@localhost nginx]# firewall-cmd --permanent --add-port=80/tcp
success
[root@localhost nginx]# firewall-cmd --reload

success

17.客户端浏览器访问服务器地址出现下图所示,表示己经安装成功了

源码包安装LNMP

 18.将nginx命令添加到环境变量,修改/etc/profile文件

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/nginx/sbin

源码包安装LNMP

更新配置文件:source /etc/profile

[root@localhost nginx]#source  /etc/profile

19.通过命令关闭 启动nginx

 a.启动nginx服务

[root@localhost nginx]# nginx

b.立刻停止nginx服务

[root@localhost nginx]# nginx -s stop

c.完成当前任务后停止nginx服务

[root@localhost nginx]# nginx -s quit

20.把nginx命令添加到系统服务

创建并编辑文件/etc/rc.d/init.d/nginx

[root@localhost nginx]# vim /etc/rc.d/init.d/nginx

#!/bin/bash
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE

retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;

stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac


20.保存脚本并增加执行权限

[root@localhost nginx]# vim /etc/rc.d/init.d/nginx
[root@localhost nginx]# chmod 755 /etc/rc.d/init.d/nginx

21.通过系统服务命令管理nginx服务

[root@localhost nginx]# systemctl restart nginx

 

四、安装PHP服务

A、编译安装PHP依赖包libiconv

1.解压libiconv

[root@localhost src]# tar -zxvf libiconv-1.14.tar.gz

2.配置libiconv编译环境

[root@localhost src]# cd libiconv-1.14/
[root@localhost libiconv-1.14]# ./configure --prefix=/usr/local/libiconv

3.编译安装libiconv

[root@localhost libiconv-1.14]# make&&make install

编译过程中出现报错如下图

源码包安装LNMP

解决方法:编辑/usr/local/src/libiconv-1.14/srclib/stdio.h

将1010行的内容   _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

如下图所示

 源码包安装LNMP

修改为:

#if defined(__GLIBC__)&&!defined(__UCLIBC__)&&!__GLIBC_PREREQ(2,16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif

如下图所示

 源码包安装LNMP

 重新编译安装,安装成功如下图所示

源码包安装LNMP

 B、编译安装PHP依赖包libmcrypt

1、解压libmcrypt

[root@localhost src]# tar -zxvf libmcrypt-2.5.8.tar.gz

2、配置编译环境

[root@localhost src]# cd libmcrypt-2.5.8/
[root@localhost libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt

3、编译安装

[root@localhost libmcrypt-2.5.8]# make&&make install

安装完成,如下图所示

源码包安装LNMP

 

C、编译安装PHP依赖包mhash

mhash 是基于离散数学原理的不可逆向的 PHP 加密方式扩展库。mhash 可以用于创建校验数值,消息摘要,消息认证码,以及无须原文的关键信息保存(如密码)等。

[root@localhost src]# tar -zxvf mhash-0.9.9.9.tar.gz

配置mhash编译环境

[root@localhost mhash-0.9.9.9]# ./configure --prefix=/usr/local/mhash

编译安装
[root@localhost mhash-0.9.9.9]# make&&make install

安装完成如下图所示

源码包安装LNMP

 

D、编译安装PHP依赖包mcrypt

 mcryp是 PHP 里面重要的加密支持扩展库。mcrypt 库支持 20 多种加密算法和 8 种加密模式。mcrypt 要比 libmcrypt 功能更强大,在很多项目中必须使用 mcrypt 加密方式。在安装 mcrypt 之前,必须先正确安装 libmcrypt 和 mhash。

1解压安装包
[root@localhost src]# tar -zxvf mcrypt-2.6.8.tar.gz

2.配置编译环境

[root@localhost mcrypt-2.6.8]# ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt --prefix=/usr/local/mcrypt

出现报错:You need at least libmhash 0.8.15,如下图所示

 源码包安装LNMP

 解决方法如下:

[root@localhost mcrypt-2.6.8]# export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/mhash/lib
[root@localhost mcrypt-2.6.8]# export LDFLAGS="-L/usr/local/mhash/lib/ -I/usr/local/mhash/include/"
[root@localhost mcrypt-2.6.8]# export CFLAGS="-I/usr/local/mhash/include/"

 打开/etc/ld.so.conf,在文件之后,添加一行:/usr/local/lib,执行 ldconfig  ,重新编译即可

[root@localhost mcrypt-2.6.8]# vi /etc/ld.so.conf
[root@localhost mcrypt-2.6.8]# ldconfig

 3.编译安装

[root@localhost mcrypt-2.6.8]# make&&make install

源码包安装LNMP

 

五、配置PHP

1、安装PHP依赖包

[root@localhost src]# yum install -y php-mcrypt libmcrypt libmcrypt-devel php-pear libxml2 libxml2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel

2.解压php

[root@localhost src]# tar -zxvf php-7.1.24.tar.gz

3.配置php编译环境

[root@localhost src]# cd php-7.1.24/

[root@localhost php-7.1.24]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts

4.编译安装php

[root@localhost php-7.1.24]# make&&make install

 源码包安装LNMP

 

 5.配置php配置文件

[root@localhost php-7.1.24]# cp php.ini-production /usr/local/php/etc/php.ini

[root@localhost php-7.1.24]#ln -s /usr/local/php/etc/php.ini /etc/php.ini
[root@localhost php-7.1.24]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.conf

修改php服务启动的用户为nginx

[root@localhost php-7.1.24]# vi /usr/local/php/etc/php-fpm.conf

23 user = nginx
24 group = nginx

复制php启动脚本到/etc/init.d/

[root@localhost php-7.1.24]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

添加执行权限,将php服务加入到开机启动项

[root@localhost php-7.1.24]# chmod a+x /etc/init.d/php-fpm
[root@localhost php-7.1.24]# chkconfig --add php-fpm
[root@localhost php-7.1.24]# chkconfig php-fpm on

启动php服务

[root@localhost php-7.1.24]# service php-fpm start
Starting php-fpm done

查看php服务是否启动成功

[root@localhost php-7.1.24]# ps aux|grep php-fpm

源码包安装LNMP

 

 [root@localhost php-7.1.24]# netstat -tlnp|grep php-fpm

源码包安装LNMP

 

 编辑nginx配置文件,增加对index.php的支持

[root@localhost php-7.1.24]# vim /usr/local/nginx/conf/nginx.conf

44 location / {
45 root html;
46 index index.php index.html index.htm;
47 }

重启nginx服务

[root@localhost php-7.1.24]# service nginx restart
Restarting nginx (via systemctl): [ OK ]

编写php探测文件,查询nginx是否支持php

[root@localhost php-7.1.24]# echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php

客户端浏览器,访问服务端index.php报错,查看日志文件/usr/local/nginx/logs/error.log,报错如下

2020/07/01 11:00:54 [error] 95280#0: *7 open() "/usr/local/nginx/html/favicon.ico" failed (2: No such file or directory),

解决方法:

编辑nginx配置文件,去掉65~72行前面的注释,并修改70行脚本文件路径

[root@localhost logs]# vim /usr/local/nginx/conf/nginx.conf

66 location ~ .php$ {
67 root html;
68 fastcgi_pass 127.0.0.1:9000;
69 fastcgi_index index.php;
70 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_na me;
71 include fastcgi_params;
72 }

重启nginx服务

[root@localhost nginx]# service nginx restart

再次通过客户端浏览器,访问服务端index.php页面正常如下图所示

源码包安装LNMP

 

 至此LNMP整个环境就搭建完成了

原文链接: https://www.cnblogs.com/happysnowy/p/13199606.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    源码包安装LNMP

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/361005

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午1:36
下一篇 2023年3月2日 下午1:36

相关推荐