编译安装LNMP全程实录

2023-11-09

此次是在CentOs 7.4上进行安装配置,先把编译环境配置好:

	yum -y install gcc automake autoconf libtool make
	yum install gcc gcc-c++

准备一些软件的安装包:

安装包 地址 用途
php-7.1.6.tar.bz2 http://cn2.php.net/distributions/php-7.1.6.tar.bz2 后端语言
nginx-1.12.2.tar.gz http://nginx.org/download/nginx-1.12.2.tar.gz 服务器
mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 数据库
openssl-1.0.2n.tar.gz https://www.openssl.org/source/openssl-1.0.2n.tar.gz nginx扩展,安全套接字层密码库
pcre-8.41.tar.gz ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz nginx扩展,支持rewrite功能
zlib-1.2.9.tar.gz http://www.zlib.net/fossils/zlib-1.2.9.tar.gz nginx扩展,gzip压缩

将表中安装包使用tar命令解压,.tar.gz格式可使用-xf参数解压,.tar.bz2可使用-jxvf参数解压,如果tar.bz2解压报错:
tar: bzip2: Cannot exec: No such file or directory
说明没有安装bzip2,使用yum安装:
yum install bzip2

#现在进行nginx安装:
先安装扩展:
pcre

cd pcre-8.41 
./configure 
make
make install

zlib

cd zlib-1.2.9
./configure 
make 
make install

openssl

cd openssl-1.0.2n
./config 
make
make install

nginx
添加nginx使用的用户组:

groupadd nginx
useradd -g nginx nginx -s /bin/false

编译nginx(下一篇博文有详细编译参数解析):

	cd nginx-1.12.2
	./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=nginx --group=nginx --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.2n --with-zlib=/usr/local/src/zlib-1.2.9  --with-pcre=/usr/local/src/pcre-8.41
make
make install

这样就安装好了,使用/usr/local/nginx/sbin/nginx即可启动nginx服务。
在浏览器中输入服务器地址出现“Welcome to nginx!”提示,即说明nginx正常运行:
这里写图片描述
接下来设置nginx开机启动
编辑启动文件:vi /etc/init.d/nginx
写入下面的内容:

#!/bin/bash

# nginx Startup script for the Nginx HTTP Server

# it is v.0.0.2 version.

# chkconfig: - 85 15

# description: Nginx is a high-performance web and proxy server.

#              It has a lot of features, but it's not for everyone.

# processname: nginx

# pidfile: /var/run/nginx.pid

# config: /usr/local/nginx/conf/nginx.conf

nginxd=/usr/local/nginx/sbin/nginx

nginx_config=/usr/local/nginx/conf/nginx.conf

nginx_pid=/var/run/nginx.pid

RETVAL=0

prog="nginx"

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ [${NETWORKING} = "no"] ] && exit 0

[ -x $nginxd ] || exit 0

# Start nginx daemons functions.

start() {

if [ -e $nginx_pid ];then

   echo "nginx already running...."

   exit 1

fi

   echo -n $"Starting $prog: "

   daemon $nginxd -c ${nginx_config}

   RETVAL=$?

   echo

   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx

   return $RETVAL

}

# Stop nginx daemons functions.

stop() {

        echo -n $"Stopping $prog: "

        killproc $nginxd

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}

# reload nginx service functions.

reload() {

    echo -n $"Reloading $prog: "

    #kill -HUP `cat ${nginx_pid}`

    killproc $nginxd -HUP

    RETVAL=$?

    echo

}

# See how we were called.

case "$1" in

start)

        start

        ;;

stop)

        stop

        ;;

reload)

        reload

        ;;

restart)

        stop

        start

        ;;

status)

        status $prog

        RETVAL=$?

        ;;

*)

        echo $"Usage: $prog {start|stop|restart|reload|status|help}"

        exit 1

esac

exit $RETVAL

赋予文件执行权限:
chmod 775 /etc/init.d/nginx
设置开机启动:
chkconfig nginx on
重启:
/etc/init.d/nginx restart
将nginx服务加入chkconfig管理列表:
chkconfig --add /etc/init.d/nginx

现在可以使用service nginx restart来重启服务了

#现在进行Mysql安装:
添加mysql使用的用户组:

groupadd mysql
useradd -g mysql mysql  -s /bin/false

将mysql目录移动到默认安装目录:
mv -R /usr/lcoal/src/mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
并修改权限:
chown -R mysql:mysql /usr/local/mysql
进入mysql目录:
cd /usr/local/mysql
执行安装脚本:
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
复制mysql到服务自动启动里面
cp support-files/mysql.server /etc/init.d/mysqld
修改权限为755,增加执行权限:
chmod 755 /etc/init.d/mysqld
添加为开机自启服务:
chkconfig --add mysqld
设定mysqld在各等级为on:
chkconfig mysqld on
启动mysql:
service mysqld start
在执行安装脚本的步骤中,输出日志中有设置密码的命令提示:
这里写图片描述
执行./bin/mysqladmin -u root -h 主机名 password 'new-password'
再测试是否设置成功:./bin/mysql -uroot -p[new-password]
现在将mysql命令加入环境变量:
/etc/profile文件末尾添加一行:export PATH=$PATH:/usr/local/mysql/bin
使配置立刻生效:source /etc/profile
接下来登录mysql后执行:
grant all privileges on *.* to root@'%' identified by 'root';
flush privileges```使数据库可以远程连接。
最后把myslq的库文件链接到系统默认的位置:

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

重启mysql就好了:service mysqld restart

#最后安装PHP
依赖包太多,就yum安装吧:

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

编译

	./configure \
	--prefix=/usr/local/php \
	--with-config-file-path=/etc \
	--enable-fpm \
	--with-fpm-user=nginx \
	--with-fpm-group=nginx \
	--enable-inline-optimization \
	--disable-debug \
	--disable-rpath \
	--enable-shared \
	--enable-soap \
	--with-libxml-dir \
	--with-xmlrpc \
	--with-openssl \
	--with-mcrypt \
	--with-mhash \
	--with-pcre-regex \
	--with-sqlite3 \
	--with-zlib \
	--enable-bcmath \
	--with-iconv \
	--with-bz2 \
	--enable-calendar \
	--with-curl \
	--with-cdb \
	--enable-dom \
	--enable-exif \
	--enable-fileinfo \
	--enable-filter \
	--with-pcre-dir \
	--enable-ftp \
	--with-gd \
	--with-openssl-dir \
	--with-jpeg-dir \
	--with-png-dir \
	--with-zlib-dir \
	--with-freetype-dir \
	--enable-gd-native-ttf \
	--enable-gd-jis-conv \
	--with-gettext \
	--with-gmp \
	--with-mhash \
	--enable-json \
	--enable-mbstring \
	--enable-mbregex \
	--enable-mbregex-backtrack \
	--with-libmbfl \
	--with-onig \
	--enable-pdo \
	--with-mysqli=mysqlnd \
	--with-pdo-mysql=mysqlnd \
	--with-zlib-dir \
	--with-pdo-sqlite \
	--with-readline \
	--enable-session \
	--enable-shmop \
	--enable-simplexml \
	--enable-sockets \
	--enable-sysvmsg \
	--enable-sysvsem \
	--enable-sysvshm \
	--enable-wddx \
	--with-libxml-dir \
	--with-xsl \
	--enable-zip \
	--enable-mysqlnd-compression-support \
	--with-pear \
	--enable-opcache

如果报错:error: mcrypt.h not found,则依次执行下面两个yum安装


yum install -y epel-release
yum install -y libmcrypt-devel

安装
make && make install
配置环境变量:
/etc/profile末尾添加:
export PATH=$PATH:/usr/local/php/bin
使得改动立即生效:
source /etc/profile
配置php-fpm

cp php.ini-production /etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

启动php-fpm:
/etc/init.d/php-fpm start
添加为系统服务:

	chkconfig --add php-fpm
	chkconfig php-fpm on

重启php-fpm:

service php-fpm start

#配置nginx支持PHP:
vi /usr/local/nginx/conf/nginx.conf
取消下面这部分注释,并将fastcgi_param这一行改成下面代码提供的参数:

location ~ \.php$ {
	root html;
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
}

重启nginx和php-fpm:
service nginx start
service php-fpm start

#测试
在nginx安装目录中的html文件夹中新建一个php文件:
vi index.php
输入:
<?php phpinfo();

然后再在浏览器中访问http://–ip–/index.php,正常输出如下:
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译安装LNMP全程实录 的相关文章

  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 使用 DigitalOcean 在 Kubernetes 集群上为我的 Nginx-Ingress 生成通配符证书

    我遵循了这个 DigitalOcean 指南https www digitalocean com community tutorials how to set up an nginx ingress with cert manager on
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 使用函数的 SQL 查询 - 如何获取列表的最大计数

    如何查询 MAXIMUM COUNT 交易次数 我的代码如下 SELECT customer id COUNT customer id FROM rental GROUP BY customer id HAVING MAX COUNT cu
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 选择获取与 MySQL Group 中 max 对应的整行

    当我使用Max使用后查找特定 MySQL 组中字段的最大值GROUP BY 是否可以获取包含最大值的整行 我在处理一些论坛代码时偶然发现了这个线程 我想获取每个线程的最新帖子并将其显示在特定板的线程列表中 Quassnoi上面的回答对我非常
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行
  • NGinx $proxy_add_x_forwarded_for 和 real_ip_header

    我在 NGinx 下有一个 web 应用程序和另一个前端负载均衡器 如下所示 x x x x IP 地址 客户端 a a a a gt LB b b b b gt NGX c c c c gt WEBAPP d d d d 这是我的 NGi
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function

随机推荐

  • GPT专业应用:如何让GPT策划方案

    身为一名职场打工人 或多或少会面临需要写策划案的难题 不管是策划一场线下活动 还是策划业务发展的方向 甚至到生活中还需要策划婚礼 策划房屋装修 策划和朋友的聚会等等 那么如何快速积累经验 找准方向便成为了不可或缺的技能 在这里 我们将介绍如
  • python输出最长字符串_使用Python打印最长的字母子字符串,并打结...

    我将通过以下方式解决该问题 gt 让我们定义两个字符串 当前字母递增的字符串和当前最长的字符串 gt 两个字符串都以第一个字母初始化 这样我们就可以随时阅读他们的最后一封信 gt 然后遍历输入字符串s 从第二个字符开始 gt 如果当前字符c
  • 合并两个有序单链表(Java)

    思想 准备两个链表l1和l2 判断是否有链表为空 如果l1为空 则不用比较直接返回l2 如果l1为空 则直接返回l2 比较l1和l2节点 选出最小的那个节点 将该节点设为合并后的链表的head 头 节点 同时将指向该节点的l1或l2后移 方
  • 广告投放算法:受众行为分析与人群定向

    引言 物以类聚 人以群分 这句古语不仅揭示了物与人的自组织趋向 更隐含了 聚类 和 人群 之间的内在联系 例如在现代数字广告投放系统中 最为关键的 人群定向 功能正是通过 聚类 算法得以实现的 如果您厌倦了隔靴搔痒的空大宣传 不妨就随笔者一
  • 微信支付服务端开发总结

    原文链接 http blog csdn net baple article details 68059283 前言 最近应公司业务需求 把微信支付完成了 当然已经顺利上线 但是开发的过程是也是踩了很多坑 下面我就先说说开发流程 以及在开发中
  • Kotlin泛型的型变之路

    一 JAVA泛型的协变 简而言之 协变就是 如果A是B的子类 那么Generic a 就是Generic 实际上就是List a
  • SMT精密电阻对照表

    SMT 精密电阻对照表 代码 阻值 代码 阻值 代码 阻值 代码 阻值 01 100 27 187 53 348 79 649 02 102 28 191 54 357 80 665
  • head first 设计模式:策略模式

    策略模式 定义了算法族 分别封装起来 让他们之间可以互相替换 此模式让算法的变化独立于使用算法的客户 差不多应该是不固定模块的分离 当涉及 维护 时 为了 复用 reuse 目的而使用继承 结局并不完美 设计原则 找出应用中可能需要变化之外
  • CMOS图像传感器——了解光圈

    在之前有提到传感器英寸 也提到了曝光三要素之一的ISO 这里主要说明另外一个曝光三要素 光圈 在本文中 我们将介绍光圈及其工作原理 一 什么是光圈 光圈可以定义为镜头中的开口 光线通过该开口进入相机 类比眼睛是的工作原理 就容易理解了 当人
  • Java定时任务调度工具详解之Timer篇(初级)Timer函数的综合应用

    一 通过模拟两个机器人的定时行为来加深对Timer相关函数的理解 实现两个机器人第一个机器人会隔两秒打印最近一次计划的时间 执行内容 第二个机器人会模拟往桶里倒水 知道桶里的水满为止 代码示例 DancingRobot类 package c
  • ImageMagick 安装教程

    1 双击打开 ImageMagick exe 2 先点 I acccept 再点四次 Next 切记不要修改安装路径 3 默认勾选前两个 点Next 4 点Install 安装即可 之后点Next Finish就安装完了
  • 2022年“网络安全”赛项浙江省宁波市选拔赛任务书

    2022浙江省宁波市 网络安全 项目比赛任务书 A模块基础设施设置 安全加固 200分 A 1 登录安全加固 windows linux A 2 数据库加固 Linux A 3服务加固 SSH VSFTPD Linux A 4防火墙策略 L
  • student1和student2 和teacher 类,多线程问题

    参照例15 7 编写一个Java应用程序 要求有student1 student2和teacher 3个线程 其中 student1准备睡10分钟后再开始上课 student2准备睡1小时后再开始上课 teacher在输出3句 上课 后吵醒
  • 聊聊区块链--如何投资数字货币

    想知道更多关于区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 未经允许 拒绝转载 https www liankexing com note note page id 7071 html 1 比特币 bitcoin 比特币是
  • Unity Fixed Joint 固定关节组件详解

    Chinar blog www chinar xin Unity物理引擎 Fixed Joint 固定关节 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心创新
  • bash脚本-----在耗时任务中显示旋转器动画

    1 bin bash sleep 5 pid frames while kill 0 pid 2 gt 1 gt dev null do for frame in frames do printf r frame Loading sleep
  • C++课设-学生信息管理系统

    前言 上学期的一个简单的C 课设项目 代码在后面 附github项目链接 一 问题描述 建立学生信息数据 包括学号 姓名 性别 三科成绩 出生时间 年龄 必须计算得到 使用继承的方法构造至少3个类 即学生类 虚基类 一年级学生和二年级学生类
  • 输入一个矩阵,按照从外向里依顺序一次打印

    输入一个矩阵 按照从外向里以顺时针的顺序依次打印出每一个数字 例如 如果输入如下4 X 4矩阵 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1 2 3 4 8 12 16 15 14 13
  • Fedora 22安装后无法找到Realtek无线网卡的解决

    在主目录中建立一个文件夹 mkdir Reaktek 接着进入该目录 执行 git clone https github com lwfinger rtlwifi new git 会出现rtlwifi new的文件夹 进入文件夹 执行 ma
  • 编译安装LNMP全程实录

    此次是在CentOs 7 4上进行安装配置 先把编译环境配置好 yum y install gcc automake autoconf libtool make yum install gcc gcc c 准备一些软件的安装包 安装包 地址