zoukankan      html  css  js  c++  java
  • 运维小白部署网站踩坑全过程

    作为一名一个星期之前还是个运维小白的我,经过一番摸爬滚打终于把我的小网站部署上去了

    一、服务器环境

          OK,一开始我得到的是一台centos的服务器,没有装apache/nginxmysqlphp环境,一开始我是使用lnmp一键安装包,结果发现php好多扩展和依赖缺失,重装了php后才解决了问题,mysql也遇到一些问题,所以建议大家在装环境时除非一键lamp/lnmp安装包经历过实践的考验,不然还是老老实实地一个一个组件安装phpmysqlnginx

    lnmp/lamp安装成功的标志:

    PHP:在终端敲php -v,可以看到php的版本信息,并且没有报错信息

       

    Mysql: 在终端敲mysql -uroot -p,接下来会让你输入密码,输入正确的密码后可以看到mysql的一下版本信息、

            

    Nginx: 进入/usr/local/nginx/sbin目录,使用nginx -v查询

       

    二、踩坑之路

    在说遇到的各种坑之前,提醒大家要熟悉phpnginx的配置文件,因为在很多情况下遇到的坑源于默认的配置不符合我们的需要,我们只有了解配置代表什么了,遇到问题才能去修改相应的配置。

    由于我这里使用的是lnmp环境,推荐大家以下几篇博客讲配置详情的:

    (1)nginxhttp://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html

    (2)phphttp://www.cnblogs.com/hbl/archive/2008/02/15/1069367.html

         接下来说说我遇到的坑,这些坑也是新手非常常见的,由于服务器的系统环境版本不一样,我遇到的坑可能只是所有坑中的一小部分。

    1Mysql启动不了

        ps -aux|grep mysql       // 查看正在运行的mysql进程pid

        kill  pid                // 杀死所有的进程

    /etc/init.d/mysql start     // 重启mysql

    2、Mysql安装完的默认密码不是root

       这时候就需要我们手动修改密码了,方法有以下几种:

    方法1: 用SET PASSWORD命令

      MySQL -u root

      mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

    方法2:用mysqladmin

      mysqladmin -u root password "newpass"

      如果root已经设置过密码,采用如下方法

      mysqladmin -u root password oldpass "newpass"

    方法3: 用UPDATE直接编辑user

      mysql -u root

      mysql> use mysql;

    mysql> UPDATE user SET Pass

        word = PASSWORD('newpass') WHERE user = 'root';

      mysql> FLUSH PRIVILEGES;

    在丢失root密码的时候,可以这样

      mysqld_safe --skip-grant-tables&

      mysql -u root mysql

      mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';

    mysql> FLUSH PRIVILEGES;

    3、安装完PHP环境后用php -v查询PHP环境报错

    (1)扩展的报错

         进入/etc/php.ini中关闭对扩展的引用

    (2)其他配置的报错,在未来的PHP版本可能不再适用的

         进入/etc/php.ini将配置设置为Off即可

    4、成功访问了nginx下的index.htm,但访问.php文件报错502 Bad Gateway

      这是因为装的php环境和nginx服务器没有挂钩上,导致php脚本没有经过php的解析。

      我们需要安装php-fpm,这是用来监听对php文件访问的东东,当用户向服务器发出的请求需要访问php文件时,php-fpm必须将对应的php文件给服务器的php环境解析,完成后再返回结果。为了使php环境与nginx服务器挂上钩,需要做以下准备工作:

    1)安装php-fpm(如已经安装则跳过此步)

         yum install php-fpm

    (2)配置nginx.conf文件

         如果不清楚nginx.conf配置文件在哪里,使用

         Whereis  nginx.conf查找目录,如图:

      

         查询结果显示我的nginx配置文件在/usr/local/nginx目录下,OK,我们跟进去

       

       跟进去以后发现有一个conf的目录,应该是配置文件所在位置,继续跟进去

             

      这时候终于发现了nginx.conf,进入vim编辑模式,在80端口配置下增加几行配置,就完成了php-fpmnginx的挂钩

       

        注意还要对nginx进行重新加载

               /etc/init.d/nginx  reload

        这时候发现访问.php文件不报错了

    5、为了隐藏访问目录的index.php,需要在nginx.conf添加重写规则

                                                      

    6、访问web应用报错系统不支持mysqlmysqli(高版本的php只支持mysqli

      一般这种情况发生的原因是搭建php环境时,依赖没有装全,解决方法要么补装php-mysql,但由于依赖的缺失,往往又要装其他依赖很麻烦;所以采取第二种方法,重装php环境,把依赖补全。

    7、上传文件到服务器后无法显示图片的问题

      图片文件的权限不对,用户没有可读权限,导致浏览器无法显示图片

      要避免上传上去的图片用户没有可读权限,需要将php-fpm的用户和ngixn的用户设置成一致。

      先进入nginx.conf查看nginx服务器设置的用户是什么

         

      可以查到,设置的userwww www,将其改为www,保存,接下来我们找一找php-fpm的配置文件

         

      可以找到配置文件是在/etc/php-fpm.confvim进入配置文件中

      进行关键字user字符串搜索没有找到对user的设置,但是在php-fpm.conf我们看到对其他配置文件的引入(假如找到的话直接修改就好了),顺蔓摸瓜进入/etc/php-fpm.d目录

                           

     我们发现只有一个www.conf文件,进入编辑模式进入

                                                                    

    没有发现user的设置,很可能是有一个默认值,如下图,我屏蔽了用户组是apache的配置,设置为group = www,另外增加一个user = www因为我们不知道默认值是多少需要覆盖一下

                                

      OK,保存退出后重新加载php-fpm,执行/etc/init.d/php-fpm reload

      PS.修改了配置文件的组件一般要让修改完的配置生效的命令一般都是reload

      Question: 设置完我们怎么确定配置有没有生效呢?

      Answer: 查看session文件所有者。

      在查看之前,我们需要对session文件保存的目录所有者进行设置,那么session文件的保存目录在哪里呢?

      还是看php-fpm配置文件,很明显我的配置文件里说在/var/lib/php/session

                                                                                                      

     执行:chown  -v  www:www  /var/lib/php/session,再看看文件属性,修改成功。

                                                                        

     清空原有的session,当网站产生新的session时,我们发现文件所有者和用户组是我们设置的www:www,前者是用户也就是配置文件里的user,后者是用户组也就是配置文件里的  group

                        

    我们总算把php-fpmnginx的用户设置一致了,这时php-fpm上传的文件nginx可以读取了,测试了一下上传成功23333

     

    8、关于防火墙端口设置问题       

    很多时候在一台服务器上我们想部署多个应用,通过不同的端口来访问,然而centos的防火墙只默认开放几个常用端口例如8022端口,这个时候就需要我们自己配置防火墙配置文件,新增开放一些端口。

    参考文献:

    1iptables配置文件/etc/sysconfig/iptables内容详解:

         http://www.server110.com/linux/201308/523.html

    (2)CentOS防火墙iptables的配置方法详解

         http://www.111cn.net/sys/CentOS/53293.htm

    配置文件位置: /etc/sysconfig/iptables

    通过添加-A  INPUT  -p  tcp  --dport  8000  -j  ACCEPT

    实现了新增对8000端口的访问开放,然后我们在nginx服务器里设置端口目录就可以访问不同的应用了。

    PS.修改完一定要reload防火墙, service iptables restart

                                                                

    PS.欢迎关注SCAU码农之家公众号,希望能跟大家多多交流

         

    我们总算把php-fpmnginx的用户设置一致了,这时php-fpm上传的文件nginx可以读取了,测试了一下上传成功23333

     

    8、关于防火墙端口设置问题       

    很多时候在一台服务器上我们想部署多个应用,通过不同的端口来访问,然而centos的防火墙只默认开放几个常用端口例如8022端口,这个时候就需要我们自己配置防火墙配置文件,新增开放一些端口。

    参考文献:

    1iptables配置文件/etc/sysconfig/iptables内容详解:

         http://www.server110.com/linux/201308/523.html

    (2)CentOS防火墙iptables的配置方法详解

         http://www.111cn.net/sys/CentOS/53293.htm

    配置文件位置: /etc/sysconfig/iptables

    通过添加-A  INPUT  -p  tcp  --dport  8000  -j  ACCEPT

    实现了新增对8000端口的访问开放,然后我们在nginx服务器里设置端口目录就可以访问不同的应用了。

    PS.修改完一定要reload防火墙, service iptables restart

  • 相关阅读:
    Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
    DHCP "No subnet declaration for xxx (no IPv4 addresses)" 报错
    Centos安装前端开发常用软件
    kubernetes学习笔记之十:RBAC(二)
    k8s学习笔记之StorageClass+NFS
    k8s学习笔记之ConfigMap和Secret
    k8s笔记之chartmuseum搭建
    K8S集群集成harbor(1.9.3)服务并配置HTTPS
    Docker镜像仓库Harbor1.7.0搭建及配置
    Nginx自建SSL证书部署HTTPS网站
  • 原文地址:https://www.cnblogs.com/huyihao/p/5538686.html
Copyright © 2011-2022 走看看