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

  • 相关阅读:
    SRM 441(1-250pt, 1-500pt)
    SRM 387(1-250pt)
    SRM 388(1-250pt)
    SRM 389(1-250pt)
    SRM 601(1-250pt,500pt)
    SRM 409(1-250pt, 1-500pt)
    SRM 408(1-250pt, 1-500pt)
    unique() 去重函数
    poj3468(A Simple Problem with Integers)
    HDU1394(Minimum Inversion Number)
  • 原文地址:https://www.cnblogs.com/huyihao/p/5538686.html
Copyright © 2011-2022 走看看