最近在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
# 啟動nginx:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意:-c 指定配置文件的路徑,不加的話水评,nginx會自動加載默認(rèn)路徑的配置文件猩系,可以通過 -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)說明:
--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)路徑就會是 prefix/conf/nginx.conf
--pid-path =path 配置nginx.pid file的路徑偏窝,一般來說,進(jìn)程在運(yùn)行的時(shí)候的時(shí)候有一個(gè)進(jìn)程id武学,這個(gè)id會保存在pid file里面祭往,默認(rèn)的pid file的放置位置是prefix/logs/nginx.pid
--error-log-path=path 設(shè)置錯誤日志的存放路徑,如果不指定火窒,就默認(rèn) prefix/logs/error.log
--http-log-path= path 設(shè)置http訪問日志的路徑硼补,如果不指定,就默認(rèn) prefix/logs/access.log
--user=name 設(shè)置默認(rèn)啟動進(jìn)程的用戶熏矿,如果不指定已骇,就默認(rèn) nobody
--group=name 設(shè)置這個(gè)用戶所在的用戶組,如果不指定票编,依然是nobody
--with-http_ssl_module 開啟HTTP SSL模塊褪储,使NGINX可以支持HTTPS請求。需要安裝了OPENSSL
--with-http_flv_module
--with-http_stub_status_module 啟用 "server status" 頁
--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 用來實(shí)現(xiàn)四層協(xié)議的轉(zhuǎn)發(fā)、代理或者負(fù)載均衡等
自動啟動nginx:
編譯安裝需要自己進(jìn)行設(shè)置方可自動啟動
# 設(shè)置nginx自啟動昔榴,在/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
文件說明
[Unit]部分
Description:描述服務(wù)
After:依賴辛藻,當(dāng)依賴的服務(wù)啟動之后再啟動自定義的服務(wù)
[Service]部分
Type=forking是后臺運(yùn)行的形式
ExecStart為服務(wù)的具體運(yùn)行命令(需要根據(jù)路徑適配)
ExecReload為重啟命令(需要根據(jù)路徑適配)
ExecStop為停止命令(需要根據(jù)路徑適配)
PrivateTmp=True表示給服務(wù)分配獨(dú)立的臨時(shí)空間
注意:啟動碘橘、重啟、停止命令全部要求使用絕對路徑
[Install]部分
服務(wù)安裝的相關(guān)設(shè)置吱肌,可設(shè)置為多用戶
# 設(shè)置了自啟動后痘拆,任意目錄下執(zhí)行
systemctl enable nginx.service
# 啟動nginx服務(wù)
systemctl start nginx.service
# 設(shè)置開機(jī)自動啟動
systemctl enable nginx.service
# 停止開機(jī)自動啟動
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í)行配置腳本來進(jìn)行編譯預(yù)處理
./configure --help
#不添加 --with-gd ,添加的 --with-gd將無法安裝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ù)處理可能會出現(xiàn)一些error,一般是缺少依賴包的原因氮墨,根據(jù)提示安裝即可
特別強(qiáng)調(diào)一個(gè)錯誤错负,編譯預(yù)處理出現(xiàn)include/curl 不存在錯誤,但是明明已經(jīng)安裝了curl勇边,可能出現(xiàn)的問題是所需的curl目錄信息不在include目錄下犹撒,
錯誤: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 不存在錯誤粒褒,curl的版本與php擴(kuò)展的curl不兼容识颊,下載更的php版本(php7.2)
4.預(yù)處理通過之后就可以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的端口號等信息奕坟,如果你修改默認(rèn)的9000端口號需在這里改祥款,再改nginx的配置
6.啟動
#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)錯
問題: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庫擴(kuò)展
因?yàn)閜hp編譯安裝直接使用--with gd沒有安裝jpeg圖片處理擴(kuò)展月杉,所以在這里手動編譯安裝
?進(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
安裝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