为了私藏点小图图,搭个开源相册

背景

CentOS上搭建 meiupic 图床(一个PHP写的开源相册),之前也搭建过 PHP 的 LNMP 环境,但是那是很长时间的事了,并且当时使用的是 Ubuntu Server 版本服务器。本以为很快就搭建 OK,却还是折腾了一晚上,真是惭愧…

一、CentOS配置 络

本是一件多简单的事,不就是在配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0里写入下面这几行配置嘛。

DEVICE=eth0BOOTPROTO=staticONBOOT=yesipaddr=192.168.1.123netmask=255.255.255.0gateway=192.168.1.1

二、Nginx

1、安装

教程很多,贴一条备用,没准哪天又忘了怎么编译安装了。以前在 Ubuntu 上都是直接 sudo apt-get install nginx ,可是在 CentOS 里貌似默认没有,学会编译安装 nginx 还有必要的。而且编译安装的版本使用起来有一些差异。

Nginx安装

注意点:

  • pcre不要选择最新版pcre2,选择pcre2会 错,有能力解决者可以自行选择;
  • 源码全部下载在/usr/local/src/目录下,便于管理。
  • 2、使用

    重新启动service nginx restart?No,No,No,别被自动安装的软件惯坏了,nginx应该这么用。

  • /usr/local/nginx/nginx 启动主程序,安装目录下运行nginx,我的版本是1.7,其他版本nginx执行文件也许不在nginx目录下
  • /usr/local/nginx/nginx -s reload 重新加载
  • /usr/local/nginx/nginx -s stop 停止
  • 当然不想输入那么长的路径也行,创建一个快捷方式,如果还是想使用service命令也行,在/etc/init.d目录下创建快捷方式。命令如下:

    cp -s /usr/local/nginx/nginx /etc/init.d/

    三、MySQL设置root密码

    安装MySQL的方法倒是跟之前没两样,偷懒的方法就这样yum install -y mysql*,OK,一股脑全装上了,装完设置root密码方法如下:

    方法1: 用SET PASSWORD命令

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

    方法2:用mysqladmin

    mysqladmin -u root password "newpass",如果root已经设置过密码,采用如下方法:mysqladmin -u root password oldpass "newpass"
    mysql -u rootmysql> use mysql;mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';mysql> FLUSH PRIVILEGES;在丢失root密码的时候,可以这样mysqld_safe --skip-grant-tables&mysql -u root mysqlmysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';mysql> FLUSH PRIVILEGES;

    瞅一眼密码啥样…

    四、php + nginx配置

    这次花费最长的时间就是这块了,之前基本没怎么接触过PHP开发,php的开发环境更是半知不解。其实这次搭建完也是半知不解。

    想要nginx解析php文件,那么需要安装php-fpm,它是个啥?

    FastCGI Process Manager:FastCGI进程管理器,fpm能根据访问的压力动态的唤起cgi进程和销毁以到达动态的调整cgi数量,这样可以有效的使用内存。

    跟着 yum install php* 命令,全安装上了。

    接下来就是配置 nginx 了,使其能够解析并转发 meiupic 源相册,我将相册源代码解压到了/usr/www/ 目录下了,然后就是配置 nginx 了,打开 nginx 配置文件,vim
    /usr/local/nginx/nginx.conf,找到 http 下的 server 区域,改成如下:

    ...此处省略http { .... server{ listen 8080; server_name 192.168.1.123; location / { root /usr/www; index index.php; } location ~ .php$ { root /usr/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params;  } }}...省略若干

    listen 端口,我将默认的80改成了8080,server_name改成本机的IP,root改成php开源项目的源代码目录,然后最重要的那段php的配置当然不是我写的,只是将默认对PHP的配置注释给去掉了,改一下root就完事了。

    好了,迫不及待的想试一试了。依次检查各种服务是否正常,nginx、mysql、php-fpm….启动了的重启一下,没有启动的启动一下。

    service mysqld restart service php-fpm restart /usr/local/nginx/nginx -s reload 

    OK ~浏览器运行http://192.168.1.123:8080,第一次嘛,必然是没有反应的。出现问题并不可怕,主要是要知道怎么找原因。

    1. 首先想到的就是 络是否通,主机ping 192.168.1.123,OK!
    2. 然后测试页面是否从服务器返回了,很显然在主机上测试是没有返回页面,而不是返回404。那么测试一下在虚拟机中是否返回页面了,没有浏览器怎么玩?没事,curl 192.168.1.123:8080,抓取页面代码。返回了。

    好了,原因找到了, 络是通的,而页面无法访问,可是本地可以访问,这么一讲,就知道是防火墙的问题了。

    五、设置防火墙

    防火墙的配置是Linux运维的重点内容,CentOS默认只开通了22端口的访问配置。这里我们需要开启端口8080,亦或是关闭了它(当然不建议这么做)。

    教程很多,或是直接看man iptables,你会学到很多。关于防火墙的配置文件是/etc/sysconfig/iptables,学习就靠自己了。

    关闭的方法:service iptables stop。

    OK,设置好防火墙后,又是一系列重启服务操作,然后浏览器访问,这次不 错了,可是File Not Find,what’s the fuck!

    六、fastcgi_params

    最后找到就是fastcgi_params配置的问题,中间寻找答案的艰辛就不多说了,这里记下,给自己提个醒,同时给新人指路。我也是从前人那里找到的答案。

    nginx调用php-fpm出错解决方法和nginx配置详解

    问题就在上面nginx配置文件中的的这两句:

    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi_params; 

    解决方法有两种(其实是一个意思):

    把第一句改成如下:

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    或者把第二句改成如下:

    include fastcgi.conf

    为什么说一样,可以自行查看一下,nginx 安装目录下,fastcgi_param 以及 fastcgi.conf 这两个文件的内容差异。

    vim -O /usr/local/nginx/fastcgi_params /usr/local/nginx/fastcgi.conf

    解决完这个问题后,又是一堆服务的重启,然后浏览器打开 http://192.168.1.123:8080,OK,运行安装程序了。

    七、安装 meiupic

    目录权限问题,到/usr/www目录下,设置一下,各个文件目录的访问权限。如果嫌麻烦,直接chmod 777 /usr/www/*,到这里基本就完成了。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年1月3日
    下一篇 2019年1月4日

    相关推荐