雖然說是非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 出錯問題