微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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就安装好了,接下来就是配置PHPNginx 

  

四、 PHPNginx配置

  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 出错问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐