[root@redhat7 ~]# wget http://am1.php.net/get/php-7.1.2.tar.gz/from/this/mirror
[root@redhat7 ~]# tar xzvf php-7.1.2.tar.gz
[root@redhat7 ~]# cd php-7.1.2/
[root@redhat7 ~]# ./configure --prefix=/usr/local/php --enable-fpm
[root@redhat7 php-7.1.2]# make&&make install
查看是否成功編譯安裝PHP
[root@redhat7 php-7.1.2]# php -v
PHP 7.1.2 (fpm-fcgi) (built: Apr 14 2017 20:21:53)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
編譯安裝完成後PHP不具備配置文件php.ini,此時只需復制php.ini-proction到 /usr/local/lib/php.ini即可,php.ini文件一般在/usr/local/lib/和/etc目錄下
[root@localhost php-7.1.2]# cp php.ini-proction /usr/local/lib/php.ini
[root@redhat7 php]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 20:59:49] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[14-Apr-2017 20:59:49] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[14-Apr-2017 20:59:49] ERROR: FPM initialization failed
啟動php-fpm發現缺乏配置文件/usr/local/php/etc/php-fpm.conf
此時只需復制php-fpm的配置文件在安裝php時提供的配置文件的模版/usr/local/php/etc/php-fpm.conf.default到相應/usr/local/php/etc/php-fpm.conf即可
[root@redhat7 etc]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 21:14:32] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/﹡.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[14-Apr-2017 21:14:32] ERROR: No pool defined. at least one pool section must be specified in config file
[14-Apr-2017 21:14:32] ERROR: failed to post process the configuration
[14-Apr-2017 21:14:32] ERROR: FPM initialization failed
[root@redhat7 etc]# cp php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@redhat7 etc]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@redhat7 etc]# /etc/init.d/php-fpm
[14-Apr-2017 21:23:02] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:23:02] ERROR: FPM initialization failed
[root@redhat7 etc]# netstat -nldp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# chmod a+x /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# ll /etc/init.d/php-fpm
-rwxr-xr-x 1 root root 2401 4月 14 21:26 /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm [14-Apr-2017 21:28:09] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:28:09] ERROR: FPM initialization failed
failed
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# kill 3721
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@redhat7 php-7.1.2]# service php-fpm status
php-fpm (pid 3927) is running...
[root@redhat7 php-7.1.2]# chkconfig --add php-fpm
[root@redhat7 php-7.1.2]# chkconfig php-fpm --level 345 on
配置nginx支持PHP
修改nginx的配置文件,支持php文件的解析,找到location的添加位置,在後面添加下面這個location
location ~ .php$ {
root /usr/share/nginx/html; #指定php的根目錄
fastcgi_pass 127.0.0.1:9000;#php-fpm的默認埠是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
『貳』 Django部署——uwsgi+Nginx(超詳細)
環境:
python3.6
centos 7
Django1.11
用Django寫了個小網站,只能在自己本地跑一跑!這怎麼行?聽說可以部署在雲伺服器上,這樣別人就可以訪問了!
從哪兒開始?就從Django開始吧!老規矩,按步驟:
這里不講Django項目實施過程,假設你已經寫了一個Django項目,並且在本地 127.0.0.1:8000 能夠跑起來。喏,給你個參考,項目大概長這樣:
也就是項目目錄下的settings.py文件,主要強調幾個地方:
①關閉DEBUG模式:
②修改ALLOWED_HOSTS:
③配置靜態文件存放路徑:
修改好配置之後執行:
這個沒什麼說的。。。在自己的雲伺服器上裝好這兩個工具
安裝好uwsgi後最好驗證一下,驗證方法:
創建一個test.py文件:
啟動uwsgi伺服器:
如果可以正常啟動而不報錯那就應該沒問題,不放心的話再在終端驗證一下:
在uwsgi.ini里進行如下配置:
找到nginx的配置文件夾,centos7的nginx配置文件在/etc/nginx下,該路徑下有一個nginx.conf總配置文件,還有兩個文件夾./conf.d、./default.d,我們將nginx.conf復制一份到conf.d文件夾下,命名為nginx.conf(或者項目名.conf)進行如下修改(根據中文注釋進行相應配置即可):
進入uwsgi.ini文件夾下執行:
在終端執行:
參考資料:
劉江的博客
博客園
知乎問答
無名Blog
自強學堂Django教程
Django文檔
empty_xl Blog
『叄』 Docker 入門 (07) 部署nginx 並且映射本地配置文件
目標:
1. 利用docker部署一個nginx容器
2.為nginx 容器設置配置文件 , 並且映射到宿主機(本機)
操作步驟:
1.拉取nginx鏡像,並嘗試簡單運行(忘記怎麼操作請參考第五節)
2.在本地新增配置文件 , 為了後面映射容器使用 ,我習慣是放到 /etc/docker/nginx-config , 按你個人運頃習慣新增
3.進入config ,我們需要創建一個簡單配置文件 , 這里就來個簡單的吧
4.因為我稍後需要佔用的是8080埠 , 請確認雲伺服器端是否開放
5. 萬事俱備 , 嘗試啟動吧
6. 使用你的 伺服器ip+8080埠訪問測試 , 看到您的寫的 index,html 內容, 代表啟動成功!
7.具體映射位置 可以 使用 docker exec -it [容野叢器ID] /bin/bash 命令去參考對應映射文件 ,原理就應該明白了
結語:
通過本節的 nginx 映射本地配置文件 , 應旁脊陸該掌握對docker映射文件的基本使用了 , 希望大家都把自己的nginx跑起來吧
『肆』 雲伺服器上搭建nginx+php,伺服器curl 127.0.0.1/index.php,可以訪問成功,綁定域名無法訪問
JavaScript Document
function show(str)
{
var str1="敗扮游td"+str;
var str="show"+str;
for (var i=1; i<18; i++)
{
var obj = document.getElementById('show'缺碧 + i.toString());
if (obj) obj.style.display = 'none'察銷;
}
document.getElementById(str).style.display="block";
}
『伍』 如何在伺服器上部署網站nginx
這個nginx集成環境有獨立的服務,可以開機運行,支持全部windows系統
PHPWAMP8.8.8.8n,這個環境的NGinx站點管理很強大,支持無限自定義
以下內容來自網路經驗裡面的介紹
小編發現最近PHPWAMP集成環境又更新了phpwamp8.8.8.8n版本
phpwamp8.8.8.8n一共集成了12個PHP版本和3個mysql版本,並且可以高度自定義,你可以定義任何版本,解壓後差不多1個G的大小,壓縮包確僅有幾十M,解壓即可使用,純綠色很方便,集成了apache和nginx等,支持asp、php、net
大家知道Nginx官方的windows版本用著很不穩定,時不時就會掛掉,而且默認安裝後也不像apache那樣有服務可以開機啟動,畢竟nginx最適合的還是在linux下,不過最近更新的這款phpwamp8.8.8.8n安裝後是有服務的,該軟體作者自己寫了一個Nginx服務,能開機啟動,而且還能給每個站點分配不一樣的進程,也可以隨意指定站點的php版本!最關鍵的是該服務啟動的php-cgi進程,就算你手動用殺毒軟體的任務管理器也關不掉!關掉後會自動恢復,而且網站服務依舊正常!!除非你自己點擊軟體界面上的卸載服務才會關閉,該保護功能可以對網站進程起到保護作用。
『陸』 使用Nginx搭建靜態網站
開始建站了,暫時還沒想要做些什麼東西。
Anyway,先搞個雲伺服器吧,那要怎麼搭建呢?先來個最簡單的。
Nginx 配置文件目錄一般在 /etc/nginx/ 下,打開 nginx.conf 文件可以看到配置:
當外網用戶訪問伺服器 Web 服務由 Nginx 提供,Nginx 需要配置靜態資源的路徑信息才能通過 URL 正確訪問到伺服器上的靜態資源。
當我們在伺服器上安裝並啟動 Nginx 之後,就可宏枝以通過 http://<域名或IP> 訪問我們的網頁了。所以,在瀏覽器中輸入 http://100.2.3.4 即可。
我們觀察到瀏覽器的地址變成了 http://100.2.3.4/index.html ,這頁面是安裝 Nginx 的默認站點,可以在 /usr/share/nginx/html 目錄下找到。在 nginx.conf 配置文件中,有一項 root /usr/share/nginx/html 的配置,意思是當外網訪問伺服器 跟目錄 時,Nginx 會將資源指向 /usr/share/nginx/html 的站點。
但如果輸入地址,無法打開(如下截圖)。
以阿里雲為例,需要在雲伺服器添加 「安全組規則」 ,添加並保存,重新刷新頁面就能打開了。
我習慣將前端靜態資源滾絕兄放置到伺服器的 /data/www 下,因此將配置修改為 root /data/www 。此時訪問 http://100.2.3.4 會指向 /data/www/index.html (在不配置 location 的 index 情況下,Nginx 默認配置是 index.html )。
由於我使用的是 Mac 機器,因此可以直接在系統終端使用 scp 命令將本地文件上傳到雲伺服器。
scp (secure )用於在 Linux 下進行遠程拷貝文件的命令。大襲類似於 cp ,只不過 cp 只能在本機進行拷貝,不能跨伺服器。 -r 表示遞歸復制整個目錄。
需要注意一下,下面兩種的區別:
其中 1️⃣ 得到的是 /data/www/dist ,而 2️⃣ 得到的是 /data/www 。前者表示將 dist 整個目錄拷貝至 /data/www 下。後者是把 dist 目錄下的所有子文件和子目錄都拷貝至 /data/www 。
換句話說就是,前者配置 root 的路徑應該是 /data/www/dist ,後者則為 /data/www 。
效果如下:
在瀏覽器中訪問 http://100.2.3.4 即可看到我們配置的網頁了。
最簡單的 Nginx 部署靜態網頁就完了,其他的下次再講...
The end.
『柒』 nginx+uwsgi 和nginx+gunicorn區別、如何部署
大家是採用的何種部署方式?
第一種,高並發穩定一點
我在很多的博客中都看過有關 Flask 應用的部署,也有很多博主在開博後都記錄了部署的教程,因為其中的坑可以說不少。一開始我在網上看到相比較與 Ubuntu , CentOS 因為更新少作為伺服器的操作系統會更加穩定。所以在第一次購買雲伺服器時,我選擇了 CentOS ,後來由於 CentOS 不同發行版的 Nginx 緣故,我又換成了 Ubuntu 的鏡像
首先呢,我們先來了解下關於Web伺服器與Web應用還有WSGI之間的聯系
WSGI (Web Server Gateway Interface),翻譯為 Python web 伺服器網關介面,即 Python 的 Web 應用程序(如 Flask )和 Web 伺服器(如 Nginx )之間的一種通信協議。也就是說,如果讓你的 Web 應用在任何伺服器上運行,就必須遵循這個協議。
那麼實現 WSGI 協議的web伺服器有哪些呢?就比如 uWSGI 與 gunicorn 。兩者都可以作為Web服檔世務器。可能你在許多地方看到的都是採用 Nginx + uWSGI (或 gunicorn )的部署方式。實際上,直接通過 uWSGI 或 gunicorn 直接部署也是可瞎蠢辯以讓外網訪問的,那你可能會說,那要 Nginx 何用?別急,那麼接來下介紹另一個Web伺服器—— Nginx
Nginx 作為一個高性能Web伺服器,具有負載均衡、攔截靜態請求、高並發...等等許多功能,你可能要問了,這些功能和使用 Nginx + WSGI 容器的部署方式有什麼關系?
首先是負載均衡,如果你了解過 OSI模型 的話,其實負載均衡器就是該模型中4~7層交換機中的一種,它的作用是能夠僅通過一個前端唯一的URL訪問分發到後台的多個伺服器,這對於並發量非常大的企業級Web站點非常有效。在實際應用中我們通常會讓 Nginx 監聽(綁定) 80 埠,通過多域名或者多個location分發到不同的後端應用。
其次是攔截靜態請求,簡單來說, Nginx 會攔截到靜態請求(靜態文件,如圖片),並交給自己處理。而動態請求內容將會通過 WSGI 容器交給 Web 應用處理;
Nginx 還有其他很多的功能,這里便不一一介紹。那麼前面說了,直接通過 uWSGI 或 gunicorn 也可以讓外網訪問到的,但是鑒於 Nginx 具有高性能、高並發、靜態文件緩存、及以上兩點、甚至還可以做到限流與訪問控制,所以選擇 Nginx 是很有必要的;
這里可以說明,如果你選擇的架構是:Nginx + WSGI容器 + web應用,WSGI容器相當於一個中間件;如果選擇的架構是uWSGI + web應用,WSGI容器則為一個web伺服器
普遍的部署方式都是通過讓 Nginx 綁定 80 埠,並接受客戶端的請求將動態內容的請求反向代理給運行在本地埠的 uWSGI 或者 Gunicorn ,所以既可以通過 Nginx + uWSGI 也可以通過 Nginx + Gunicorn 來部署 Flask 應用,這篇教程中都將一一介紹這兩種方法
當然採用不同的 WSGI 容器, Nginx 中的配置也會有所不同
我們現在虛擬環境下安裝好 uWSGI :
安裝完成之後我們在項目的目錄下(即你實際創建的Flask項目目錄,在本文所指的項目目錄都假設為/www/demo)創建以 .ini 為擴展名的配置文件。在設置與 Nginx 交互的時候有兩種方式:
第一種是通過配置網路地址,第二種是通過本地的 .socket 文件進行通信。需要注意的是,不同的交互方式下, Nginx 中的配置也會有所不同
如果採用的是第一種網路地址的方式,則將之前創建 uwsgi.ini 配置文件添加如下的配置內容:
這里的 wsgi-file 參數所指的 run.py 其實是啟動文件,你也可以使用 manage.py 。不過我通常習慣創建一個這樣的文件,可以直接運行該文件磨缺來啟動項目:
保存好配置文件後,就可以通過如下的命令來啟動應用了:
如果你採用的是第二種本地 socket 文件的方式,則添加如下的配置內容:
可以看到,其實與網路地址的配置方式只有 socket 參數的配置不同,在這里填寫好路徑名和文件名並啟動 uWSGI 後,將會自動在改目錄下生成 nginx_uwsgi.socket 文件,這個文件就是用來與 Nginx 交互的。
首先我們來通過 apt 安裝 Nginx :
安裝完成之後,我們 cd 到 /etc/nginx/ 的目錄下(可能由於不同系統導致不同的Nginx發行版緣故,目錄有所差別,在此只針對 Ubuntu 中的發行版的Nginx),可以看到 Nginx 的所有配置文件。
其中 nginx.conf 文件為主配置文件,可以用來修改其全局配置; sites-available 存放你的配置文件,但是在這里添加配置是不會應用到 Nginx 的配置當中,需要軟連接到同目錄下的 sites-enabled 當中。但是在我實際操作的過程中中,當我在 sites-available 修改好配置文件後,會自動更新到 sites-enabled 。如果沒有的話,則需要像上述的操作那樣,將修改好的配置文件 軟鏈接 到 sites-enabled 當中
在上邊說到,配置 uWSGI 有兩種與 Nginx 交互的方式,那麼選擇不同的方式的話在 Nginx 的配置也會有所不同:
第一種:網路配置方式 :
這里的 proxy_set_header 設置的三個參數的作用都是能夠直接獲得到客戶端的 IP ,如果你感興趣可以參考: Nginx中proxy_set_header 理解
用 include uwsgi_params 導入 uWSGI 所引用的參數,通過 uwsgi_pass 反向代理給在 localhost:8001 運行的 uWSGI :
在每次完Nginx配置文件內容後,需要通過如下的命令來重啟Nginx:
第二種:socket文件方式 :
與上邊的配置內容大體相同,只是在配置 uwsgi_pass 不是反向代理給網路地址,而是通過 socket 文件進行交互,我們只需要指定之前設置的路徑和文件名即可:
首先先在虛擬環境下安裝 Gunicorn :
安裝完成後,我們來創建以 .py 結尾的配置文件,這里我參考了Jiyuankai的 GitHub 關於 Gunicorn 的配置文件內容:
需要注意的是要在配置文件的同層目錄下創建 log 文件,否則運行 gunicorn 將報錯。添加完配置內容並保存為 gconfig.py 文件後,我們就也可以通過 gunicorn 來運行 Flask 應用了:
和 uWSGI 的任意一種配置方法類似,只是在 location 中的配置有所不同:
通過Gunicorn的Nginx配置中,我們只需要通過 proxy_pass 參數反向代理給運行在 http://localhost:5000/ 上的Gunicorn
如果你採取如上的任意一種部署方式,在Nginx與uWSGI或Gunicorn同時運行,並且配置無誤的狀態下,那麼你現在應該是可以通過你的公網 ip 或者域名訪問到你的網站了。
但是還有一個問題,到目前為止,uWSGI和gunicorn都是直接通過命令行運行,並不能夠在後台運行,也是當我們關閉了xShell(或者你使用的是Putty及其他SSH連接的軟體),將無法再訪問到你的應用。所以我們需要讓uWSGI或gunicorn在後台運行,也就是所謂的daemon(守護進程)。
如果你熟悉Linux命令,你應該知道在Linux中後台運行可以通過 nohup 命令,例如我們要讓gunicorn在後台運行,我們只需要運行 nohup 命令:
運行後你可以通過 ps -e | grep gunicorn 指令來查看到當前gunicorn的運行狀態:
如果你選擇的是uWSGI,同樣也可以通過 nohup 命令來實現守護進程:
這樣你就可以關閉連接伺服器的終端,還能通過你的瀏覽器訪問到你的 Flask 應用了!
但是 nohup 運行的後台程序並不能夠可靠的在後台運行,我們最好讓我們的後台程序能夠監控進程狀態,還能在意外結束時自動重啟,這就可以使用一個使用Python開發的進程管理程序supervisor。
參考: https://www.cnblogs.com/Dicky-Zhang/p/6171954.html
首先我們通過 apt 來安裝supervisor:
安裝完成後,我們在 /etc/supervisor/conf.d/ 目錄下創建我們控制進程的配置文件,並以.conf結尾,這樣將會自動應用到主配置文件當中,創建後添加如下的配置內容:
在上面的配置文件中, [program:demo] 設置了進程名,這與之後操作進程的狀態名稱有關,為 demo ; command 為進程運行的命令,必須使用絕對路徑,並且使用虛擬環境下的 gunicorn 命令; user 指定了運行進程的用戶,這里設置為 root
保存配置文件之後,我們需要通過命令來更新配置文件:
命令行將顯示: demo: added process group ,然後我們來啟動這個 demo 進程:
當然你也直接在命令行輸入 supervisorctl 進入supevisor的客戶端,查看到當前的進程狀態:
通過 stop 命令便可以方便的停止該進程:
『捌』 阿里雲雲伺服器如何配置網站環境
阿里雲雲伺服器配置網站環境可以根據自己需求選擇nginx或者apache,作為web伺服器。
現在一般是用nginx作為web伺服器或者負載均衡轉發到應用伺服器。遠程登錄到阿里雲伺服器,安裝nginx,之後配置nginx。nginx的配置文件默認如下:
我們可以選擇用nginx的默認配置,也可以設置自己根目錄。根目錄的作用就是指向自己web應用要發布的位置。我們可以採用ftp工具把web應用上傳到nginx指向的根目錄,之後重新載入nginx。執行如下命令:
nginx-sreload
這樣就可以通過阿里雲游粗伺服器的IP地址來訪問剛才部署神槐鎮的web應用。
如果想通過域名來訪問網站還需要購買域明猛名,之後在域名服務商的後台設置域名解析到阿里雲伺服器,這樣就可以用域名訪問網站了。但是如果是國內伺服器還需要網站備案,如果伺服器是位於香港或者海外就不需要備案了,直接域名解析到伺服器就可以訪問了。
『玖』 koyeb雲伺服器怎麼部署
koyeb雲伺服器部署的方法如下:
目前為伺服器提供HTTP服務的主要包括IIS、Apache(Tomcat)、Nginx三類。IIS是windows系統專屬,即微軟提供的,不具有平台兼容性,只能在windows平台使用。Apache和Nginx屬於更為通用的產品,windowslinuxmac系統上都可以安裝部署。
由於網站伺服器一般會同時需要部署安裝資料庫軟體和伺服器語言,因此許多集成套裝產品就因此而獲得青睞。如wampserver就是windows系統下apache+php+mysql三個軟體集成的產品,其中apache為HTTP服務軟體,php為伺服器語言,mysql為資料庫服務軟體;anmpserver是一款集成apache伺服器、nginx伺服器、mysql資料庫、php解釋器的整合軟體包。
由此看來,如果想部署一個網站服務,HTTP服務軟體、資料庫服務軟體、伺服器語言解釋器這三套一個也不能少,其中HTTP服務軟體負責處理數據的解析和傳輸,資料庫軟體負責數據的存儲與查詢等操作、伺服器語言解釋器負責對數據的處理、操作資料庫等。
『拾』 阿里雲伺服器怎麼配置
看你裝什麼系統,如:Linux, 1、使用上一節說明搭建好的FTP上傳一鍵安裝包;
2、使用putty遠程登錄伺服器。這里不在贅述,如下圖。
查看大圖
3、進入相關目錄,執行語句安裝,可能需要先修改相應許可權,執行語句如下
chmod –R 777 sh 修改目錄許可權
cd sh 進入相關目錄
./install.sh 執行安裝
執行這個語句後會出現選擇WEB版本的提示
apache or nginx,input a or n:
這里我輸入a選擇apache然後安裝程序會繼續執行
需要比較長的時間,估計要半個小時,等待安裝完成
4、上一步執行成功後,就表示WEB伺服器已經安裝完成,輸入cat account.log就可以查看MYSQL賬號密碼,如下圖所示
查看大圖
5、以上4步,網站伺服器已經搭建完畢,如果以後需要增加新的虛擬主機,可修改一下文件:
選擇了nginx 那麼會有一個nginx 目錄在
/alidata/server/nginx/
Nginx 配置文件在/alidata/server/nginx/conf
Nginx虛擬主機添加 你可以修改/alidata/server/nginx/conf/vhosts/phpwind.conf
選擇了apache那麼會有一個httpd 目錄在
/alidata/server/httpd
apache 配置文件在/alidata/server/httpd/conf
apache虛擬主機添加 你可以修改/alidata/server/httpd/conf/vhosts/phpwind.conf