zoukankan      html  css  js  c++  java
  • nginx-php-mysql

    碎碎念

    127.0.0.1

    location里面有特殊的定义变量的方式,可以在location里面直接调用,而在命令行或者脚本里面则无法调用
    	作用:使location具有通用性
    [root@web02 ~]# cat /etc/nginx/fastcgi_params	#代理PHP的代码
    [root@web01 /code]# ll /etc/nginx/uwsgi_params 	#代理Python
    
    nginx中无论是静态请求还是动态请求,都不能直接请求数据库,要经PHP代码的解析
    
    php是一种代码解析器		中间商
    	PHP				PHP代码
    	Tomcat			Java代码
    	resin			Java代码
    	python			Python代码
    	
    rpm -Uvh  安装本地的rpm包 = yum locainstall -y
    依赖包可能会冲突,如果冲突的话,先yum remove -y 就好
    
    php-fpm	是PHP的进程管理命令
    
    /etc/php-fpm.conf	管理PHP进程的配置文件
    
    /etc/php-fpm.d
    /etc/php-fpm.d/www.conf
    
    /etc/php.ini 
    
    
    SUN公司		java	mysql
    oracle(甲骨文公司)	
    
    9000	php
    3306	mysql
    111		rpcbind
    80		nginx默认
    22		ssh
    53		DNS
    
    fastcgi和http和https一样,都是一种协议,只不过http是浏览器使用的协议,fastcgi是web服务器和数据库之间使用的协议
    所谓的协议也就是调制解调中使用的规则
    
    nginx里配置的是主机地址,而不是域名服务器 如需测试域名,请修改host文件 如需让别人能访问你的域名,需要购买域名 跟配置nginx无关系
    
    回送地址:127.0.0.1。一般用于测试使用。例如:ping 127.0.0.1 来测试本机TCP/IP是否正常。
    	作用:
    		:一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题
    		:某些SERVER/CLIENT的应用程序在运行时需调用服务器上的资源,一般要指定SERVER的IP地址,但当该程序要在同一台机器上运行而没有别的SERVER时就可以把SERVER的资源装在本机,SERVER的IP地址设为127.0.0.1也同样可以运行
    
    localhost的来说,实质上就是指向127.0.0.1这个本地IP地址。在操作系统中有个配置文件(windows中路径为C:WINDOWSsystem32driversetchosts,Unix/Linux路径为/etc/hosts)将localhost与127.0.0.1绑定在了一起
    
    “ping 127.1”和“ping 127.0.0.1”这两条命令是一样的,都是在进行回路测试
    
    location的指向和精确,特殊符号指定站点目录,浏览器URI指定文件
    
    nginx上可以使用PHP的语法,打印出和他连接的PHP的详细信息(要他的简历),但是不能解析.php代码(做他做的事)
    
    location之间可以自动跳转的(比如WordPress访问.php文件的时候),原理是对于某些条件的判断,可以在文件中指定某些跳转,可以说nginx,计算机都是有一层一层的判断组成的
    /code/wordpress/wordpress_dir/index.php,wp软件包里面以.php结尾的文件,都是配置用户登录信息的文件,可以通过浏览器直接访问location(别的后缀不能访问)
    #127.0.0.1和IP之间的关系
    [root@web01 ~]# cat /etc/hosts		
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    图形化的作用仅仅是为了人民更好的理解而已,本质上还是对系统文件的修改
    
    502		nginx服务器找不到后端主机(PHP)
    
    不同的服务有不同的报错默认页面,这些报错的反馈页面的可以修改的
    
    nginx通过开发写的代码连接缓存,数据库
    nginx使用fastcgi代理,通过开发写的代码,连接PHP,通过开发写的代码,连接缓存,数据库
    
    syntax #语法错误
    
    错误反馈可以用状态码表示,也可以使用语句,图片,不同的服务报错不同
    
    创建多个目录作为站点目录
    
    GET 请求
    post 上传
    
    client_max_body_size 500M;		#修改nginx默认上传文件的大小
    
    .php文件直接放在站点目录下,这样在浏览器直接访问域名的话可以直接跳转到相关的php文件
    
    有的时候nginx配置文件有问题,状态码是200
    
    index控制默认访问文件,URI控制访问哪个文件
    

    LNMP环境准备

    相关网站

    使用浏览器百度,可以自己找指定版本的源

    find /var/cache/yum/x86_64/7/ -name ''*.rpm"

    1.配置nginx官方源
    vim /etc/yum.repos.d/nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    2.创建nginx的默认启动用户
    groupadd www -g 666 
    useradd www -u 666 -g 666 -s /sbin/nologin -M
    
    3.下载官方nginx
    yum install -y nginx
    
    4.修改nginx配置文件
    sed -i '/^user/c user www;' /etc/nginx/nginx.conf
    [root@web01 ~]# vim /etc/nginx/nginx.conf 	(二选一)
    user www;
    
    5.启动,加入开机自启动
    systemctl start nginx
    systemctl enable nginx
    
    
    6.使用第三方扩展源安装php7.1
    #先卸载系统自带的php5.4
    [root@nginx ~]# yum remove -y php-mysql-5.4 php php-fpm php-common
    
    #配置第三方源,下载指定版本的php(7.1)
    [root@nginx ~]# vim /etc/yum.repos.d/php.repo
    [php-webtatic]
    name = PHP Repository
    baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
    gpgcheck = 0
    
    [root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
    
    考虑的网速的原因,可以选择本地上传
    [root@web01 ~/nginx_php]# rpm -Uvh ./*
    
    查看PHP版本
    [root@web02 php]# rpm -q php71w-mysqlnd 
    php71w-mysqlnd-7.1.33-1.w7.x86_64
    
    7.配置php-fpm用户与Nginx的运行用户保持一致,不修改的话,nginx连不上PHP
    sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
    sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf
    
    8.启动php-fpm加入开机自启
    systemctl start php-fpm
    systemctl enable php-fpm
    
    9.安装Mariadb数据库(#安装mariadb客户端,server服务端,使用依赖的方式安装服务端)
    yum install mariadb-server -y
    
    10.启动Mariadb加入开机自动
    systemctl start mariadb
    systemctl enable mariadb
    
    11.给Mariadb配置登陆密码
    mysql		#使用web连接数据库(刚下载好的可以直接连接,给root用户密码之后就不能连接了)
    	mysqladmin -uroot password syy123	给mysql root用户密码(不能重复给密码)(选做)
    	mysql -uroot -psyy123		#使用web连接数据库(使用root身份)
    	create database xx;		#创建数据库
    	show databases;			#查看数据库
    	grant all on wp.* to wp_user@'localhost' identified by '1';(%,10.0.0.%,localhost,10.0.0.7)
        这一步,是创建 库wp的用户,指定使用密码
    
    select user,host from mysql.user; #查看 数据库用户身份创建成功
    show tables;	查看表前缀
    
    12.检查进程和端口
    ps -ef|grep -E 'nginx|php|mysql'
    netstat -lntup|grep -E '80|9000|3306'
    
    mysql语句通常以;结尾,安装好的数据库,会有4个系统库
    
    13.检查nginx和PHP,PHP和mysql数据库能不能连接
    
    [root@web01 ~]# which php-fpm	
    #php服务管理工具,可以直接调用PHP解析器,解析代码,连接数据库,返回数据给web,返回数据给用户
    /usr/sbin/php-fpm
    [root@web01 ~]# which php
    /usr/bin/php
    [root@web01 ~]# yum provides php-fpm
    
    [root@web01 ~]# ps -ef|grep php
    root        868      1  0 21:36 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
    apache        1181    868  0 21:36 ?        00:00:00 php-fpm: pool www
    
    #nginx内置PHP变量
    [root@web01 ~]# vim /etc/nginx/scgi_params 		#scgi代理配置文件,代理PHP
    scgi_param  REQUEST_METHOD     $request_method;	 #请求的动作(GET,POST)
    scgi_param  REQUEST_URI        $request_uri;	 #请求的地址不带参数
    scgi_param  QUERY_STRING       $query_string;	#请求的参数;如?
    scgi_param  CONTENT_TYPE       $content_type;	#请求头中的Content-Type字段
    scgi_param  DOCUMENT_URI       $document_uri;	#与$uri相同
    scgi_param  DOCUMENT_ROOT      $document_root;	##网站的根目录,在server配置中root指令中指定的值(站点目录)
    
    [root@web01 ~]# vim /etc/nginx/fastcgi_params
    fastcgi_param  QUERY_STRING       $query_string;		#请求的参数;如?
    fastcgi_param  REQUEST_METHOD     $request_method;		#请求的动作
    fastcgi_param  CONTENT_TYPE       $content_type;		#请求头中的Content-Type字段
    fastcgi_param  CONTENT_LENGTH     $content_length;	 #请求头中的Content-length字段。
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;	##脚本名称
    
    [root@web02 php]# ll /etc/php-fpm.conf 	#PHP的启动进程文件
    -rw-r--r-- 1 root root 4207 Oct 26  2019 /etc/php-fpm.conf
    [root@web02 php]# ll /etc/php-fpm.d		#
    -rw-r--r-- 1 root root 17962 May 20 23:15 www.conf	#PHP服务的配置文件
    [root@web02 php]# ll /etc/php.ini 		#跟PHP代码程序相关的文件
    -rw-r--r-- 1 root root 62641 Oct 26  2019 /etc/php.ini
    
    [root@web01 ~]# vim /etc/nginx/conf.d/default.conf 		
    #该文件记录着PHP默认的location配置,可以使用这个location让nginx与PHP建立连接,PHP可以直接解析代码,也可以作为中介,建立起nginx和mysql数据库之间的连接,(为了让用户在浏览器上可以直接看到内容 )
    
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
    [root@web02 ~]# rpm -q mariadb
    mariadb-5.5.65-1.el7.x86_64
    [root@web02 ~]# rpm -ql mariadb
    /etc/my.cnf.d/client.cnf	#mysql数据库的配置文件
    /usr/bin/aria_chk
    /usr/bin/aria_dump_log
    /usr/bin/aria_ftdump
    /usr/bin/aria_pack
    /usr/bin/aria_read_log
    /usr/bin/msql2mysql
    /usr/bin/my_print_defaults
    /usr/bin/mysql				#可以TAB和使用相对路径执行
    /usr/bin/mysql_find_rows
    /usr/bin/mysql_waitpid
    /usr/bin/mysqlaccess
    /usr/bin/mysqladmin
    /usr/bin/mysqlbinlog
    /usr/bin/mysqlcheck
    /usr/bin/mysqldump
    /usr/bin/mysqlimport
    /usr/bin/mysqlshow
    /usr/bin/mysqlslap
    
    [root@web02 php]# ll /etc/nginx/uwsgi_params 	#代理Python
    -rw-r--r-- 1 root root 664 Apr 21 23:07 /etc/nginx/uwsgi_params
    
    [root@web02 ~]# ll /var/lib/mysql/mysql.sock	#与数据库的本地连接有关
    srwxrwxrwx 1 mysql mysql 0 May 21 00:38 /var/lib/mysql/mysql.sock
    
    fastcgi_pass   127.0.0.1:9000;	#这一行的作用就是告诉web PHP服务器在哪,只有在这里指定了IP,nginx才能找到PHP服务器,解析.php代码,直接反馈给用户看,
    
    关于php的location站点目录下的info.php文件,可以用来判断nginx服务端有没有连接到php,同时打印出PHP的详细信息
    

    LNMP架构环境配置

    ngx_http_fastcgi_module模块

    作用:nginx服务可以使用ngx_http_fastcgi_module模块将请求发送到支持ngx_http_fastcgi_module模块服务器

    127.0.0.0.1=localhost=本机ip

    测试web能不能连接PHP

    访问cs.php.com---找到/php/index.php(优先级低)----跳转到location ~ .php$(代理php)---解析/php/index.php---调用数据库---反馈给用户

    index.php 该文件是用户注册使用的文件(可以跳转)

    wp-settings.php 配置软件的文件

    nginx搭载的网站中,运行的软件绝大多数都是以.php结尾的文件,要想使用这些软件,就需要fastcgi代理到PHP,不然nginx自身无法直接使用.php文件(在/etc/nginx/mime.types中指定了),接会下载

    fastcgi_pass 127.0.0.1:9000; php搭载在哪,就用谁的IP

    1.
    vim /etc/nginx/conf.d/php.conf 
    server {
            listen 80;
            server_name cs.php.com;
            root /php; 
            index index.php;
            
            location ~ .php$ {
            fastcgi_pass   127.0.0.1:9000;		
            #fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        /etc/nginx/fastcgi_params;
            }
    }
    	index后面的文件的后缀无所谓,重要的是文件中的内容,因为内容中可以指定解码方式
    	浏览器默认使用HTML语法解码文件,如果想要浏览器解码.php的文件,编辑的文件中一定要告诉浏览器,不然浏览器就用HTML语法解析
    	nginx总是尽量的去显示网站中文件的内容,不能显示就下载
    index后面只是一个页面而已,用不用无所谓
    打印出的PHP信息表,Variables里面记录了指定的server语句中的变量的调用信息
    如果使用浏览器能打开PHP的信息表,那么说明nginx和PHP建立了连接
    	使用变量的好处就是,简单的写法调用的站点目录下的所有的文件(调用变量,定位URI)
    	
        index index.php;	该文件主要起一个跳转的作用(如果直接输入域名访问的话是403)
    	在这里指定fastcgi_index 其实是没有用的,因为前面的location ~* .php$已经把“/结束”这种情况排除了
    SCRIPT_FILENAME=SCRIPT_NAME
    #fastcgi_index  index.php;	这个文件尽量写上
    
    2.重载nginx配置文件
    nginx -sreload
    
    3.创建站点目录
    mkdir /php
    
    4.使用PHP语法打印出PHP的详细信息 ###PHP语法很严格,不能随便加空格和TAB键(该文件通用)
    vim /php/index.php 	#改文件名随意,放在index后面哪个位置都行(是默认不默认的关系,index.php优先,不考虑第一位的话)
    <font color="red">syy</font>
    <?php
            phpinfo();
    ?>
    
    5.域名解析
    10.0.0.7 cs.php.com
    
    6.浏览器访问cs.php.com和cs.php.com/info.php	#小心报错File not found.
    
    7.删除PHP信息打印(危险的文件)
    rm -rf /php/index.php
    

    部署WordPress

    WordPress官网

    1.nginx具体配置信息
    vim /etc/nginx/conf.d/wp.conf
    server {
    	listen 80;
    	server_name cs.wp.com;
    	root /wp;
    	index info.php index.php;
     
    	location ~ .php$ {
    		fastcgi_pass   127.0.0.1:9000;
    		fastcgi_index  index.php;
    		fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		include fastcgi_params;
    		}
    }
    
    2.重载nginx服务
    nginx -sreload
    
    3.获取wordpress产品,解压并部署wordpress
    [root@nginx ~]# mkdir /wp 
    [root@nginx ~]# cd /wp
    
    #三选一
    [root@nginx ~]# http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz
    [root@nginx wordpress]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
    [root@nginx code]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
    
    [root@nginx ~]# tar xf wordpress-5.0.3-zh_CN.tar.gz
    [root@nginx ~]# chown -R www.www /wp
    
    
    4.由于wordpress产品需要依赖数据库,所以需要手动建立数据库(#)
    mysql -uroot -psyy123
    create database wp;			#创建数据库(类似于目录)
    show databases;				#查看数据库(类似于查看文件)
    exi或者q或者quit或者Ctrl+c或者Ctrl+d
    
    grant all on wp.* to wp_user@'localhost' identified by '1';
    
    5.域名解析
    10.0.0.7 cs.wp.com
    
    6.通过浏览器访问wordpress,并部署该产品
    cs.wp.com
    
    
    
    

    判断PHP和数据库是否 连接

    查看nginx能不能连接PHP和数据库

    php本身不能和数据库连接,是通过开发写的文件中的代码实现和数据库的连接

    wp-config.php 这个文件就是把用户的注册设置记录到数据库的(连接)

    localhost代表本机,如果数据库在别的服务器,那么就写对应的IP

    1.PHP所在的服务器
    在/wp目录下创建mysqli.php文件,填入对应的数据库IP、用户名、密码
    vim /wp/mysqli.php
    <?php
        $servername = "localhost";
        $username = "wp_user";
        $password = "1";
    
        // 创建连接
        $conn = mysqli_connect($servername, $username, $password);
    
        // 检测连接
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }
        echo "小哥哥,php可以连接MySQL...";
    ?>
    
    <img style='100%;height:100%;' src=https://blog.driverzeng.com/zenglaoshi/php_mysql.png>
    
    2.
    浏览器访问	www.wp.com/mysql.php
    
    3.为了数据库的安全
    rm -rf /code/php/php_dir/mysqli.php
    

    部署知乎产品Wecenter

    1.nginx具体配置信息
    vim /etc/nginx/conf.d/we.conf
    server {
        listen 80;
        server_name cs.we.com;
        root /zh;
        index index.php index.html;
     
            location ~ .php$ {
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    include        fastcgi_params;
            }
    }
     
    2.重启nginx服务
    [root@http-server ~]# nginx -sreload
    
    3.创建站点目录
    mkdir /zh
    
    4.下载Wecenter产品,部署Wecenter并授权
    
    [root@web02 ~]# wget http://test.driverzeng.com/Nginx_Code/WeCenter_3-2-1.zip
    [root@web02 ~]# unzip WeCenter_3-2-1.zip
    [root@web02 ~]# mv WeCenter_3-2-1/ /zh
    [root@web02 ~]# chown -R www.www /zh
    
    5..由于wecenter产品需要依赖数据库, 所以需要手动建立数据库
    #1.登陆数据库
    [root@http-server ~]# mysql -uroot -psyy123
     
    #2.创建wordpress数据库
    MariaDB [(none)]> create database zh;
    MariaDB [(none)]> exit
    
    6.域名解析
    10.0.0.7 cs.zh.com
    
    7.通过浏览器访问网站
    cs.zh.com
    
  • 相关阅读:
    ZYB建围墙
    换根DP
    原码,反码,补码的计算
    字符串游戏-博弈论-trie
    【十连赛day8】神炎皇
    生成序列
    【USACO 2006 February Silver】产奶安排Stall Reservations-贪心
    tar 压缩解压命令
    java 注解
    回溯算法解决全排列问题
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12932698.html
Copyright © 2011-2022 走看看