『壹』 在Windows系統上搭建Nginx+Python+MySQL環境的教程
1 安裝nginx
下載windows上的nginx最新版本,/en/download.html。
解壓後即可。
運行nginx.exe後本地打開localhost,將會看到歡迎頁面,這證明nginx在本地運行良好,如果沒有出現歡迎頁面,請檢查是否有進程佔用了80埠。
2 安裝flup
下載對應版本的flup,這里下載flup3.x版本,適合python3.2,下載地址:https:///chxanders/flup3
解壓(比如解壓到D:flup)
安裝(進入到python的安裝路徑,然後執行下面的命令
1 python setup.py install )
!注意,如果提示缺少setuptools,安裝distribute-0.6.49.tar.gz,安裝方法和flup安裝一樣,下載地址:https:///pypi/distribute/0.6.49
3 安裝Mysql
在這里我使用的是5.1版本。在win系統上雙擊安裝文件,下一步下一步完成。下載地址:/downloads/
4 安裝資料庫驅動
下載用於win上對應py版本的的python-mysql驅動,雙擊安裝即可。下面的下載地址是3.2:
/wangqc/distribute-0.6.49.zip
5 配置伺服器
首先需要修改nginx的配置文件nginx.conf。
找到:
1 2 3 4 location / { root html; index index.html index.htm; } 在裡面加上:
1 2 3 4 5 6 7 8 9 10 11 12 # host and port to fastcgi server fastcgi_pass 127.0.0.1:55880; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param SERVER_NAME $server_name; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; 然後測試該配置文件是否正確,在cmd中切換到nginx安裝目錄里,輸入
1 nginx.exe -t 即可開始對配置文件測試,如果提示成功,說明配置正確,
這是可以結束掉任務管理器中所有的nginx.exe進程,重新運行ngin.exe重啟nginx服務。
6 運行Server.py
在cmd下切換到項目目錄,輸入命令
1 python Server.py runfcgi method=threaded host=127.0.0.1 port=55880 注意,
這條命令只能用來啟動項目,如果出現錯誤並不會給出提示。下面是正確的情況.
用瀏覽器打開127.0.0.1:8080 測試一下,項目是不是已經跑起來了(第一次運行等待的時間稍長,請耐心等待)。
7 一些注意事項
(1)、首先應該改的地方,這個大家應該都知道:
1 DEBUG = TEMPLATE_DEBUG = False#將debug設置為False (2)、改一下ALLOWED_HOSTS,我死死的就將這個給忘了,我的`配置:
1 2 3 4 if DEBUG:#根據DEBUG來確定 ALLOWED_HOSTS = [""] else: ALLOWED_HOSTS = ["localhost","127.0.0.1"] (3)、重頭戲來了,配置nginx:
這里相關的代碼網上很多,但是幾乎都沒有說明一件事:
配置location ~ ^/static/ 的位置,一定要在location ~ ^/的前面,而且不能單純的使用 location /static/ 或者location /static ,不然,static文件夾中的靜態文件都不能載入!!!
ps:提起這個,慢慢的淚啊,就錯在這里了。
嫌麻煩可以寫成批處理,運行的時候雙擊一下就好了。
『貳』 nginx配置是要改哪個文件還是直接新建一個文件放到conf.d
nginx如果是默認安裝的話,安裝目錄在usr/local/nginx,配置文件:usr/local/nginx/conf/nginx.conf
沒有這個文件的話,需要復制當前目錄conf文件夾下的nginx.conf.default改名為nginx.conf
改完記得重啟nginx,在usr/local/nginx/sbin目錄下執行:./nginx
-s
reload
『叄』 Nginx跟php和mysql資料庫怎麼連接的
nginx 通過libevent 建立了網路連接池,通過nginx的 fast_cgi配置 (fastcgi_pass ip:port),用tcp 127.0.0.1:9000 方式連接 或者 unix socket unix:///var/run/unix.sock 方式 連接,php 與mysql 通過 php _ mysql* 擴展,實現的tcp連接 (可以持久版連接或權非持久連接)
『肆』 有沒有辦法將Nginx網站訪問日誌直接寫入MySQL或其它的資料庫里
用軟體讀取Nginx網站訪問日誌
然後寫入MySQL或其它的資料庫
只要能讀取,就能寫入
『伍』 nginx access.log 日誌怎麼存儲到資料庫
設計個表:
CREATE TABLE `nginx` (
`remote_addr` varchar(100) DEFAULT NULL,
`remote_user` varchar(100) DEFAULT NULL,
`time` varchar(100) DEFAULT NULL,
`request` varchar(100) DEFAULT NULL,
`status` varchar(100) DEFAULT NULL,
`body_bytes_sent` varchar(100) DEFAULT NULL,
`http_referer` varchar(100) DEFAULT NULL,
`http_user_agent` varchar(100) DEFAULT NULL,
`http_x_forwarded_for` varchar(100) DEFAULT NULL,
`time_local` text,
`datetime` text,
`host` text,
`program` text,
`pid` text,
`message` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
然後解析log文件拼接保存就行了。
『陸』 nginx環境navicat怎麼連接資料庫
nginx環境navicat怎麼連接資料庫
根據你所說的,只能說明OPC服務端是開著的,沒辦法證明你DCOM已經配置好。所以建議你:
1,檢查相同的用戶名和密碼是否都具有管理員許可權;
2,檢查兩台機器是否防火牆已經關閉;
3,檢查兩台機器的訪問模式是否是經典形式;
4,檢查DCOM配置中的許可權設置。
可以去網上搜索下載個matrikonopcsimulation,來幫助你進行DCOM配置。
『柒』 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跑起來吧
『捌』 wordpress重定向及nginx配置
location / {
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
1. 在阿里雲或其他地方申請證書文件得到如:
214040226730432.key 214040226730432.pem
放到如 /etc/nginx/cert目錄下
2.nginx配置文件裡面
server {
listen 443;
server_name jadewen.win www.jadewen.win;
ssl on;
root /var/www/default;
index index.php index.html;
ssl_certificate cert/214040226730432.pem;
ssl_certificate_key cert/214040226730432.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
3.重定向http到https
server {
listen 80;
server_name jadewen.win www.jadewen.win;
return 301 https://$host$request_uri;
}
配置多個server塊映射到不同目錄即可,但是免費的https證書只能支持一個主域名,二級域名仍然只能是http的
server {
listen 80;
server_name blog.jadewen.win;
root /var/www/blog;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
『玖』 nginx負載均衡怎麼訪問資料庫
nginx 是一個輕量級的、高性能的 web server 主要可以干兩件事情:
1、直接作為http server(代替apache,對PHP需要FastCGI處理器支持);
2、作為反向代理伺服器實現負載均衡
以下我們就來舉例說明如何使用 nginx 實現負載均衡。因為nginx在處理並發方面的優勢,現在這個應用非常常見。當然了Apache的 mod_proxy和mod_cache結合使用也可以實現對多台app server的反向代理和負載均衡,但是在並發處理方面apache還是沒有 nginx擅長。
方法/步驟
1
一、環境:
a. 我們本地是Windows系統,然後使用VirutalBox安裝一個虛擬的Linux系統。
在本地的Windows系統上分別安裝nginx(偵聽8080埠)和apache(偵聽80埠)。在虛擬的Linux系統上安裝apache(偵聽80埠)。
這樣我們相當於擁有了1台nginx在前端作為反向代理伺服器;後面有2台apache作為應用程序伺服器(可以看作是小型的server cluster。;-) );
b. nginx用來作為反向代理伺服器,放置到兩台apache之前,作為用戶訪問的入口;
nginx僅僅處理靜態頁面,動態的頁面(php請求)統統都交付給後台的兩台apache來處理。
也就是說,可以把我們網站的靜態頁面或者文件放置到nginx的目錄下;動態的頁面和資料庫訪問都保留到後台的apache伺服器上。
c. 如下介紹兩種方法實現server cluster的負載均衡。
我們假設前端nginx(為127.0.0.1:80)僅僅包含一個靜態頁面index.html;
後台的兩個apache伺服器(分別為localhost:80和158.37.70.143:80),一台根目錄放置phpMyAdmin文件夾和test.php(裡面測試代碼為print 「server1「;),另一台根目錄僅僅放置一個test.php(裡面測試代碼為 print 「server2「;)。
2
二、針對不同請求 的負載均衡:
a. 在最簡單地構建反向代理的時候 (nginx僅僅處理靜態不處理動態內容,動態內容交給後台的apache server來處理),我們具體的設置為:在nginx.conf中修改:
復制代碼 代碼如下:
location ~ \.php$ {
proxy_pass 158.37.70.143:80 ;
}
這樣當客戶端訪問localhost:8080/index.html的時候,前端的nginx會自動進行響應;
當用戶訪問localhost:8080/test.php的時候(這個時候nginx目錄下根本就沒有該文件),但是通過上面的設置 location ~ \.php$(表示正則表達式匹配以.php結尾的文件,詳情參看location是如何定義和匹配的) ,nginx伺服器會自動pass給 158.37.70.143的apache伺服器了。該伺服器下的test.php就會被自動解析,然後將html的結果頁面返回給nginx,然後 nginx進行顯示(如果nginx使用memcached模塊或者squid還可以支持緩存),輸出結果為列印server2。
如上是最為簡單的使用nginx做為反向代理伺服器的例子;
b. 我們現在對如上例子進行擴展,使其支持如上的兩台伺服器。
我們設置nginx.conf的server模塊部分,將對應部分修改為:
復制代碼 代碼如下:
location ^~ /phpMyAdmin/ {
proxy_pass 127.0.0.1:80 ;
}
location ~ \.php$ {
proxy_pass 158.37.70.143:80 ;
}
上面第一個部分location ^~ /phpMyAdmin/,表示不使用正則表達式匹配(^~),而是直接匹配,也就是如果客戶端訪問的 URL是以http://localhost:8080/phpMyAdmin/ 開頭的話(本地的nginx目錄下根本沒有phpMyAdmin目錄),nginx會自動pass到127.0.0.1:80 的Apache伺服器,該伺服器對phpMyAdmin目錄下的頁面進行解析,然後將結果發送給nginx,後者顯示;
如果客戶端訪問URL是http://localhost/test.php 的話,則會被pass到158.37.70.143:80 的apache進行處理。
因此綜上,我們實現了針對不同請求的負載均衡。
如果用戶訪問靜態頁面index.html,最前端的nginx直接進行響應;
如果用戶訪問test.php頁面的話,158.37.70.143:80 的Apache進行響應;
如果用戶訪問目錄phpMyAdmin下的頁面的話,127.0.0.1:80 的Apache進行響應;
3
三、 訪問同一頁面 的負載均衡:
即用戶訪問http://localhost:8080/test.php 這個同一頁面的時候,我們實現兩台伺服器的負載均衡 (實際情況中,這兩個伺服器上的數據要求同步一致,這里我們分別定義了列印server1和server2是為了進行辨認區別)。
a. 現在我們的情況是在windows下nginx是localhost偵聽8080埠;
兩台apache,一台是127.0.0.1:80(包含test.php頁面但是列印server1),另一台是虛擬機的158.37.70.143:80(包含test.php頁面但是列印server2)。
b. 因此重新配置nginx.conf為:
首先在nginx的配置文件nginx.conf的http模塊中添加,伺服器集群server cluster(我們這里是兩台)的定義:
復制代碼 代碼如下:
upstream myCluster {
server 127.0.0.1:80 ;
server 158.37.70.143:80 ;
}
表示這個server cluster包含2台伺服器
〉然後在server模塊中定義,負載均衡:
復制代碼 代碼如下:
location ~ \.php$ {
proxy_pass http://myCluster ; #這里的名字和上面的cluster的名字相同
proxy_ www.gzlij.comredirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
這樣的話,如果訪問http://localhost:8080/test.php 頁面的話,nginx目錄下根本沒有該文件,但是它會自動將其pass到myCluster定義的服務區機群中,分別由127.0.0.1:80;或者158.37.70.143:80;來做處理。
上面在定義upstream的時候每個server之後沒有定義權重,表示兩者均衡;如果希望某個更多響應的話例如:
復制代碼 代碼如下:
upstream myCluster {
server 127.0.0.1:80 weight=5;
server 158.37.70.143:80 ;
}
4
綜上,我們使用nginx的反向代理伺服器reverse proxy server的功能,將其布置到多台apache server的前端。
nginx僅僅用來處理靜態頁面響應和動態請求的代理pass,後台的apache server作為app server來對前台pass過來的動態頁面進行處理並返回給nginx。
通過以上的架構,我們可以實現nginx和多台apache構成的機群cluster的負載均衡。
兩種均衡:
1)可以在nginx中定義訪問不同的內容,代理到不同的後台server; 如上例子中的訪問phpMyAdmin目錄代理到第一台server上;訪問test.php代理到第二台server上;
2)可以在nginx中定義訪問同一頁面,均衡 (當然如果伺服器性能不同可以定義權重來均衡)地代理到不同的後台server上。 如上的例子訪問test.php頁面,會均衡地代理到server1或者server2上。
實際應用中,server1和server2上分別保留相同的app程序和數據,需要考慮兩者的數據同步。
『拾』 利用nginx部署站點,前端資源默認放在
部署springboot+vue項目的時候,我們一般是將打包好的前端項目放在我們後端的resources目錄下,然後前後端一起打包成jar包或者war包部署上伺服器的。也就是說,如果前端項目發生修改的話,那麼即使後端不用修改,前後端項目也要重新放在一起重新打包、重新部署。但是,前端項目打包往往是幾mb大小,而後端項目打包卻要幾十mb。因此,為了方便,我們可以使用Nginx獨立部署前端項目。
一、 Nginx安裝步驟
1、安裝GCC、automake、pcre、zlib和openssl
用rpm -qa 命令查看是否安裝
如果沒有安裝,執行以下命令
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel
1
2、下載Nginx
我是安裝在 /www/server目錄的
cd /www/server
1
weget命令下載
wget http://nginx.org/download/nginx-1.16.1.tar.gz
1
tar zxvf 解壓
tar zxvf nginx-1.16.1.tar.gz
1
重命名 nginx-1.16.1文件夾
mv nginx-1.16.1 nginx
1
3、安裝Nginx,默認安裝目錄:/usr/local/nginx
進入nginx文件夾,運行configure腳本
cd nginx
./configure
1
2
編譯、安裝
make
make install
1
2
切換到安裝目錄
cd /usr/local/nginx
1
注意:html:存放了兩個後綴名為.html的靜態文件,前端項目打包後的文件放在此處,編輯好配置文件,啟動Nginx伺服器即可成功部署前端項目。
4、修改配置文件、開放埠
vim /usr/local/nginx/conf/nginx.conf
1
埠改為 8051
5、啟動Nginx
cd /usr/local/nginx
./sbin/nginx
1
2
6、其他命令
查看進程
ps -ef|grep nginx
1
重啟Nginx
/usr/local/nginx/sbin/nginx -s reopen
1
停止Nginx
/usr/local/nginx/sbin/nginx -s stop
1
重載Nginx配置文件
/usr/local/nginx/sbin/nginx -s reload
1
7、訪問
curl 127.0.0.1:8051
1
如果訪問不了,伺服器安全組開放埠以及防火牆放行埠
firewall-cmd --zone=public --add-port=8051/tcp --permanent
1
firewall-cmd --reload
1
二、前端項目獨立部署
1、將打包的前端項目上傳到/usr/local/nginx/html目錄
2、 重新啟動即可成功訪問到前端項目
/usr/local/nginx/sbin/nginx -s reopen
1
可能遇到的問題
1、刷新頁面查詢404的情況,也就是頁面找不到
修改Nginx配置文件
try_files $uri $uri/ /index.html;
1
重新載入配置文件重啟Nginx