一.源码编译

在企业中,我们常常是需要什么模块才会添加什么模块,而源码编译就可以让我们按需安装。

yum安装的优缺点:

  • yum安装的优点:安装东西,方便快捷,特别是不用考虑包依赖。
  • yum安装的缺点:安装过程,人为无法干预,不能按需安装。源里面有什么就安装什么,安装的版本也比较低。

源码安装的优缺点

  • 源码安装的优点,编译安装过程,可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。
  • 源码安装的缺点,由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题,linux系统中有的包,一个依赖一个,可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题,得不尝失。源码安装的多了,不敢升级系统,升级系统,可能会导致以前手动装的东西,不能用。

二.源码编译PHP

第一步:编译三部曲

物理机里:将所需要的安装包发送给hang1

[root@foundation11 Desktop]# scp -r libmcrypt-2.5.8-9.el6.x86_64.rpm   libmcrypt-devel-2.5.8-9.el6.x86_64.rpm   php-5.6.35.tar.bz2  root@172.25.11.1:/mnt

在hang1将得到的php源码包进行解压(#加强系统对支持字符编码转换的功能)

root@hang1 ~]# cd /mnt
[root@hang1 mnt]# ls
[root@hang1 mnt]# tar jxf  php-5.6.35.tar.bz2
[root@hang1 mnt]# ls
[root@hang1 ~]# mkdir /usr/local/lnmp
[root@hang1 mnt]# cd php-5.6.35
[root@hang1 php-5.6.35]# yum install gcc -y

没图,记得创建文件夹哟……

./configure --prefix=/usr/local/lnmp/php   \  #安装的位置--with-config-file-path=/usr/local/lnmp/php/etc \   #php配置文件的位置--with-openssl   \   #支持openssl加密 --with-snmp  \--with-gd  \--with-zlib  \--with-curl   \--with-libxml-dir\    --with-png-dir    \     #php处理图片的格式--with-jpeg-dir  \--with-freetype-dir   \    --with-gmp      \--with-gettext      \--with-pear     \--enable-mysqlnd         \           #支持mysql数据库之间建立联系--with-mysql=mysqlnd     \  --with-mysqli=mysqlnd     \        --with-pdo-mysql=mysqlnd      \--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           #加密算法

会发现要解决依赖性(很多,这里我就只举个例子):

去解决依赖性,然后继续预编译,一般是解决一个依赖性,在去试着预编译,直到不出错。

所要解决的依赖性安装包如下:

73  yum install xml2-config-devel -y
75  yum install openssl-devel -y
77  yum install libcurl-devel -y
79  yum whatprovides */jpeglib.h
80  yum install libjpeg-turbo-devel-1.2.1-1.el6.x86_64  -y
82  yum whatprovides */png.h
83  yum install -y libpng-devel-1.2.49-1.el6_2.x86_64
86  yum install freetype-devel -y
88  yum whatprovides */gmp.h
89  yum install gmp-devel-4.3.1-7.el6_2.2.x86_64  -y
91  cd /mnt
93  yum install libmcrypt-*      #因为这个我传过来的包在/mnt下
95  cd -
96  yum install net-snmp-devel -y

成功预编译完成的界面如下:

在这里教大家一个小窍门,在源码编译的时候,遇到以.h结尾的依赖性,可以用yum whatprovides去寻找这个文件属于那个包,然后安装符合自己版本的安装包。如果不是以.h结尾,我们可以在这个依赖性名称后面加上-devel,然后去安装这个包。比如现在告诉你你的依赖性是freetype,我们就可以yum install freetype-devel -y。一般来说,这种方法可以解决百分之七八十的依赖性。

[root@hang1 php-5.6.35]# make && make install

第二步:配置php

[root@hang1 php-5.6.35]# useradd nginx     #创建nginx用户
[root@hang1 php-5.6.35]# cd /usr/local/lnmp/php/     #进入安装目录查看
[root@hang1 php]# ls
bin  etc  include  lib  php  sbin  var

[root@hang1 php]# cd etc
[root@hang1 etc]# ls
pear.conf  php-fpm.conf.default
[root@hang1 etc]# cp php-fpm.conf.default  php-fpm.conf
[root@hang1 etc]# vim php-fpm.conf
在里面搜寻/user,保证user=nginx和group=nginx
搜寻/php-fpm ,将pid = run/php-fpm.pid接口打开

[root@hang1 ~]# cd /mnt
[root@hang1 mnt]# cd php-5.6.35
[root@hang1 php-5.6.35]# cp php.ini-
php.ini-development  php.ini-production
[root@hang1 php-5.6.35]# cp php.ini-production   /usr/local/lnmp/php/etc/php.ini

[root@hang1 php-5.6.35]# cd /usr/local/lnmp/php/etc/
[root@hang1 etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini
[root@hang1 etc]# vim php.ini
将时区修改为上海
date.timezone = Asia/Shanghai



第三步:将php启动的脚本复制到系统启动脚本的默认目录下并测试php是否可以成功启动

root@hang1 etc]# cd -
/mnt/php-5.6.35
[root@hang1 php-5.6.35]# cd sapi/
[root@hang1 sapi]# ls
[root@hang1 sapi]# cd fpm/
[root@hang1 fpm]# ls
[root@hang1 fpm]# vim init.d.php-fpm   #证明这是脚本启动文件


启动脚步内容

[root@hang1 fpm]# cp init.d.php-fpm   /etc/init.d/php-fpm
[root@hang1 fpm]# chmod +x  /etc/init.d/php-fpm
[root@hang1 fpm]# /etc/init.d/php-fpm  start    #启动php
Starting php-fpm  done
[root@hang1 fpm]# netstat -tnlp
php的端口号是9000


php源码编译成功的结果主要看php服务是否可以开启且端口是否是9000

三.源码编译nginx

第一步:编译三部曲

物理机:

scp -r nginx-1.16.0.tar.gz  root@172.25.11.1:/mnt


hang1虚拟机:

[root@hang1 fpm]# cd /mnt
[root@hang1 mnt]# ls
[root@hang1 mnt]# tar zxf nginx-1.16.0.tar.gz
[root@hang1 mnt]# cd nginx-1.16.0

[root@hang1 nginx-1.16.0]# ./configure --prefix=/usr/local/lnmp/nginx   \  #表示编译到的路径
--with-http_ssl_module  \   #ssl模块,加密
--with-http_stub_status_module \   #状态监控
--with-threads   \   #会有线程值
--with-file-aio    \  #文件io
--user=nginx  --group=nginx


出现错误:

解决依赖性:

[root@hang1 conf]# yum install pcre-devel -y

在去编译,成功,界面如下:

[root@hang1 nginx-1.16.0]# make && make install

第二步:配置nginx

root@hang1 nginx-1.16.0]# cd /usr/local/lnmp/nginx/
[root@hang1 nginx]# ls
[root@hang1 nginx]# cd conf/
[root@hang1 conf]# ls
[root@hang1 conf]# vim nginx.conf

user  nginx  nginx;location / {root   html;index  index.php index.html index.htm;}location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;include        fastcgi_conf;}

第三步:开启nginx并编辑nginx的默认发布文件

[root@hang1 conf]# ln -s /usr/local/lnmp/nginx/sbin/nginx  /usr/local/sbin/
[root@hang1 conf]# nginx
[root@hang1 conf]# nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

[root@hang1 conf]# pwd
/usr/local/lnmp/nginx/conf
[root@hang1 conf]# cd ../html/
[root@hang1 html]# ls
50x.html  index.html
[root@hang1 html]# vim index.html
[root@hang1 html]# cat index.html
<?php
phpinfo()
?>
[root@hang1 html]# nginx -s reload


查看端口:

ps aux查看进程:

浏览器能查看php页面,证明成功:

四.源码编译mysql

注意:mysql的源码编译需要借助cmake。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

第一步:编译三部曲

安装mysql,虚拟机的磁盘最少是20G,不够20G需要添加磁盘(本机够了),为了加快编译速度,我们将cpu增加到2个,内存提高到2048(原来是1024)

物理机:

scp  -r cmake-2.8.12.2-4.el6.x86_64.rpm  mysqloost-5.7.17.tar.gz    root@172.25.11.1:/mnt

262  cd /mnt
263  tar zxf mysql-boost-5.7.17.tar.gz
270  yum install cmake-2.8.12.2-4.el6.x86_64.rpm
271  cd mysql-5.7.17/

cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql    \      #安装目录
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data       \    #数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock   \   #Unix socket 文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1     \             #安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1    \          #安装 innodb 存储引擎
-DDEFAULT_CHARSET=utf8   \                  使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci     \        #校验字符
-DEXTRA_CHARSETS=all             #安装所有扩展字符集

出错:

加上之后的编译模块如下所示:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql
-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DWITH_BOOST=boost/boost_1_59_0/

报错:

 281  yum install ncurses-devel -y282  yum install gcc gcc-c++283  rm -fr CMakeCache.txt

报错:

 286  yum install -y bison287  rm -fr CMakeCache.txt


此时再去编译成功。

这一步时间略长:

 290  make && make install

完成界面如下所示:

第二步:将编译完成的mysql启动脚本复制到系统启动服务的默认目录中

[root@hang1 mysql-5.7.17]# cd support-files/
[root@hang1 support-files]# ls
[root@hang1 support-files]#cp mysql.server  /etc/init.d/mysqld
[root@hang1 support-files]#chmod +x /etc/init.d/mysqld
[root@hang1 support-files]#/etc/init.d/mysqld start


第三步:将编译完成的默认配置文件放在/etc/my.cnf

[root@hang1 support-files]# cp /etc/my.cnf /etc/my.cnf.back     #备份原本的文件
[root@hang1 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y

第四步:编辑my.cnf

[root@hang1 support-files]# vim /etc/my.cnf18 basedir = /usr/local/lnmp/mysql    19 datadir = /usr/local/lnmp/mysql/data22 socket = /usr/local/lnmp/mysql/data/mysql.sock

第五步:对mysql服务进行限制(利用mysql用户),将mysql服务的工作空间局限在mysql用户的家目录中,创建mysql组和mysql用户

[root@hang1 support-files]# groupadd -g 27 mysql
[root@hang1 support-files]# useradd -u 27 -g 27 mysql
[root@hang1 support-files]# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)

修改权限

  • 将因为mysql服务将要往这个目录中写数据,保证其有执行权限

[root@hang1 support-files]# chown mysql.mysql /usr/local/lnmp/mysql -R
[root@hang1 support-files]# cd /usr/local/lnmp/mysql
[root@hang1 mysql]# ll

第六步:编辑环境变量,查看mysql初始密码以及修改权限

将编译生成的mysql二进制命令放进系统的环境变量文件中,保证可以直接调用该二进制命令

[root@hang1 mysql]# vim ~/.bash_profil
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@hang1 mysql]# source ~/.bash_profile

[root@hang1 mysql]# mysqld --user=mysql --initialize     #查看库mysql的初始化密码
wEfHkhry6f+f

注意:如果这条命令执行不成功,则进入data目录下,将里面的东西都删掉,再次执行则成功

修改权限

  • 将mysql目录下的所有文件的所有组都改为mysql,只有data目录的所有人是mysql

第七步:mysql安全初始化

[root@hang1 support-files]# /etc/init.d/mysqld start
[root@hang1 support-files]# mysql -uroot -p    # 利用初始化密码进入数据库

注意:如果不能成功进入

显示:ERROR 2002 (HY000): Can’t connect to local MySQL server through
socket ‘/usr/local/lnmpmysql/data/mysql.sock’

(1)可能是mysql.sock目录位置没有写对,可能在编译的时候就编写错误,也可能在my.conf文件中的socket:指定位置没有写对

(2)有可能是3306端口被占用了

安全初始化:

[root@hang1 support-files]#mysql_secure_installation
[root@hang1 support-files]# mysql -uroot -p
[root@hang1 support-files]# netstst -tnlp

这张图是我后面截的,所以还有memcached的端口,总之,不必在意~

LNMP架构的搭建——源码编译(PHP,nginx,Mysql)相关推荐

  1. LNMP架构的搭建--源码编译(MYSQL,PHP,nginx)

    1.基础知识 1. LNMP架构: LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指P ...

  2. lnmp架构搭建—源码编译(nginx、mysql、php)

    含义及理解: LNMP = Linux+Nginx+Mysql+PHP:LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL ...

  3. 源码编译安装Nginx及网站服务配置

    文章目录 一.Nginx概述 1.1 Nginx概述 1.2 Nginx和Apache的区别 1.3Nginx和Apache的优缺点差异 1.4Nginx的进程 二.源码编译安装nginx服务 2.1 ...

  4. centos 访问网页重启php_php项目上线基于docker运行php+源码编译实现Nginx+阿里云RDS连接实现...

    项目背景: 公司项目上线要求运维把上线工作做好,并实现稳定性运行,活不多说,干! 环境要求: CentOS Linux release 7.2.1511 (Core) docker 版本:19.03. ...

  5. LANMP框架搭建——源码编译

    所需要的源码包: mariadb-5.5.46-linux-x86_64.tar.gz httpd-2.4.9.tar.bz2 php-5.4.26.tar.bz2 nginx-1.8.1.tar.g ...

  6. linux源码编译安装nginx

    1.从nginx的官方网站下载nginx的安装源码包,要下载.gz格式的包才是linux安装包 网址http://nginx.org/download/ wget http://nginx.org/d ...

  7. Ubuntu 16.04源码编译安装nginx 1.10.0

    一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...

  8. linux安装nginx源码,CentOS7源码编译安装Nginx

    一.安装步骤 1.下载 nginx 源码包 官网$ wget http://nginx.org/download/nginx-1.16.0.tar.gz 2.解压 nginx 压缩包$ tar -zx ...

  9. Linux 利用nginx源码编译安装nginx

    环境 1, CentOS 7 2, nginx 1.13.6 步骤 1,编译前准备 yum install pcre* openssl openssl-devel zlib zlib-devel 2, ...

最新文章

  1. Simulink仿真教程4---模块库介绍
  2. 二级域名做SEO优化有怎样的利弊关系?
  3. xgboost keras_用catboost lgbm xgboost和keras预测财务交易
  4. 阿里的技术愿景_技术技能的另一面:领域知识和长期愿景
  5. testng连接MySQL_Selenium+TestNG实战-8-连接数据库方法去验证文章是否发布
  6. dhcp服务器批量修改ip租期,dhcp服务器的ip地址租期默认是多久
  7. a byte of python2微盘_《A Byte of Python》与《简明 Python 教程》PDF版
  8. 软件测试——集成测试篇
  9. IMX6UL时钟配置
  10. Visual Studio Code配置Salesforce Apex开发环境
  11. C语言100题练习计划 31——计算两数的和与差(函数实现)
  12. 房租客手机端个人中心html页面
  13. CentOS 7 安装好后,无法使用小键盘的解决办法
  14. jqury ajax 直接获取数据库信息,使用jQuery Ajax从数据库加载信息
  15. Linux如何设置开机自启动
  16. js正则匹配以{开头,以}结尾怎么写?
  17. O2O营销结构思维导图模板分享
  18. 微信小程序---数据存储
  19. 字节跳动开源内部微服务中间件 CloudWeGo
  20. linux,/etc/passwd,/etc/shadow字段解释

热门文章

  1. 抖音短视频怎样引流?有哪些方法?
  2. cadence SPB17.4 - allegro - 尺寸标注
  3. Laxcus大数据管理系统2.0(11)- 第九章 容错
  4. 【树形DP】爱心蜗牛
  5. springboot gradle 打包排除依赖 排除文件
  6. win10 localhost拒绝访问
  7. easyUI可编辑表格编辑器添加事件
  8. 文档大小超出上传限制怎么办_压缩PDF大小该怎么操作?压缩PDF的软件有哪些?...
  9. php xampp教程,XAMPP如何下载及安装
  10. 推荐几款不错的 Mac 文字处理器