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依賴包 http://ftp.pcre.org/pub/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的保存退出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM