最近有时间回顾了以前的一个项目,类似于微服务的形式。项目主要是将众多的小项目动态加载到服务器上,后台管理员可以进行小项目管理。还有部分需要使用 nginx 代理 docker服务的场景(这块先不说,有时间上了补上)。
目录
技术点需要去实现
一、添加用户组
二、配置nginx user 改为普通的用户 www-data
三、对nginx做权限处理方便 php调用
四、修改php-fpm的配置
五、php调用nginx重新加载命令,随意写一个test.php的文件执行nginx命令
六、写在最后
1.首先是nginx的多服务配置,也就是多端口的使用。
2.nginx的动态加载配置文件。基础命令 nginx -s reload 的动态使用。
3.php对nginx的状态操作权限,及php对linux命令行操作 cli模式。
4.nginx 的反向代理实现代理docker,身份验证需求等(以后写)
查看用户组
cat /etc/group
创建新的用户组
sudo addgroup www-data
创建新的用户
sudo adduser www-data
把用户添加到用户组
sudo gpasswd -a www-data www-data
user www-data www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_max_body_size 1024M;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/sites-enabled/*;
#注意include 的是具体的项目的配置文件也就多个server
server{
#.....
}
}
在 sites-enabled中 具体的配置文件,多server的配置就是多个端口不重复的配置文件
server {
listen 80;
server_name docker;
root /var/www/docker-api/public;
index index.php index.html index.htm;
access_log /var/log/nginx/docker.access.log;
error_log /var/log/nginx/docker.error.log debug;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
#这里是一个动态安全口令配置,正常使用删除掉即可
include /home/wwwroot/competition-examine/storage/other/*.conf;
关于的nginx的安全口令设置推荐一个文章可以去看看理解Nginx auth_basic 身份验证https://blog.csdn.net/qq_44633541/article/details/124370705
仅 root 用户和 www-data 用户可以运行(因为是750权限,文件所有者:root,组所有者:www-data)
chown root.www-data /usr/sbin/nginx
chmod 750 /usr/sbin/nginx
chmod u+s /usr/sbin/nginx
有些服务的环境 直接使用 不知道nginx在哪可以使用 whereis nginx进行查看
推荐一个 nginx权限处理的文章
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
四项该我新建的用户组
nginx 权限不对的问题如下返回 这里要仔细的看第三步
正确的调用返回
测试通后就去叭叭具体的业务逻辑吧。
需求总是千奇百怪,不变的是实现的组件,来回的组合,叠加。