简体   繁体   English

如何配置 nginx 和 CodeIgniter?

[英]How do I configure nginx and CodeIgniter?

I'm running nginx on my home computer for development.我在我的家用电脑上运行 nginx 进行开发。 I also have it linked to DynDNS so I can show progress to my co-worker a bit easier.我还将它链接到 DynDNS,因此我可以更轻松地向我的同事展示进度。 I can't seem to get nginx to rewrite to CodeIgniter properly.我似乎无法让 nginx 正确地重写为 CodeIgniter。 I have CodeIgniters uri_protocol set to REQUEST_URI.我将 CodeIgniters uri_protocol 设置为 REQUEST_URI。

All pages that should be showing up wtih content show up completely blank.所有应该显示内容的页面都显示为完全空白。 If I phpinfo();如果我 phpinfo(); die();死(); in the index.php file of Codeigniter, it works as expected and I get the phpinfo.在 Codeigniter 的 index.php 文件中,它按预期工作,我得到了 phpinfo。

Also, pages that should give a 404 give a proper CodeIgniter 404 error.此外,应该给出 404 的页面会给出正确的 CodeIgniter 404 错误。

Here's what I have so far.这是我到目前为止所拥有的。

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    #gzip  on;
    #gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    root /home/zack/Development/public_html;

    include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*;


    server {
        listen 80;
        server_name zackhovatter.dyndns.info;

        index index.php;
        root /home/zack/Development/public_html;

        location /codeigniter/ {
            if (!-e $request_filename) {
                rewrite ^/codeigniter/(.*)$ /codeigniter/index.php/$1 last;
            }
        }
            #this is for the index.php in the root folder
        location /index.php {
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME /home/zack/Development/public_html/index.php;
            include         fastcgi_params;
        }

        location /codeigniter/index.php {
            fastcgi_index   index.php;
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME  /home/zack/Development/public_html/codeigniter/index.php;
            fastcgi_param   REQUEST_URI      $request_uri;
            fastcgi_param   QUERY_STRING     $query_string;
            fastcgi_param   PATH_INFO        $document_uri;
            fastcgi_param   REQUEST_METHOD   $request_method;
            fastcgi_param   CONTENT_TYPE     $content_type;
            fastcgi_param   CONTENT_LENGTH   $content_length;
            fastcgi_pass    127.0.0.1:9000;
        }
    }
}

Actually I got this working.其实我得到了这个工作。 Not sure how, but I think it was file permissions being set incorrectly or something.不确定如何,但我认为这是文件权限设置不正确或其他原因。

Edit: For those who are wondering, I had an older version of PHP installed it seems.编辑:对于那些想知道的人,我似乎安装了旧版本的 PHP。 Reverting back to old class constructors fixed the issue.恢复到旧的类构造函数解决了这个问题。 Darnit.达尼特。

I have exactly the same problem (Codeigniter gives blank pages and the error pages and php are working) and i found that the problem was from the mysql db driver which should be changed to mysqli driver .我有完全相同的问题(Codeigniter 给出空白页面,错误页面和 php 正在工作),我发现问题来自 mysql db 驱动程序,它应该更改为 mysqli 驱动程序。

So just we need to change the db driver in config/database.php所以我们只需要更改 config/database.php 中的数据库驱动程序

$db['default']['dbdriver'] = 'mysqli';

And this is due that the mysql driver is deprecated in the new versions of php.这是由于 mysql 驱动程序在新版本的 php 中已弃用。

CodeIgniter4 How To Setup NGINX Server Blocks (Virtual Hosts) on RasperyPi Debian 10.4 CodeIgniter4 如何在 RasperyPi Debian 10.4 上设置 NGINX 服务器块(虚拟主机)

I am using a RasperyPi-4 as web developing server with different projects running on it.我使用 RasperyPi-4 作为 Web 开发服务器,在其上运行不同的项目。 Visual Studio Code enables editing files via Remote-SSH extension very easily. Visual Studio Code 可以非常轻松地通过远程 SSH 扩展来编辑文件。 Setting up CI4 on NGINX gives you the opportunity to run different projects on the same server.在 NGINX 上设置 CI4 使您有机会在同一台服务器上运行不同的项目。 Because it took me some days to get this configuration running I will give you a quick reference guide to setup quick and easy.因为我花了几天时间才能运行此配置,所以我将为您提供快速参考指南,以便快速轻松地进行设置。 If you have not installed NGINX and composer yet please have a look here: http://nginx.org/en/docs/beginners_guide.html如果你还没有安装 NGINX 和 composer 请看这里: http ://nginx.org/en/docs/beginners_guide.html

https://codeigniter4.github.io/userguide/installation/installing_composer.html https://codeigniter4.github.io/userguide/installation/installing_composer.html

https://getcomposer.org/download/ https://getcomposer.org/download/

  1. CodeIgniter4 installation via composer通过 Composer 安装 CodeIgniter4

server ip: 10.0.0.10 port: 8085 project name is 'test' Please modify to your needs! server ip: 10.0.0.10 port: 8085 project name is 'test' 请根据需要修改!

cd /var/www/html
composer create-project codeigniter4/appstarter test

the command above will create a 'test' folder /var/www/html/test上面的命令将创建一个“test”文件夹 /var/www/html/test

  1. Modify the 'env' file修改'env'文件

sudo nano /var/www/html/test/env


app.baseURL = 'http://10.0.0.10:8085'

Important: Do NOT use 'localhost' for the server URL!!!!!重要提示:不要对服务器 URL 使用“localhost”!!!!!!

please uncomment: # CI_ENVIRONMENT = production and modify: CI_ENVIRONMENT = development请取消注释:# CI_ENVIRONMENT = 生产和修改:CI_ENVIRONMENT = 开发

Save the file as '.env' to hide the file将文件另存为“.env”以隐藏文件

  1. NGINX Server Blocks NGINX 服务器块

cd /etc/nginx/sites-available
touch test
sudo nano test

Paste this into the file and save after modifying to your requirements:将其粘贴到文件中并在修改为您的要求后保存:

server {
    listen 8085;
    listen [::]:8085;

    server_name test;

    root  /var/www/html/test/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php-fpm:
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        # With php-cgi:
        # fastcgi_pass 127.0.0.1:9000;
    }

    error_page 404 /index.php;

    # deny access to hidden files such as .htaccess
    location ~ /\. {
        deny all;
    }
}

After saving the file create a symbolic link to sites-enabled:保存文件后,创建一个指向启用站点的符号链接:

cd /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/test  /etc/nginx/sites-enabled/test
  1. Modify File and Group Permissions修改文件和组权限

chown -v -R pi:www-data /var/www/html/test
sudo chmod -v -R 775 /var/www/html/test
  1. Start NGINX启动 NGINX

sudo service nginx start
  1. Open CI4 Welcome Page打开 CI4 欢迎页面

 http://10.0.0.10:8085

Here is a solution.这是一个解决方案。

https://web.archive.org/web/20120504010725/http://hiteshjoshi.com/linux/secure-nginx-and-codeigniter-configuration.html https://web.archive.org/web/20120504010725/http://hiteshjoshi.com/linux/secure-nginx-and-codeigniter-configuration.html

Also, I had to change $config['uri_protocol'] = “DOCUMENT_URI”;另外,我不得不更改$config['uri_protocol'] = “DOCUMENT_URI”; to make it work.使其工作。

UPDATE: Fixed the 404 url from web archive.更新:修复了网络存档中的 404 网址。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM