阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 16.04 下源码配置LNMP开发环境

469次阅读
没有评论

共计 9436 个字符,预计需要花费 24 分钟才能阅读完成。

最近把系统升级到 Ubuntu 16.04 长期支持版,重新部署了 LNMP 环境

约定几个目录  源码目录  /usr/local/src 

                   MySQL     /usr/local/mysql

                    php  /usr/local/php

                   nginx  /usr/local/nginx 

mysql   版本 5.7.14

必备的包和工具

gcc/g++:MySQL 5.6 开始,需要使用 g ++ 进行编译。

bison:MySQL 语法解析器需要使用 bison 进行编译。

libncurses5-dev:用于终端操作的开发包.(注:Debian/Ubuntu 下需要安装 libncurses5-dev;RedHat 下需要安装 ncurses-devel)
zlib:MySQL 使用 zlib 进行压缩

功能需要的包

libxml2:用于 XML 输入输出方式的支持。

openssl:使用 openssl 安全套接字方式通信。

dtrace:用于诊断 MySQL 问题。

cmake:MySQL 5.5 开始,使用 cmake 进行工程管理,cmake 需要 2.8 以上版本。

sudo apt-get install gcc

sudo apt-get install libxml2

sudo apt-get install  libncurses5-dev bison 

安装 cmake      下载地址  https://cmake.org/download/

建立源码包目录

mkdir /usr/local/src

解压

tar zxvf cmake-3.6.1.tar.gz 

mv cmake-3.6.1 /usr/local/src

cd cmake-3.6.1

编译安装

./configure   make && make install

加入环境变量

vim ~/.bashrc

添加

export PATH=”/usr/local/src/cmake-3.6.1/bin/cmake:$PATH”

从 MySQL 5.7.5 开始 Boost 库是必需的,下载 Boost 库 http://sourceforge.net/projects/boost/files/boost/

tar zxvf boost_1_59_0.tar.gz 

mv boost_1_59_0 /usr/local/

创建 Mysql 系统用户组和用户,及数据库存放目录:

mkdir -p /usr/local/mysql/

mkdir -p /usr/local/mysql/data/

根据需要另外创建 mysql socket 文件保存目录,如果要重新指定存放位置,需要重新编译

groupadd mysql    添加 mysql 用户组

useradd mysql -g mysql  添加 mysql 用户 并指定 mysql 用户组

chown -R mysql:mysql /usr/local/mysql/  改变指定目录以及其子目录下权限为 mysql 用户和 mysql 用户组

mysql 官方下载地址

http://dev.mysql.com/downloads/mysql/   选择可编译版本

tar zxvf mysql-5.7.14.tar.gz

cd mysql-5.7.14

编译

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1  -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DCOMPILATION_COMMENT=”string”-DENABLED_PROFILING=1 -DOPTIMIZER_TRACE=1 -DWITH_DEBUG=1 -DWITH_BOOST=/usr/local/boost

make && make install

创建数据库服务

在 5.5 和 5.6 版本中,mysql 数据库是使用 mysqld_db_install 命令进行初始化的;在 5.7 之后,数据库初始化发生了改变,需要 mysqld 命令进行初始化:

/usr/local/mysql/bin/mysqld  –initialize   –user=mysql  –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data/

— 以 root 初始化操作时要加 –user=mysql 参数,生成一个随机密码(注意保存登录时用)

数据库初始化后,再次修改权限:

chown -R mysql:mysql /usr/local/mysql/data  

准备配置文件并启动 mysql 服务

复制默认配置文件到 /etc

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

改变文件权限为 mysql 用户和组

sudo chown mysql:mysql /etc/my.cnf

简单修改一下修改配置文件

vim /etc/my.cnf

[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock

[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
basedir = /usr/local/mysql
datadir  = /usr/local/mysql/data

后台启动 mysql

/usr/local/mysql/bin/mysqld_safe –user –defaults-file/etc/my.cnf

查看 mysql 端口或进程

netstat -altn | grep 3306 或  ps -ef|grep mysql

tcp6       0      0 :::3306                 :::*                    LISTEN 

用初始随机密码登入后修改密码

/usr/local/mysql/bin/mysql -uroot -p

mysql> set password for root@localhost=password(‘ 新密码 ’);

Query OK, 0 rows affected, 1 warning (0.00 sec)

添加服务,复制启动脚本到 /etc/init.d 目录

cd /usr/local/mysql/
cp support-files/mysql.server /etc/init.d/mysql

设置权限

sudo chmod 755 /etc/init.d/mysql

安装 ubuntu 启动服务管理

sudo apt-get install sysv-rc-conf 

sudo sysv-rc-conf mysql on

将 mysql.service 变得可用

systemctl enable mysql.service

开启或关闭 mysql 服务

sudo /etc/init.d/mysql {stop|start}    或者 sudo service mysql start | stop

配置环境变量

sudo vim ~/.bashrc

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

export PATH

Nginx     版本 1.10.1

准备工作

需要 zlib 库      http://www.zlib.net/

tar -xvf zlib-1.2.8.tar.gz -C /usr/local/src

mv /usr/local/src/zlib-1.2.8  /usr/local/src/zlib

生成共享库

cd /usr/local/src/zlib

./configure –shared  && make test && make install

cp zutil.h /usr/local/include

cp zutil.c /usr/local/include

mkdir /usr/local/zlib

./configure –prefix=/usr/local/zlib

添加到动态链接库

Add /usr/local/zlib/lib to /etc/ld.so.conf

ldconfig

需要 pcre 库      http://www.pcre.org/ 

tar zxvf pcre-8.39.tar.gz -C /usr/local/src

mv /usr/local/src/pcre-8.39 /usr/local/src/prce

cd /usr/local/prce

./configure && make && make install

ssl 功能需要 openssl 库  http://www.openssl.org/source/   下载 1.0.2g 版本

tar zxvf openssl-1.0.2g.tar.gz -C /usr/local/src

cd /usr/local/openssl-1.0.2g

./config –prefix=/usr/local/ shared

make test && make install

添加到动态链接库

Add /usr/local/lib to /etc/ld.so.conf 

ldconfig

添加 nginx 用户和用户组

groupadd www    

useradd www -g www  

chown -R www:www /usr/local/nginx  

nginx 官网 http://nginx.org/

tar zxvf nginx-1.10.1.tar.gz -C /usr/local/src

cd /usr/local/src/nginx-1.10.1 

编译安装

 ./configure –prefix=/usr/local/nginx –with-openssl=/usr/local/src/openssl-1.0.2g –with-pcre=/usr/local/src/pcre –with-zlib=/usr/local/src/zlib –pid-path=/usr/local/nginx/nginx.pid –with-http_ssl_module –with-http_stub_status_module 

make && make install

启动 nginx 服务

/usr/local/nginx/sbin/nginx  

查看 nginx 进程

ps -ef | grep nginx

关闭,重启服务

/usr/local/nginx/sbin/nginx -s stop, quit, reopen, reload

cp /usr/local/nginx/sbin/nginx  /etc/init.d/nginx

更新权限

sudo chmod 755 /etc/init.d/nginx

sudo sysv-rc-conf nginx on

配置环境变量

sudo  ~/.bashrc

export PATH=”/usr/local/nginx/sbin/:$PATH”

配置 nginx 支持 php

vim /usr/local/nginx/conf/nginx.conf

location / {

root /www;

index index.html index.htm index.php;

}

location ~ \.php$ {

root /www;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;

include fastcgi_params;

}

// 注:黑体 www 为 web 根目录,改成对应目录即可

PHP 

apt-get 安装 php 7 php5.6 

php 7

apt-get install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

php 5.6

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php

sudo apt-get update 

sudo apt-get install php5.6

sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml

5.6.25 编译安装

安装必要的依赖

t1lib(php 字体类扩展)版本 t1lib-5.1.2.tar.gz  http://www.t1lib.org/

解压

tar zxvf t1lib-5.1.2.tar.gz -C /usr/local/src

cd /usr/local/src t1lib-5.1.2

./configure 

提示错误 : X11/Xaw/Label.h: No such file or directory

缺少 libxaw 库

sudo apt-get install libxaw7-dev 

./configure && make without_doc && make install

官网下载 php5.6.25 源码包

tar zxvf php-5.6.23.tar.gz -C /usr/local/src

cd /usr/local/src/

编译安装

 ./configure –prefix=/usr/local/php  –with-config-file-path=/usr/local/php/etc –with-mysql-sock=/usr/local/mysql/data/mysql.sock   –enable-mbstring  –enable-mysqlnd –with-mysql=mysqlnd –with-mysqli=/usr/local/mysql/bin/mysql_config –with-mysqli=mysqlnd  –with-pdo-mysql=mysqlnd –enable-fpm   –with-fpm-group=www  –with-fpm-user=www  –enable-bcmath  –enable-bcmath  –enable-soap –enable-calendar    –with-pcre-dir=/usr/local/src/pcre   –with-mcrypt –enable-xml  –with-xmlrpc  –with-xsl –enable-sockets  –enable-opcache –with-gd  –with-jpeg-dir  –with-png-dir  –with-xpm-dir  –with-freetype-dir   –enable-gd-native-ttf  –enable-dtrace  –with-openssl –with-kerberos –with-openssl-dir=/usr/local/src/openssl-1.0.2g   –enable-zip –with-zlib-dir=/usr/local/src/zlib –with-t1lib=/usr/local/share/t1lib  –with-libxml-dir –with-iconv-dir –with-libzip  –enable-intl –with-curl=DIR  –enable-ftp

提示 Cannot find sys/sdt.h which is required for DTrace support  

根据官方提示 dTrace 某些开发版需要安装 SystemTap SDT 开发包

apt-cache search SystemTap SDT

apt-get install systemtap-sdt-dev

提示 curl 编译失败

apt-get install  libcurl4-gnutls-dev

apt-get install curl php5.6-curl

提示重新安装 libzip

apt-get install libzip-dev

清除之前编译的可执行文件及配置文件,再次编译

 make clean

 ./configure –prefix=/usr/local/php  –with-config-file-path=/usr/local/php/etc –with-mysql-sock=/usr/local/mysql/data/mysql.sock   –enable-mbstring  –enable-mysqlnd –with-mysql=mysqlnd –with-mysqli=/usr/local/mysql/bin/mysql_config –with-mysqli=mysqlnd  –with-pdo-mysql=mysqlnd –enable-fpm   –with-fpm-group=www  –with-fpm-user=www  –enable-bcmath  –enable-bcmath  –enable-soap –enable-calendar    –with-pcre-dir=/usr/local/src/pcre   –with-mcrypt –enable-xml  –with-xmlrpc  –with-xsl –enable-sockets  –enable-opcache –with-gd  –with-jpeg-dir  –with-png-dir  –with-xpm-dir  –with-freetype-dir   –enable-gd-native-ttf  –enable-dtrace  –with-openssl –with-kerberos –with-openssl-dir=/usr/local/src/openssl-1.0.2g   –enable-zip –with-zlib-dir=/usr/local/src/zlib –with-t1lib=/usr/local/share/t1lib  –with-libxml-dir –with-iconv-dir –with-libzip  –enable-intl –with-curl=DIR –with-imap –with-imap-ssl  –enable-ftp

测试

make && make test

测试通过进行安装

make install

配置 php 随系统启动

从源文件复制 php.ini 到目录

cp php.ini-development /usr/local/php/etc/php.ini

复制 php-fpm.conf

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

php-fpm 随系统自启动

sudo cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

sudo sysv-rc-conf php-fpm on

sudo cp ./sapi/fpm/init.d.php-fpm /usr/local/php/sbin/init.d.php-fpm

sudo chmod 755 /etc/init.d/php-fpm

增加读和执行权利

cd /usr/local/php/sbin/

chmod 755 init.d.php-fpm

php 脚本服务开启,停止,重启,状态命令

./init.d.php-fpm {start|stop|force-quit|restart|reload|status}

加入系统变量 

vim  ~/.bashrc

export PATH=”/usr/local/php/bin/:$PATH”

export PATH=”/usr/local/php/sbin/:$PATH”

export PATH

 

改变 PHP 用户组为 www

chown -R www:www /usr/local/php

查看端口

sudo netstat -tulpn 

php-fpm.conf 配置

pm.max_children = 5    

pm.start_servers = 2     在启动时启动的子进程数量

pm.min_spare_servers = 1    处于空闲 ”idle” 状态的最小子进程,如果空闲进程数量小于这个值,那么相应的子进程会被创建

pm.max_spare_servers = 3    最大空闲子进程数量,空闲子进程数量超过这个值,那么相应的子进程会被杀掉。

在 nginx web 目录建立 phpinfo() 文件 , 浏览器输出这个画面表示配置成功

Ubuntu 16.04 下源码配置 LNMP 开发环境

php5-fpm 在使用 service 调用的时候从新 reload 和 restart 会出现不能装载情况产考如下文章 http://www.linuxidc.com/Linux/2016-07/133682.htm

LNMP 安装参考如下文章

Ubuntu 14.04 搭建 LNMP  http://www.linuxidc.com/Linux/2015-05/116933.htm

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL  http://www.linuxidc.com/Linux/2014-05/102351.htm

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

在部署 LNMP 的时候遇到 Nginx 启动失败的 2 个问题 http://www.linuxidc.com/Linux/2013-03/81120.htm

Ubuntu 安装 Nginx php5-fpm MySQL(LNMP 环境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm

更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135381.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计9436字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994404
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...