嘗試在 Android 行動裝置上架設網站,讓手邊的手機作為本機 (Local) 網頁伺服器;你可以在手機上架設 WordPress 以建立只屬於自己的網誌內容,或者架設傳輸檔案的伺服器,直接透過網頁伺服器傳輸檔案,而不用直接將 Android 行動裝置與電腦連線。
以下使用 Termux 並透過 nginx+php-fpm+mariadb 來進行架設。
改寫自:https://greenhandzdl.github.io/termux-creates-a-wordpress-website.html/
並參考:
termux 创建 wordpress 网站 – Greenhandzdl 的个人博客
NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證- G. T. Wang
XYZ 的筆記本: Nginx 設定 https 連線
用 OpenSSL 自簽開發用 HTTPS SSL 憑證 « Nic Lin’s Blog
SSL X.509 憑證教學 – Study-Area – 依瑪貓
OpenSSLについて
Jimmy’s Blog: OpenSSL 操作筆記 – 產生 RSA 金鑰
Jimmy’s Blog: OpenSSL 操作筆記 – 產生 CSR
原作者:Greenhandzdl
来源:termux 创建 wordpress 网站 | 梦想,起飞~~
链接:https://greenhandzdl.github.io/termux-creates-a-wordpress-website.html/
配置 nginx+php-fpm+mariadb 環境
安裝 nginx
$ apt-get update
$ apt-get install nginx
這時候存取本機位址只會得到預設頁面。
nginx 的組態設定值
組態設定位於 $PREFIX/etc/nginx/nginx.conf
使用 vim 開啟 nginx.conf:
$ vim $PREFIX/etc/nginx/nginx.conf
以進行編輯。
修改網站根目錄路徑
網站預設路徑位於:
/data/data/com.termux/files/usr/share/nginx/html
如果有需要修改路徑,將所有相同路徑的內容修改即可,例如修改成:
/data/data/com.termux/files/home/.nginx/html
並將 69 行修改為 fastcgi_param SCRIPT_FILENAME “網站根目錄路徑”$fastcgi_script_name;
將 php 加入首頁規則並監聽
將 php 加入首頁規則
如果需要將 php 做為首頁規則:
將 index.php 加入到首頁規則裡面
45 行位置index index.html index.htm;
加入 index.php 將 php 做為首頁規則
index index.html index.htm index.php;
監聽 php
將 nginx 組態設定裡的 location ~ \.php$
開頭的註釋符號( #號)取消:
位於 65~71 行,將範圍內每行開頭取消註釋。
解析 php
請參考下段,安裝 php-fpm。
php-fpm
由於 nginx 無法直接解析 php,所以必須依賴 php-fpm 這個套件。
安裝 php-fpm:
$ apt-get update
$ apt-get install php-fpm
另外必須修改 php-fpm 組態:
vim $PREFIX/etc/php-fpm.d/www.conf
修改以下內容:
36行 listen =
監聽對象修改為本機位址:
listen = 127.0.0.1:9000
安裝 MySQL 資料庫 MariaDB
$ apt-get update
$ apt-get install mariadb
進行配置
登入 termux 使用者資料庫
mysql -u $(whoami)
如果出現類似錯誤訊息:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/data/com.termux/files/usr/tmp/mysqld.sock' (111)
請執行 mysqld_safe
(將佔用目前 session)並再開啟一個 terminal session
mysqld_safe
或 mysqld_safe &
(背景執行)
mysqld_safe &
重試一次:
mysql -u $(whoami)
修改 root 密碼的 SQL 語句
use mysql;
set password for 'root'@'localhost' = password('欲設定密碼');
更新權限並離開
flush privileges;
quit;
與你的資料庫連線
mysql -u root -p
輸入剛剛建立的密碼(密碼不可見)
建立 wordpress 資料庫
create database wordpress;
使用 wordpress 資料庫
use wordpress;
設定 Unicode 編碼
set names utf8;
離開資料庫模式
quit;
增強安全性
強制啟用 https 8443 埠
生成自行簽署的SSL憑證以建立安全連線
建立放置憑證的路徑:
$ mkdir -p $PREFIX/etc/nginx/ssl
透過 openssl 生成 SSL 憑證:
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout $PREFIX/etc/nginx/ssl/nginx.key -out $PREFIX/etc/nginx/ssl/nginx.crt
openssl req
:透過 openssl 生成憑證簽署要求(Certificate Signing Request, CSR)-new
:建立新的CSR-x509
:使用X.509形式的憑證,透過此選項將生成自我簽署憑證(self-signed certificates),而不是CSR-nodes
:不對輸出的私鑰加密,與 key 相關的選項併用時要注意,不當使用 key 可能會被覆蓋-days [days]
:指定憑證有效期間為今天起算後n天-newkey [arg]
:用於生成 CSR + 私鑰,後面指定加密演算法,例如rsa:2048
,格式為演算法:金鑰長度(位元)
-in [filename]
:輸入憑證申請檔案名稱,預設是標準輸出-out [filename]
:指定憑證的輸出路徑-key [filename]
:輸入已有的私鑰檔案,若無指定此選項將生成新私鑰-keyout [filename]
:指定私鑰的輸出路徑,未指定時將套用組態設定值的設定[filename].key
[filename].pem
:私鑰檔案[filename].crt
:憑證
生成憑證時會要求輸入基本資料:
Country Name (2 letter code) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan
Locality Name (eg, city) []:Kaohsiung
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Personal
Organizational Unit Name (eg, section) []:Personal Unit
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:user@example.com
Country Name (2 letter code) [AU]
:國家代碼(2碼)State or Province Name (full name) [Some-State]
:州或省Locality Name (eg, city) []
:城市Organization Name (eg, company) [Internet Widgits Pty Ltd]
:公司名稱Organizational Unit Name (eg, section) []
:部門單位名稱Common Name (e.g. server FQDN or YOUR name) []
:伺服器的完整網域名稱(FQDN),填寫不正確將被視為無效憑證,沒有申請網域可以用 IP 位址替代Email Address []
:電子郵件地址
開啟 https 伺服器服務
開啟 nginx 組態,並移至HTTPS server
一項,位於 96~115 行:
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
將 nginx 組態設定裡的 HTTPS server
開頭的註釋符號( #號)取消,
位於 96~115 行,將範圍內每行開頭取消註釋:
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
指定私鑰以及憑證的路徑
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
指定網站目錄
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /data/data/com.termux/files/home/.nginx/html;
index index.html index.htm;
}
}
啟用 https 的 php 解析以及 php 監聽
http 與 https 的設定是獨立的,所以必須在這裡再一次指定,
將 63~71 行的內容複製並貼上到 https 的設定內:
# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /data/data/com.termux/files/home/.nginx/html;
index index.html index.htm index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/data/com.termux/files/home/.nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
使用 8443 埠當作 https 的埠號
# HTTPS server
server {
listen 8443 ssl;
server_name localhost;
ssl_certificate /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /data/data/com.termux/files/home/.nginx/html;
index index.html index.htm index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/data/com.termux/files/home/.nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
連線 8080 埠自動轉址到 https 8443 埠
在指定 http 的 server 裡面加入return 301 https://$host:8443$request_uri;
(位於第38行):
server {
listen 8080;
server_name localhost;
return 301 https://$host:8443$request_uri;
#charset koi8-r;
#access_log logs/host.access.log main;
開啟伺服器部分路徑的檔案列表存取權限
以安全為由,避免伺服器檔案被窺視,預設此功能是關閉的,
如果想要開啟部分的目錄列表瀏覽權限,
在 http 埠或 https 埠的 server 內指定:
location /0_download {
root /data/data/com.termux/files/home/.nginx/html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
location /0_download
:指定欲開放目錄瀏覽權限的路徑autoindex on;
:啟用列出目錄功能autoindex_exact_size off;
:啟用以位元組顯示,關閉以人讀方式顯示autoindex_localtime on;
:是否以伺服器時區顯示時間
例如在 https 內指定則:
# HTTPS server
#
server {
listen 8443 ssl;
server_name localhost;
ssl_certificate /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /data/data/com.termux/files/usr/etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /data/data/com.termux/files/home/.nginx/html;
index index.html index.htm index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/data/com.termux/files/home/.nginx/html$fastcgi_script_name;
include fastcgi_params;
}
location /0_download {
root /data/data/com.termux/files/home/.nginx/html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
安裝網站
安裝 wordpress
$ wget https://wordpress.org/latest.zip
$ unzip latest.zip
$ cp -r wordpress/. 網站根目錄位址
啟用網站服務
啟用 nginx 服務
$ nginx
如果要更新網站組態,透過指令進行更新:
$ nginx -s reload
啟用 php-fpm 服務
$ php-fpm
啟用 MySQL
$ mysqld_safe &
造訪 127.0.0.1:8080 開始使用。
原作者:Greenhandzdl
来源:termux创建wordpress网站 | 梦想,起飞~~
链接:https://greenhandzdl.github.io/termux-creates-a-wordpress-website.html/
本作品採用 姓名標示-相同方式分享 4.0 國際 (CC BY-SA 4.0) 進行許可