linux在非root权限无外网(只有内网的生产环境)情况下安装nginx+mysql+php

  虽然说是非root权限,但是编译php所需要的依赖包还是需要root权限的。

  安装之前先保证linux有gcc和g++,因为很多东西都需要这两个库,如果没有,运行以下命令

  yum install -y gcc gcc-c++

  一般linux里面都会有,如果已经存在,它会报已经存在无法安装

一、安装nginx

  1. 安装nginx前,我们需要安装3个依赖包zlib、pcre、openssl(此需要root权限)

  yum install -y zlib pcre openssl

  2. 如果上面没有无法yum,那就外部下载zlib、pcre、openssl的依赖包再安装,如果yum成功,请跳过此步

    2.1 安装 pcre(make的时候此需要root权限)

      下载pcre依赖包 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre

      上传到目录里      //这边目录为/home/nginx/(是nginx用户)

      cd /home/nginx/

      tar -zxvf pcre-8.36.tar.gz    

      cd pcre-8.36

      ./configure
      make
      make install  

    2.2 安装openssl(make的时候此需要root权限)

      下载openssl依赖包 http://distfiles.macports.org/openssl/
      上传到目录里       //这边目录为/home/nginx/(是nginx用户)

      cd /home/nginx/
      tar -zxvf openssl-1.0.1e.tar.gz
      cd openssl-1.0.1e
      ./config
      make
      make install

    2.3 安装zlib(make的时候此需要root权限)

      下载zlib依赖包 http://www.zlib.net/fossils/
      上传到目录里       //这边目录为/home/nginx/(是nginx用户)

      cd /home/nginx/
      tar -zxvf zlib-1.2.3.tar.gz
      cd zlib-1.2.3
      CFLAGS="-O3 -fPIC" ./configure
      make
      make install

  3. 安装nginx

  下载nginx http://nginx.org/en/download.html
  上传到目录里       //这边目录为/home/nginx/(是nginx用户)

  tar -zxvf nginx-1.8.0.tar.gz
  cd nginx-1.8.0
  ./configure --prefix=/home/nginx/nginx-server      //--prefix=要安装的目录
  make
  make install

  

  

  //如果是有进行第2步的操作,安装nginx的时候,配置时使用下面的命令,其余命令一样
  ./configure --prefix=/home/nginx/nginx-server --with-pcre=/home/nginx/pcre-8.36 --with-zlib=/home/nginx/zlib-1.2.3 --with-openssl=/home/nginx/openssl-1.0.1e

  //--with-pcre=pcre安装的路径地址  --with-zlib=zlib安装的路径地址  --with-openssl=openssl安装的路径地址

  

  4. 检测nginx是否成功
  cd /home/nginx/nginx-server/sbin
  ./nginx -v 查看版本,检测是否安装成功

二 安装mysql

  1. 安装mysql前先安装cmake小工具,使用cmake来编译(此需要root权限)

  yum install -y cmake

  2.  如果上面没有无法yum,那就外部下载cmake再安装,如果yum成功,请跳过此步(make的时候此需要root权限)

  下载cmake https://cmake.org/files/

  上传到目录里       //这边目录为/home/mysql/(是mysql用户)

  cd /home/mysql/

  tar -xvzf cmake-3.6.1.tar.gz

  cd cmake-3.6.1

  ./bootstrap

  gmake

  make install

  3. 安装mysql

  下载mysql http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/

  上传到目录里 //这边目录为/home/mysql/(是mysql用户)
  tar -zxvf mysql-5.6.43.tar.gz
  cd mysql-5.6.43
  cmake -DCMAKE_INSTALL_PREFIX=/home/mysql/mysql-server   //-DCMAKE_INSTALL_PREFIX=要安装的目录 
  make
  make install

  4. 配置 mysql

  cd /home/mysql/mysql-server
  rm -f /etc/my.cnf      // 删除系统自带的mysql配置文件
  ./scripts/mysql_install_db

  将 ./support-files/mysql.server 复制到 /etc/init.d/ 下
  cp support-files/mysql.server /etc/init.d/mysqld

  修改 linux 的环境变量
  vim /etc/profile          //vim不行的可以使用vi命令

  将指针移动到最后一行,然后输入i就可以在最后一行编辑操作了,然后在/etc/profile文件的最后加入一句
  export PATH="/home/mysql/mysql-server/bin:$PATH"
  然后摁住“Esc”退出当前编辑操作,再摁住“Shift”+“:” 并输入“wq” 保存并退出

  source /etc/profile        // 这一句是让配置立即生效
  service mysqld start        // 启动 mysql

  下面就可以操作数据库了

  5. 修改数据库密码 

  mysql -u root -p
                //密码为空,所以在输入密码的地方直接敲回车即可
  use mysql;       //选择数据库
  UPDATE user SET password=PASSWORD(‘newpasswd‘) WHERE user=‘root‘;   //修改密码,其中newpasswd即为你所要设的密码
  flush privileges;     //刷新,设置完需要刷新才能生效
  exit;            //退出

三、 安装php

  1. yum安装编译php过程所需要的编译工具和小程序(安装这些编译工具和小程序需要root权限)

  yum install -y autoconf libtool-ltdl-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel ncurses-devel libcap-devel sendmail pcre-devel libxslt-devel bzip2-devel diffutils unzip ntp bzip2 patch curl libjpeg libpng freetype libxslt libxml2 libxml2-devel

  //建议一个一个安装,防止出错

  2. 如果第一步中无法安装libxml2,请外部下载libxml2的依赖包并安装,如果已经安装libxml2,请跳过此步 

  安装libxml2(安装libxml2必须要root权限)

  下载libxml2 http://xmlsoft.org/sources/
  上传到目录里       //这边目录为/home/php/(是php用户,此用户不一定是php用户,可以是其他用户,其他用户即为其对应用户名为目录,因为linux创建用户的时候都会在/home目录产生对应的文件目录,而我们使用的用户即为在对应目录下面进行操作,根据公司所设置的用户来操作)

  cd /home/php/
  tar -zxvf libxml2-2.9.1.tar.gz
  cd libxml2-2.9.1
  ./configure--with-python=no
  make
  make install

  3. 安装 php

  下载php https://museum.php.net/php5/

  上传到目录里 //这边目录为/home/php/(是php用户)

  tar -zxvf php-5.3.27.tar.gz
  cd php-5.3.27
  ./configure --prefix=/home/php/php5 --with-config-file-path=/home/php/php5/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-sockets --enable-zip --enable-calendar --enable-bcmath --enable-soap --with-zlib --with-iconv --with-gd --with-xmlrpc --enable-mbstring --with-curl --enable-ftp --with-mcrypt --without-pear --with-freetype-dir --with-jpeg-dir --with-png-dir --disable-ipv6 --disable-debug --with-openssl          //--prefix=要安装的目录
  make
  make test      //test完之后,输入n
  make install

  

  //中途可能会出现libmcrypt的问题错误,如果出现,下载安装libmcrypt,安装过程如下:(安装libmcrypt必须要root权限) 

  下载libmcrypt http://soft.7dot.com/

  上传到目录里 //这边目录为/home/php/(是php用户)

  cd /home/php/
  tar -zxvf libmcrypt-2.5.8.tar.gz
  cd libmcrypt-2.5.8
  ./configure --prefix=/usr/local    //--prefix=要安装的目录
  make
  make install

到此为止,php就安装好了,接下来就是配置php和nginx 

  

四、 php和nginx配置

  1. php配置

  cp php.ini-development /home/php/php5/etc/php.ini
  cp /home/php/php5/etc/php-fpm.conf.default /home/php/php5/etc/php-fpm.conf

  

  vim /home/php/php5/etc/php.ini    //vim不行的可以使用vi命令

  打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。

  设置完毕保存并退出

  //vim或vi配置文件之后,输入“/cgi.fix_pathinfo/”即可找到,如果没找到,可以连续输入几次,然后在找到的那个地方,输入“i”指针即可进入当前行数进行编辑模式。修改完之后摁住“Esc”退出编辑模式,然后摁住“Shift”+“:” 并输入“wq” 保存并退出。

  注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:--with-config-file-path=/home/php/php5/etc 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意  

  vim /home/cib/php/etc/php-fpm.conf
  修改php-fpm.conf 的user和group为对应打开网站的用户和组(如果打开网站的用户和组是www,那就将nobody改成www,此处改为nginx)
  user = nginx
  group = nginx

 

  启动 php-fpm(必须root权限)
  /home/php/php5/sbin/php-fpm

  如果出现ERROR: unable to bind listening socket for address ‘127.0.0.1:9000‘: Address already in use 错误
  killall php-fpm
  再重新启动启动 php-fpm
  /home/php/php5/sbin/php-fpm

  2. nginx 配置

  cd nginx-server/conf/  (是nginx用户,启动nginx必须为nginx用户)

  vim nginx.conf

  将nginx.conf 中的http {}的末尾添加上

  include /home/nginx/nginx-server/conf.d/*.conf;    //必须先创建一个conf.d目录,*.conf为各个站点的nginx的配置文件

  保存并退出

  然后将conf.d目录下的各个.conf文件进行配置(此处用test.conf来替代)

  cd ..      //退出当前目录到前一个目录

  cd conf.d          //进入此目录下的conf.d目录

  cp /home/nginx/nginx-server/conf/nginx.conf /home/nginx/nginx-server/conf.d/test.conf    //复制nginx.conf文件到指定目录并改名为test.conf

  vim test.conf      //将test.conf目录里面全部删除并写入以下内容(vim不行的用vi命令,怎么编辑保存退出等参考前面配置php.ini和配置环境变量)

  server {
    listen 80;              //为对应的连接外网的端口号
    server_name localhost;         //为对应的域名,如果没有内网连接可以使用对应IP ,然后端口号80改为其他端口
    root html/test;            //网站安装的相对路径,因为这是直接安装在nginx底下的html目录下面,也可以直接路径,网站文件为test(测试命名,具体网站文件最好命名跟项目相关的)
    index index.html index.htm index.php;     //网站默认打开页面

    location ~ \.php$ {            //支持php的模块
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;     //$document_root 为前面root设置的路径
      include fastcgi_params;
    }
  }

  //此处需要注意的是非root权限无法使用1024以下的端口号

五、 测试

  1. 启动nginx(最好是用nginx用户)

  进入nginx启动地址

  cd /home/nginx/nginx-server/sbin/      //nginx用户,直接cd nginx-server/sbin/

  ./nginx      //启动nginx

  启动之前建议先./nginx -t查看下nginx配置文件是否正确

  ./nginx -s reload      //重启nginx。如果之前已经启动了nginx,就不宜使用./nginx命令启动,而应该用此处的命令,不然会出现端口报错

  2. 测验

  写一个index.php文件放在test网站目录下 

  index.php文件写入如下内容:
  <?php
    phpinfo();
  ?>

  然后通过域名打开,如果能够打开phpinfo的信息,即php配置信息,那就代表php安装配置成功。

  //由于这边还未有域名绑定,所以只能使用“IP:端口”的方式打开。

至此全部结束。

其余的一些小东西

  1. 使用端口号的使用,可能遇到防火墙阻止,即测试网站打不开,此时参考https://www.cnblogs.com/chenlizhi/p/6668656.html,进行设置端口号。

  2. 端口被占用问题,参考https://www.jianshu.com/p/8f6a42fb0654,或者参考https://blog.csdn.net/qq_27252133/article/details/53646986的第二个方法,进行杀进程处理

  3. mysql无法被外部IP连接,导致后期搭建php网站无法连接数据库,此时参考https://www.cnblogs.com/xiaochongzi/p/6627418.html,进行设置外网可以连接。

  安装步骤仅供参考,linux环境不一样,安装的情况可能也不一样,几个依赖包和库(就是必须使用root权限的)可以让拥有root权限的人员去帮忙安装,依赖包的路径可以自己定义,只要能够对应上相应的依赖包即可。一般生产环境是不使用root权限的,因为权限太高。

参考的文章:https://blog.csdn.net/nouswait/article/details/83105378   主要参考来源

      https://www.cnblogs.com/freeweb/p/5425554.html     次要参考来源

      https://blog.csdn.net/hometing218/article/details/79516686  安装cmake

      https://www.cnblogs.com/nucdy/p/5784809.html    修改数据库密码

      https://www.cnblogs.com/Erick-L/p/7066564.html     nginx多站点配置

      https://www.cnblogs.com/ghjbk/p/6728100.html    php-fpm 出错问题

      https://www.cnblogs.com/bjphp/p/8468330.html    vim的操作命令

      https://zhidao.baidu.com/question/584316536.html     vi的保存退出

原文地址:https://www.cnblogs.com/fudanchencds/p/10972602.html

时间: 2024-10-09 21:11:28

linux在非root权限无外网(只有内网的生产环境)情况下安装nginx+mysql+php的相关文章

Linux:在已安装nginx情况下安装nginx模块

在已安装nginx情况下安装nginx模块 nginx第三方模块安装方法: 代码如下: ./configure --prefix=/你的安装目录  --add-module=/第三方模块目录 1..查看nginx编译安装时的命令,安装了哪些模块 代码如下: #/usr/local/webserver/nginx/sbin/nginx -V 2.切换到root用户 代码如下: #su root 3.在已安装nginx情况下安装nginx模块(username为系统用户名) 代码如下: # sudo

Linux下非root权限安装与使用GDAL库的方法

学习GDAL的话推荐两个网站. GDAL的官方文档:www.gdal.org 李民录老师的博客:http://blog.csdn.net/liminlu0314/article/category/777646 下面进入正题. 笔者的系统为RHEL4. 建议Linux的使用者习惯非root权限的操作,这是一个好习惯,在工作中会很有帮助. 首先安装GDAL依赖库PROJ.4和GEOS. PROJ.4是提供投影坐标系相关操作的库,GEOS是提供空间分析计算相关的库.都是开源的项目,可以自行Google

以非root权限安装nginx及运行

本章主要讲如何在无root权限(包含无sudo权限)条件下于centos命令行中安装nginx以及在大于1024的端口(这里用8080)上运行. 1. 安装 两种方式,一是下载预编译好的rpm包安装,二是下载源码后自己编译. 如果是通过下载rpm方式安装,首先要找对应centos版本的rpm包. 通过命令 cat /etc/*release* 的输出可以看到centos系统的版本,在我能访问的某个云主机上显示如下: 使用curl -G <URL>命令来浏览网址http://nginx.org/

Android 上实现非root的 Traceroute -- 非Root权限下移植可执行二进制文件 脚本文件

作者 : 万境绝尘 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/36438365 示例代码下载 : -- CSDN : http://download.csdn.net/detail/han1202012/7639253; -- GitHub : https://github.com/han1202012/TracerouteAndBusybox ; 1. 原理思路 文件权限修改无法实现 : 如果 没有 root 权限,

利用ssh反向代理以及autossh实现从外网连接内网服务器

1. 描述一下目前的机器状况,梳理梳理: 机器 IP 用户名 备注 A 10.21.32.106 gdut728 目标服务器,处于内网 B 123.123.123.123 root 外网服务器,相当于桥梁的作用 PS:123.123.123.123只是我随意起的,大家请别攻击别人的服务器啊啊啊 2. 解决方法: 通俗地说:就是在机器A上做到B机器的反向代理:然后在B机器上做正向的代理实现本地端口的转发 2.1 实现前的准备 每台都要安装ssh的客户端. 在这里我使用的是centos7,都自带ss

简单物联网:外网访问内网路由器下树莓派Flask服务器

最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器(在树莓派下搭flask在其他随笔有说明),在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花的光照然后就不行了: 所以这是一个外网访问内网的梗,解决方案如下: 1.先在本地term命令下查看ifconfig(windows为ifconfig):找到自己的本机ip,我的树莓派被分配ip为192.168.1.103 2.tplink路由器的管理地址是1

网络 解决外网与内网或内网之间的通信,NAT穿透

在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translator),网络地址转换.顾名思义,它是一种把内部私有网络IP地址翻译成公有网络IP地址的技术,如图5-1所示.NAT是在IP地址日益缺乏的情况下产生的,它的主要目的是使地址能够重用[9].  图5-1 NAT模型  IP地址分为五类:A类,B类,C类,D类,E类(这里不考虑保留的IP地址).A.B.C类

怎样从外网访问内网Memcached数据库

外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Memcached数据库 默认安装的Memcached数据库端口是11211. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer acce

怎样从外网访问内网Rails

外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口是3000. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信息 在holer官网上申请专属的holer access