运维小白部署网站踩坑全过程

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

一、服务器环境

      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

posted @ 2016-05-28 23:53  胡少爷  阅读(591)  评论(0编辑  收藏  举报