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

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

一、服务器环境

      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

原文地址:https://www.cnblogs.com/huyihao/p/5538686.html