安裝的phpmyadmin為4.8.1版
安裝的php-fpm為7.2版
安裝的php-fpm為7.2版
先安裝nginx
在開始動作前先做一次更新:
$ sudo apt-get update -y && sudo apt-get upgrade -y
在/etc/apt/sources.list檔案的最後加入以下兩行:
deb http://nginx.org/packages/ubuntu/ xenial nginx deb-src http://nginx.org/packages/ubuntu/ xenial nginx
將nginx的GPG key加入(此動作需切換到root):
$ curl -O https://nginx.org/keys/nginx_signing.key && apt-key add ./nginx_signing.key
再做一次更新:
$sudo apt-get update -y && sudo apt-get upgrade -y
應該會看到nginx相關的訊息,表示我們把最新的nginx版本加入了:
安裝nginx:
$ sudo apt-get install nginx -y
查看nginx版本,再次確認是否安裝成功:
$ nginx -v nginx version: nginx/1.14.0
查看nginx目前狀態:
$ systemctl status nginx
去nginx的目錄:
$ cd /etc/nginx
查看目前有哪些檔案和目錄:
$ ll total 48 drwxr-xr-x 3 root root 4096 May 31 16:07 ./ drwxr-xr-x 91 root root 4096 May 31 16:07 ../ drwxr-xr-x 2 root root 4096 May 31 16:07 conf.d/ -rw-r--r-- 1 root root 1007 Apr 17 15:22 fastcgi_params -rw-r--r-- 1 root root 2837 Apr 17 15:22 koi-utf -rw-r--r-- 1 root root 2223 Apr 17 15:22 koi-win -rw-r--r-- 1 root root 5170 Apr 17 15:22 mime.types lrwxrwxrwx 1 root root 22 Apr 17 16:00 modules -> /usr/lib/nginx/modules/ -rw-r--r-- 1 root root 643 Apr 17 15:59 nginx.conf -rw-r--r-- 1 root root 636 Apr 17 15:22 scgi_params -rw-r--r-- 1 root root 664 Apr 17 15:22 uwsgi_params -rw-r--r-- 1 root root 3610 Apr 17 15:22 win-utf
nginx.conf是nginx主要設定檔,看一下此檔的內容:
網路上常見的做法是於/etc/nginx/底下再創一個sites-available和sites-enabled,前者是放你的網站的根目錄,後者是將前者的網站目錄使用ln連結過來,至於為何要這樣做很像跟apache的設定有點關係,但也不一定要照這樣的做法
而官方是建議放在/etc/nginx/conf.d/底下就可以了
啟動nginx:
將nginx設為開機自動起來:
查看nginx狀態,確認是否啟動:
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }重點是下方的include那行 include /etc/nginx/conf.d/*.conf;是指將/etc/nginx/conf.d底下的所有conf都包含進來,要include才會生效,如果你的網站放在其他位置,沒在nginx.conf include的話那nginx就看不到你的網站
網路上常見的做法是於/etc/nginx/底下再創一個sites-available和sites-enabled,前者是放你的網站的根目錄,後者是將前者的網站目錄使用ln連結過來,至於為何要這樣做很像跟apache的設定有點關係,但也不一定要照這樣的做法
而官方是建議放在/etc/nginx/conf.d/底下就可以了
啟動nginx:
$ sudo systemctl start nginx
將nginx設為開機自動起來:
$ sudo systemctl enable nginx
$ systemctl status nginx查看nginx的行程:
$ ps -ef |grep nginx root 760 1 0 16:11 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 763 760 0 16:11 ? 00:00:00 nginx: worker process xanxus 1154 981 0 16:41 pts/0 00:00:00 grep --color=auto nginx可輸入http://127.0.0.1查看nginx歡迎的網頁:
接下來安裝php-fpm
安裝php-fpm和其他相關的模組:
$ sudo apt-get install php-fpm php-cgi php-mysql php-common php-pear php-mbstring -y
打開php.ini來更改cgi.fix_pathinfo為0:
sudo vim /etc/php/7.2/fpm/php.ini找到cgi.fix_pathinfo取消註解並設為0:
cgi.fix_pathinfo=0
重啟php-fpm:
$ sudo systemctl restart php7.2-fpm
稍微查看php底下的東西:
$ ls /run/php/ php7.2-fpm.pid php7.2-fpm.sock查看php的行程:
$ ps aux | grep php root 28256 0.0 0.4 288868 18732 ? Ss 14:43 0:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) www-data 28268 0.0 0.2 291168 9592 ? S 14:43 0:00 php-fpm: pool www www-data 28269 0.0 0.2 291168 9592 ? S 14:43 0:00 php-fpm: pool www lab401 28286 0.0 0.0 13136 1040 pts/0 S+ 14:44 0:00 grep --color=auto php
設置php-fpm.conf 於/etc/nginx/conf.d/創造php-fpm.conf檔案,內容如下:
server { listen 80; root /usr/share/nginx/html; index index.php index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } location ~ /\.ht { deny all; } }重啟nginx:
$ sudo systemctl reload nginx驗證設定檔格式是否有錯:
$ sudo nginx -t於/usr/share/nginx/html底下創造info.php,以便等等驗證,info.php內容如下:
<?php phpinfo(); ?>將nginx設成可以存取php-fpm,打開www.conf:
$ sudo vim /etc/php/7.2/fpm/pool.d/www.conf找到listen.owner和listen.group的地方,原本應該是像下面這樣:
listen.owner = www-data
listen.group = www-data
請改成以下這樣:
listen.owner = nginx
listen.group = nginx
如此就可以解決nginx和php-fpm明明已經設定好了,但連線卻出現502 Bad Gateway
之後請重啟php-fpm:
$ sudo systemctl restart php7.2-fpm
參考:
https://www.yuzhi100.com/article/nginx-502-bad-gateway-debian
https://www.linode.com/docs/web-servers/nginx/serve-php-php-fpm-and-nginx/
現在可以驗證php網頁是否可以連了 網址輸入http://127.0.0.1/info.php 如果看到php安裝的資訊頁面就是成功了
接下來安裝phpmyadmin就簡單了
安裝phpMyAdmin,先去官網https://www.phpmyadmin.net/
於右邊的綠色按鈕"Download 4.8.1"點選滑鼠右鍵選"複製連結網址"
回到系統使用wget下載:
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip解壓縮此zip檔
將解壓縮的目錄放到/usr/share/nginx/html底下
更改php-fpm.conf的設定
從/usr/share/nginx/html
改成/usr/share/nginx/phpMyAdmin-4.8.1-all-languages
改完後你的php-fpm.conf應該像下面這樣:
server { listen 7891; root /usr/share/nginx/phpMyAdmin-4.8.1-all-languages; index index.php index.html index.htm index.nginx-debian.html; server_name _ ; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } location ~ /\.ht { deny all; } }
然後重啟nginx:
$ sudo systemctl reload nginx
於網址輸入 http://127.0.0.1 就會看到phpMyAdmin的登入畫面了
延伸閱讀:
- 於phpMyAdmin加入多個資料庫https://tecadmin.net/add-multiple-hosts-in-phpmyadmin/
其他參考資料:
- 官方安裝nginx的網頁http://nginx.org/en/linux_packages.html
- 官方PHP FastCGI Example的網頁https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
- 官方說明Configuration Files的網頁https://docs.nginx.com/nginx/admin-guide/basic-functionality/managing-configuration-files/
後續補充:
nginx將php檔案導給php-fpm的兩種方式:
- 使用unix sock
- 使用tcp
沒有留言:
張貼留言