学习目标和内容
1、能够部署配置Nginx生产环境
2、能够部署配置PHP生产环境
3、能够实现项目代码上线配置
之前的课程中,已经搭建了MySQL服务,不管之后公司的业务使用何种后端代码,很大部分都是使用MySQL作为数据存储服务。
nginx是一款轻量级的服务器软件
web http server location
proxy 反向代理 负载均衡
mail pop3 smtp
特点:
①热部署 重载快速
②高并发 同时响应的请求多
③响应快 轻量级 加载的东西少
④消耗低 cpu和内存占用率都比apache低
⑤分布式
问题编译过程中出现问题:
依赖解决
nginx依赖pcre库进行url重写,如果已经安装可以忽略
如果需要部署支持https协议,需要ssl的支持,安装openssl
shell > yum -y install pcre-devel zlib-devel openssl-devel
解压进入目录
shell > tar zxf nginx-1.14.0.tar.gz
shell > cd nginx-1.14.0
配置编译参数
shell > ./configure --prefix=/usr/local/nginx-1.14.0 --with-http_ssl_module
编译并安装到目录
shell > make && make install
添加启动服务
nginx编译包里默认服务启动脚本模板,可以通过社区获得
https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
nginx的启动脚本文件,可以通过以上链接获得,或者使用之前分享给大家的,也就是通过yum方式安装后,生成的脚本。
修改软件和配置路径即可
shell > chmod +x /etc/init.d/nginx
shell > chkconfig --add nginx
这里nginx已经部署配置完成,可以通过service命令进行管理,自启动。
网站应用:
页面分类:
静态页面 html(css、js) 页面写好之后,多次访问还是一个样儿
动态页面 用户可以和服务器进行交互页面
执行动态页面,需要和服务器进行交互,使用后端语言进行开发
LNMP 使用php进行开发交互
编程语言:
编译型: 开发之后,需要把代码进行预编译,生成一种中间文件,再去执行
编译后的文件,执行过程是很快,编译过程中会进行语法的检查,优化
C C++ JAVA go
解释型: 通过语言脚本的解释器,预执行检查语法,一行一行的顺序执行。效率稍低一些。边解释边执行
shell (/bin/bash) PHP python ruby
php的生产环境由开发代码的人决定,里面的编程的API(函数、方法)不同版本会不一样
当前稳定php5系列是5.6.36
稳定的php7系列是7.2.5
mysql_connect函数废弃了(很多开源的老代码使用的这个函数)
解压进入目录
shell > tar zxf php-5.6.36.tar.gz
shell > cd php-5.6.36
编译参数配置
shell > ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
解决遇到的依赖软件问题
shell > yum -y install libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
libmcrypt-devel需要epel源里安装,yum源需要提前配置好epel的源
如果epel源不能够使用,那就使用源码包编译的方式安装libmcrypt
shell > tar xvf libmcrypt-2.5.7.tar.gz
shell > cd libmcrypt-2.5.7
shell > ./configure && make && make install
选做Tip:configure遇到的问题
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
解决方案:加载类库目录
shell > echo "/usr/local/lib" >> /etc/ld.so.conf.d/local.conf
shell > echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local.conf
shell > ldconfig
编译并安装到目录
shell > make && make install
查看是否安装到--prefix的目录路径
LAMP和LNMP在使用和配置PHP的一个区别:
PHP-FPM 是PHP的一种服务器管理形式
复制配置文件
shell > cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
shell > cp /root/soft/php-5.6.36/php.ini-development /usr/local/php/etc/php.ini
注意PHP.ini配置文件类型
development配置项多一些 显示语法错误等等信息
production 默认开启项少 生产环境是不要出现错误 暴露服务器目录结构
添加php-fpm运行用户
shell > groupadd www
shell > useradd -s /sbin/nologin -g www -M www
添加启动服务
shell > cp /root/soft/php-5.6.36/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
shell > chmod +x /etc/init.d/php-fpm
shell > chkconfig --add php-fpm
shell > chkconfig php-fpm on
添加环境变量
shell > echo 'PATH=/usr/local/php/bin:$PATH' >> /etc/profile
shell > source /etc/profile
如果使用php语法写的脚本,需要通过/usr/local/php/bin/php 解释执行
编写一个php-cli 脚本测试
执行脚本
网站应用配置
nginx和php进行关联,告诉nginx,php在哪里
$document_root加载的就是root的目录
测试网站index.php
多种方式上传,scp、pscp、sftp、lrzsz
解压
thinkphp5 需要解析绑定域名到public目录
shell > vim /usr/local/nginx/conf/nginx.conf
检测配置语法并重载配置文件
如果需要在windows访问,需要解析win下的hosts文件
C:\Windows\System32\drivers\etc
出现403的问题:
403有时候,可能也是因为绑定的访问目录路径有问题,有可能是被配置文件里的deny禁止了。
解决方案:
解决数据库问题
以上问题解决办法:
①登录mysql数据库命令行
创建数据库,导入数据库文件
②修改配置文件
thinkphp5开发下application文件夹下database.php配置文件
项目上线成功
重写解决路径问题
pathinfo路径方式
作业:
①检测服务的脚本 返回服务的状态信息
服务在不在线,service status|ps -A|netstat
②每个小时 执行一次 服务状态保存到一个日志中(写一些信息)
crontab