OpenWRT高级应用之 Web环境搭建(Nginx+Php)
openwrt吧
全部回复
仅看楼主
level 7
2021年06月04日 14点06分 1
level 7
Step 1. 安装Nginx与php
由于过程中需要使用ssh登录路由器后台以及sftp更改文件,推荐使用Xshell与Xftp。
链接: [无效] https://pan.baidu.com/s/1SQFpT4SYH7AjC-YMQPk-xA
提取码: 2n19
2021年06月05日 08点06分 5
Xshell官网下载,个人及教育版
2021年06月05日 08点06分
level 7
安装Nginx与Php(直接复制,回车)
opkg install nginx unzip zoneinfo-asia php7 php7-fpm php7-mod-curl php7-mod-gd php7-mod-iconv php7-mod-json php7-mod-mbstring php7-mod-mysqlnd php7-mod-opcache php7-mod-pdo php7-mod-pdo-mysql php7-mod-pdo-sqlite php7-mod-session php7-mod-sqlite3 php7-mod-zip
2021年06月05日 08点06分 6
level 7
选择一个目录创建配置文件文件夹,推荐目录结构如下:
2021年06月05日 08点06分 7
level 7
nginx_server文件夹用于存放nginx的server块内容,ssl文件夹用于存放SSL证书,nginx.conf是nginx的配置文件,php-fpm与php.ini是php的配置文件。
2021年06月05日 08点06分 8
level 7
所有配置文件均是文本文件改名而来。编辑时推荐使用VScode,安装Nginx模块与Php模块后可实现语法高亮(当然记事本甚至vim编辑器也可以[阴险]
2021年06月05日 08点06分 9
level 7
Step 2. 编辑配置文件
nginx.conf
#开始
#设置Nginx以什么用户启动
user root root;
#设置Nginx线程数,auto表示自动(与cpu核心数匹配)
worker_processes auto;
events {
#设置最大连接数
worker_connections 1024;
}
http {
#将server_name的hash长度设为64(推荐64,避免could not build server_names_hash报错)
server_names_hash_bucket_size 64;
include /etc/nginx/mime.types;
sendfile on;
client_max_body_size 128M;
large_client_header_buffers 2 1k;
gzip on;
gzip_vary on;
gzip_proxied any;
keepalive_timeout 60;
#server块配置文件路径,依据个人设置修改
include /mnt/sdb1/website/config/nginx_server/*.conf;
}
#结束
2021年06月05日 08点06分 10
level 7
server块配置(以kodexplorer可到云为例)
# 开始
# kodexplorer server
server {
# 监听地址:端口
listen localhost:8088;
# 虚拟主机名(域名)
server_name localhost;
location / {
#设置网页根目录,根据个人情况配置
root /mnt/sdb1/website/kodexplorer/www;
index index.html index.htm index.php;
}
# 报错跳转
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# php解释器
location ~ \.php(.*)$ {
#设置网页根目录,根据个人情况配置
root /mnt/sdb1/website/kodexplorer/www;
# PHP 文件不存在返回404
try_files $uri = 404;
# 通过 Unix 套接字执行 PHP,路径与php设置有关
fastcgi_pass unix:/var/run/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
# 修复 Nginx fastcgi 漏洞
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}
}
#结束
2021年06月05日 09点06分 11
level 7
server块配置(反向代理)
#开始
#nginx server
#http跳转https
server {
listen 80;
listen [::]:80;
server_name _redirect2ssl;
return 302 https://$host$request_uri;
}
#反向代理luci
server {
#监听 地址:端口 ,开启ssl
listen 443 ssl;
listen [::]:443 ssl;
#虚拟主机名(域名)
server_name openwrt.hefei.dynv6.net;
#SSL证书与密钥
ssl_certificate /mnt/sdb1/website/config/ssl/site.crt;
ssl_certificate_key /mnt/sdb1/website/config/ssl/site.key;
ssl_session_cache shared:SSL:32k;
ssl_session_timeout 60m;
access_log off;
location / {
#反向代理后端
proxy_pass http://localhost:8080;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name kodexplorer.hefei.dynv6.net;
ssl_certificate /mnt/sdb1/website/config/ssl/site.crt;
ssl_certificate_key /mnt/sdb1/website/config/ssl/site.key;
ssl_session_cache shared:SSL:32k;
ssl_session_timeout 60m;
access_log off;
location / {
proxy_pass http://localhost:8088;
}
}
#结束
2021年06月05日 09点06分 12
level 7
php-fpm.conf配置文件
;开始
[global]
;php进程名(Linux一切皆文件)
pid = /var/run/php7-fpm.pid
;错误日志文件路径
error_log = /var/log/php7-fpm.log
[www]
;设置用什么用户启动php进程
user = root
;监听路径(端口),这里用的是UNIX网络模式
;也可以用TCP/IP模式,例如listen=127.0.0.1:9000
listen = /var/run/php7-fpm.sock
;权限设置,不懂请百度Linux权限
listen.mode = 0666
;允许连接的客户端,这里设置的是本机,大型网站可能会设置一台或若干台php专用服务器
listen.allowed_clients = 127.0.0.1
;线程调度方式,static表示固定线程数,dynamic表示动态调度
pm = dynamic
;最大子线程数,通常设置为cpu核心数+1,如果为io密集型,可以适当增加
pm.max_children = 5
;php服务启动时创建的线程数
pm.start_servers = 2
;最小空闲线程数
pm.min_spare_servers = 1
;最大空闲线程数
pm.max_spare_servers = 3
chdir = /
;结束
2021年06月05日 13点06分 14
level 7
php.ini配置文件
#开始
[PHP]
zend.ze1_compatibility_mode = Off
engine = On
precision = 12
y2k_compliance = On
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
;php授权目录(说人话就是你的网页运行时需要允许它访问哪些目录)
;建议只将 “/mnt/sdb1/”修改为你网页文件所在目录,其余别动
open_basedir = /mnt/sdb1/:/tmp/:/proc/:/usr/bin/
disable_functions =
disable_classes =
expose_php = On
;最长执行时间(以秒计),如果要执行一些很费时的任务(例如上传大文件),请适当增大
max_execution_time = 30
;最大上传时间,同上
max_input_time = 60
;可占用的最大内存,请依据内存大小适当配置
memory_limit = 3584M
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = On
auto_globals_jit = On
;POST最大占用内存,此值不可大于memory_limit
post_max_size = 3328M
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
;doc_root = "/www"
user_dir =
extension_dir = "/usr/lib/php"
enable_dl = On
cgi.fix_pathinfo=1
file_uploads = On
upload_tmp_dir = "/tmp"
;上传最大占用内存,此值不可大于post_max_size
upload_max_filesize = 3072M
;最大同上上传文件数
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
#结束
2021年06月05日 14点06分 15
level 7
到此配置文件设置结束,接下来要创建启动脚本,并在开机时启动服务。
2021年06月05日 14点06分 16
level 7
Step 3. 创建启动脚本,并设置开机启动
#开始
#!/bin/sh /etc/rc.common
#启动顺序,越大启动越靠后
START=99
#Nginx与php配置文件路径
TEMP_PATH="/mnt/sdb1/website/config"
NGINX_CONFIG="$TEMP_PATH/nginx.conf"
PHP_FPM_CONFIG="$TEMP_PATH/php-fpm.conf"
PHP_CONFIG="$TEMP_PATH/php.ini"
start() {
mkdir -p /var/log/nginx /var/lib/nginx
/usr/bin/php-fpm -R -c $PHP_CONFIG -y $PHP_FPM_CONFIG
/usr/sbin/nginx -c $NGINX_CONFIG >/dev/null 2>&1 &
}
stop() {
/usr/sbin/nginx -c $NGINX_CONFIG -s stop >/dev/null 2>&1 &
killall -9 php-fpm >/dev/null 2>&1 &
rm -f /var/run/php7-fpm.pid
rm -f /var/log/php7-fpm.log
rm -f /var/run/php7-fpm.sock
}
restart() {
stop
start
}
#结束
上述脚本修改并保存后给文件命名(例如webserver)
2021年06月05日 14点06分 18
level 7
xftp连上路由器,脚本拷贝至/etc/init.d/,配置文件及网页拷贝至相应文件夹,然后xshell连上路由器,执行:
chmod 755 etc/init.d/webserver (给脚本添加执行权限,脚本文件名根据个人设置修改)
service nginx disable
service nginx stop
service php-fpm disable
service php-fpm stop
(停掉原来的服务)
service webserver enable
service webserver start
(启动服务,并设置开机自启动)
2021年06月05日 14点06分 19
level 7
至此web服务已经搭建完毕。
2021年06月05日 14点06分 20
1 2 尾页