ubuntu下編譯安裝nginx以及php7筆記

最近在ubuntu上部署php的開發(fā)環(huán)境花了不少時(shí)間,在安裝成功后,又安裝了一遍,在這做個(gè)日志,總結(jié)一下經(jīng)驗(yàn)

加載依賴包:

sudo apt-get update

sudo apt-get install libxml2-dev

sudo apt-get install build-essential

sudo apt-get install openssl

sudo apt-get install libssl-dev

sudo apt-get install make

sudo apt-get install curl

sudo apt-get install libcurl4-gnutls-dev

sudo apt-get install libjpeg-dev

sudo apt-get install libpng-dev

sudo apt-get install libtool-bin

sudo apt-get install bison

sudo apt-get install zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev? libgeoip-dev libgoogle-perftools-dev libperl-dev libtool

sudo apt-get install libxml2-dev?build-essential?openssl??libssl-dev?make?curl??libcurl4-gnutls-dev?libjpeg-dev??libpng-dev?libtool-bin?bison??zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev? libgeoip-dev libgoogle-perftools-dev libperl-dev libtool?



編譯安裝nginx:

1、下載新版本,到官網(wǎng)復(fù)制下載鏈接

wget http://nginx.org/download/nginx-1.17.4.tar.gz

2、解壓tar -zxvf nginx-1.17.4.tar.gz

3、編譯安裝

# 進(jìn)入解壓目錄:

cd nginx-1.17.4.tar.gz

# 配置并編譯安裝nginx:

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-mail=dynamic

sudo make

sudo make install

# 啟動(dòng)nginx:

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#注意:-c 指定配置文件的路徑,不加的話,nginx會(huì)自動(dòng)加載默認(rèn)路徑的配置文件,可以通過(guò) -h查看幫助命令。

# 查看nginx進(jìn)程:

ps -ef|grep nginx

# 建立軟鏈接(由于/usr/local/bin包含于$PATH當(dāng)中,這樣就不需要額外的設(shè)置環(huán)境變量了,這意味著可以在其他路徑下直接運(yùn)行nginx命令)

#(創(chuàng)建鏈接)

sudo ln -s /opt/dotnet/dotnet /usr/local/bin

編譯選項(xiàng)說(shuō)明:

--prefix=path 如果在編譯的不指定安裝位置,那么默認(rèn)的位置/usr/local/nginx目錄

--sbin-path=path 設(shè)置nginx執(zhí)行腳本的位置,這里如果設(shè)置在path變量里面,就可以在bash環(huán)境下,任意使用nginx命令,默認(rèn)位置prefix/sbin/nginx? 注意這里的prefix是在配置文件里面配置的路徑

--conf-path=path 配置nginx配置文件的路徑,如果不指定這個(gè)選項(xiàng),那么配置文件的默認(rèn)路徑就會(huì)是 prefix/conf/nginx.conf

--pid-path =path 配置nginx.pid file的路徑,一般來(lái)說(shuō),進(jìn)程在運(yùn)行的時(shí)候的時(shí)候有一個(gè)進(jìn)程id,這個(gè)id會(huì)保存在pid file里面,默認(rèn)的pid file的放置位置是prefix/logs/nginx.pid

--error-log-path=path 設(shè)置錯(cuò)誤日志的存放路徑,如果不指定,就默認(rèn) prefix/logs/error.log

--http-log-path= path 設(shè)置http訪問(wèn)日志的路徑,如果不指定,就默認(rèn) prefix/logs/access.log

--user=name 設(shè)置默認(rèn)啟動(dòng)進(jìn)程的用戶,如果不指定,就默認(rèn) nobody

--group=name 設(shè)置這個(gè)用戶所在的用戶組,如果不指定,依然是nobody

--with-http_ssl_module 開啟HTTP SSL模塊,使NGINX可以支持HTTPS請(qǐng)求。需要安裝了OPENSSL

--with-http_flv_module

--with-http_stub_status_module 啟用 "server status" 頁(yè)

--without-http_gzip_module 禁用 ngx_http_gzip_module. 如果啟用,需要 zlib

--without-http_ssi_module 禁用 ngx_http_ssi_module

--without-http_referer_module 禁用 ngx_http_referer_module

--without-http_rewrite_module 禁用 ngx_http_rewrite_module. 如果啟用需要 PCRE 。

--without-http_proxy_module 禁用 ngx_http_proxy_module

--without-http_fastcgi_module 禁用 ngx_http_fastcgi_module

--without-http_memcached_module 禁用 ngx_http_memcached_module

--without-http_browser_module 禁用 ngx_http_browser_module

--http-proxy-temp-path=PATH 設(shè)置路徑到the http proxy temporary files

--http-fastcgi-temp-path=PATH 設(shè)置路徑到Set path to the http fastcgi temporary files

--without-http 禁用 HTTP server

--with-mail 啟用 IMAP4/POP3/SMTP 代理模塊

--with-mail_ssl_module 啟用ngx_mail_ssl_module

--with-openssl=DIR 設(shè)置路徑到OpenSSL library sources

--with-stream 用來(lái)實(shí)現(xiàn)四層協(xié)議的轉(zhuǎn)發(fā)、代理或者負(fù)載均衡等

自動(dòng)啟動(dòng)nginx:

編譯安裝需要自己進(jìn)行設(shè)置方可自動(dòng)啟動(dòng)

# 設(shè)置nginx自啟動(dòng),在/lib/systemd/system/ 目錄下創(chuàng)建一個(gè)服務(wù)文件

vim /lib/systemd/system/nginx.service

內(nèi)容如下:

[Unit]

Description=nginx - high performance web server

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]

WantedBy=multi-user.target

文件說(shuō)明

[Unit]部分

Description:描述服務(wù)

After:依賴,當(dāng)依賴的服務(wù)啟動(dòng)之后再啟動(dòng)自定義的服務(wù)

[Service]部分

Type=forking是后臺(tái)運(yùn)行的形式

ExecStart為服務(wù)的具體運(yùn)行命令(需要根據(jù)路徑適配)

ExecReload為重啟命令(需要根據(jù)路徑適配)

ExecStop為停止命令(需要根據(jù)路徑適配)

PrivateTmp=True表示給服務(wù)分配獨(dú)立的臨時(shí)空間

注意:?jiǎn)?dòng)、重啟、停止命令全部要求使用絕對(duì)路徑

[Install]部分

服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶

# 設(shè)置了自啟動(dòng)后,任意目錄下執(zhí)行

systemctl enable nginx.service

# 啟動(dòng)nginx服務(wù)

systemctl start nginx.service

# 設(shè)置開機(jī)自動(dòng)啟動(dòng)

systemctl enable nginx.service

# 停止開機(jī)自動(dòng)啟動(dòng)

systemctl disable nginx.service

# 查看狀態(tài)

systemctl status nginx.service

# 重啟服務(wù)

systemctl restart nginx.service

# 查看所有服務(wù)

systemctl list-units --type=service

PHP編譯安裝

1.下載、解壓

#版本根據(jù)自身需求下載

wget http://am1.php.net/distributions/php-7.2.12.tar.gz

sudo tar-zxvf php-7.2.12.tar.gz

cd php-7.2.12/

2.查看安裝幫助,執(zhí)行配置腳本來(lái)進(jìn)行編譯預(yù)處理

./configure --help

#不添加 --with-gd ,添加的 --with-gd將無(wú)法安裝jpeg的擴(kuò)展

./configure --prefix=/usr/local/php --with-curl --with-freetype-dir? --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip

編譯預(yù)處理可能會(huì)出現(xiàn)一些error,一般是缺少依賴包的原因,根據(jù)提示安裝即可

特別強(qiáng)調(diào)一個(gè)錯(cuò)誤,編譯預(yù)處理出現(xiàn)include/curl 不存在錯(cuò)誤,但是明明已經(jīng)安裝了curl,可能出現(xiàn)的問(wèn)題是所需的curl目錄信息不在include目錄下,

錯(cuò)誤:configure: error: Cannot find OpenSSL's libraries

原文:https://blog.csdn.net/qq_16399991/article/details/73604324

apt-get install build-essential libexpat1-dev libgeoip-dev libpng-dev libpcre3-dev libssl-dev libxml2-dev rcs zlib1g-dev libmcrypt-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libwebp-dev pkg-config


找到curl的目錄夾所在,將curl目錄文件復(fù)制到include中(遇到時(shí)使用的方法)或創(chuàng)建軟連接

已安裝crul卻一直出現(xiàn)include/curl 不存在錯(cuò)誤,curl的版本與php擴(kuò)展的curl不兼容,下載更的php版本(php7.2)


4.預(yù)處理通過(guò)之后就可以make編譯了

sudo make

sudo make install

5.配置php

編譯安裝成功后,一般可以在usr/local找到安裝的php/

/php.ini

# cp php.ini-development /usr/local/php/lib/php.ini

//php-fpm

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

# cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm 或cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

需要注意的是php7中www.conf這個(gè)配置文件配置phpfpm的端口號(hào)等信息,如果你修改默認(rèn)的9000端口號(hào)需在這里改,再改nginx的配置

6.啟動(dòng)

#cd /usr/local/php/etc/php-fpm.d/

#sudo vim www.conf

//修改

user = www

group = www

#adduser www

# /etc/init.d/php-fpm start ? ? //或者

#sudo /usr/local/php/sbin/php-fpm


nginx配置

server{ listen 80;

? ? ? ? server_name? www.test.com;

? ? ? ? root? "/var/www/html/test/public";

? ? ? ? index?? index.php index.htm index.html;

? ? ? ? charset UTF-8;

? ? ? ? location / {

? ? ? ? ? ? if (!-e $request_filename) {

??????????????????? #rewrite ^(.*)$ /index.php?s=/$1 last; #//tp隱藏index.php

??????????????????? #break;?

???????????????????? rewrite ^.*$ /index.php;

? ? ? ? ? ? }?

? ? ? ? }?

? ? ? ? location ~ \.php$ {

? ? ? ? ? ? fastcgi_pass? 127.0.0.1:9000;

? ? ? ? ? ? fastcgi_index? index.php;

? ? ? ? ? ? fastcgi_param? SCRIPT_FILENAME? $document_root$fastcgi_script_name;

? ? ? ? ? ? include? ? ? ? fastcgi_params;

? ? ? }?

}

安裝php7.3編譯擴(kuò)展報(bào)錯(cuò)

問(wèn)題:configure.ac:20: error: Autoconf version 2.68 or higher is required

下載更高版本的autoconf,2.68及以上

#sudo ./configure --with-php-config=/usr/local

#sudo make && make install

安裝Gd庫(kù)擴(kuò)展

因?yàn)閜hp編譯安裝直接使用--with gd沒(méi)有安裝jpeg圖片處理擴(kuò)展,所以在這里手動(dòng)編譯安裝

?進(jìn)入php安裝包ext/gd

make clean

apt-get install libfreetype6-dev

?./configure --with-php-config=/usr/local/php/bin/php-config --with-png-dir --with-freetype-dir --with-jpeg-dir --with-zlib-dir --with-gd

make?

make install

php.ini 添加extension=gd.so

安裝yaf擴(kuò)展

1.下載yaf擴(kuò)展

#wget http://pecl.php.net/get/yaf-3.0.8.tgz

#tar -zxvf yaf-3.0.8.tgz

#cd yaf-3.0.7/

#sudo /usr/local/php/bin/phpize

#sudo ./configure --with-php-config=/usr/local/php/bin/php-config

#sudo make && make install

在php.ini中加入

[yaf]

yaf.library = NULL

yaf.cache_config = 0

yaf.name_suffix = 1

yaf.name_separator = ""

yaf.forward_limit = 5

yaf.use_namespace = 1

yaf.use_spl_autoload = 0

extension=yaf.so

具體配置的需要參考yaf手冊(cè)

安裝redis服務(wù)、redis擴(kuò)展

1.下載redis服務(wù),解壓并安裝:

#sudo tar -zxvf redis-4.0.9.tar.gz

#cd redis-4.0.9/

#sudo make

#sudo make install

2.下載安裝redis擴(kuò)展,并編譯安裝

#wget http://pecl.php.net/get/redis-4.3.0.tgz

#sudo tar -zxvf redis-4.3.0.tgz

#cd redis-4.3.0/

#sudo /usr/local/php/bin/phpize

#sudo ./configure --with-php-config=/usr/local/php/bin/php-config

#sudo make

#sudo make install

3.最后老樣子,在php.ini加上:

extension=redis.so

第一次分享自己的經(jīng)驗(yàn),希望能幫助到大家!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 修改默認(rèn)主機(jī)名稱 [root@iZuf60c5bxd15kr9gycvv6Z~]# hostnamectl set...
    慕凡夫閱讀 2,255評(píng)論 0 1
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_閱讀 2,057評(píng)論 0 3
  • 一、配置防火墻,開啟80端口、3306端口 CentOS 7.0默認(rèn)使用的是firewall作為防火墻,這里改為i...
    ArleyDu閱讀 2,194評(píng)論 0 0
  • 1、不是我不想學(xué),而是我看不到希望 孩子在成長(zhǎng)過(guò)程中都會(huì)遇到很多失敗的事,只有失敗,才能學(xué)會(huì)成長(zhǎng)。但有些孩子性格自...
    gaosijiaoyu閱讀 291評(píng)論 0 0
  • 思量許久 創(chuàng)業(yè)初期青黃不接之時(shí) 如何 搞點(diǎn)副業(yè)補(bǔ)貼家用?掐指一算全身上下并無(wú)過(guò)人之處 年紀(jì)到時(shí)一大把了……智力拼不...
    金鋼牛閱讀 355評(píng)論 0 0

友情鏈接更多精彩內(nèi)容