Linux搭建图片服务器减轻传统服务器的压力(nginx+vsftpd)
<h3> 传统项目中的图片管理</h3><p>传统项目中,可以在web项目中添加一个文件夹,来存放上传的图片。例如在工程的根目录WebRoot下创建一个images文件夹。把图片存放在此文件夹中就可以直接使用在工程中引用。</p>
<p>优点:引用方便,便于管理</p>
<p>缺点:</p>
<p>1、如果是分布式环境图片引用会出现问题。</p>
<p>2、图片的下载会给服务器增加额外的压力。</p>
<h2> </h2>
<h2><strong>一、安装Nginx </strong></h2>
<h3>1 <strong>nginx<span style="font-family: 宋体">安装环境</span></strong></h3>
<p>nginx<span style="font-family: 宋体">是</span><span style="font-family: Calibri">C</span><span style="font-family: 宋体">语言开发,建议在</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">上运行,本教程使用</span><span style="font-family: Calibri">Centos6.5</span><span style="font-family: 宋体">作为安装环境。</span></p>
<p><span style="font-family: 宋体">安装</span>nginx<span style="font-family: 宋体">需要先将官网下载的源码进行编译,编译依赖</span><span style="font-family: Calibri">gcc</span><span style="font-family: 宋体">环境,如果没有</span><span style="font-family: Calibri">gcc</span><span style="font-family: 宋体">环境,需要安装</span><span style="font-family: Calibri">gcc</span><span style="font-family: 宋体">:</span></p>
<p> </p>
<div class="cnblogs_code">
<pre>yum install gcc-c++</pre>
</div>
<p> </p>
<p> </p>
<p>PCRE(Perl Compatible Regular Expressions)<span style="font-family: 宋体">是一个</span><span style="font-family: Calibri">Perl</span><span style="font-family: 宋体">库,包括 </span><span style="font-family: Calibri">perl </span><span style="font-family: 宋体">兼容的正则表达式库。</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">的</span><span style="font-family: Calibri">http</span><span style="font-family: 宋体">模块使用</span><span style="font-family: Calibri">pcre</span><span style="font-family: 宋体">来解析正则表达式,所以需要在</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">上安装</span><span style="font-family: Calibri">pcre</span><span style="font-family: 宋体">库。</span></p>
<div class="cnblogs_code">
<pre>yum install -y pcre pcre-devel</pre>
</div>
<p> </p>
<p><span style="font-family: 宋体">注:</span>pcre-devel<span style="font-family: 宋体">是使用</span><span style="font-family: Calibri">pcre</span><span style="font-family: 宋体">开发的一个二次开发库。</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">也需要此库。</span></p>
<p>zlib<span style="font-family: 宋体">库提供了很多种压缩和解压缩的方式,</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">使用</span><span style="font-family: Calibri">zlib</span><span style="font-family: 宋体">对</span><span style="font-family: Calibri">http</span><span style="font-family: 宋体">包的内容进行</span><span style="font-family: Calibri">gzip</span><span style="font-family: 宋体">,所以需要在</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">上安装</span><span style="font-family: Calibri">zlib</span><span style="font-family: 宋体">库。</span></p>
<div class="cnblogs_code">
<pre>yum install -y zlib zlib-devel</pre>
</div>
<p> </p>
<p>OpenSSL <span style="font-family: 宋体">是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及</span><span style="font-family: Calibri">SSL</span><span style="font-family: 宋体">协议,并提供丰富的应用程序供测试或其它目的使用。</span></p>
<p>nginx<span style="font-family: 宋体">不仅支持</span><span style="font-family: Calibri">http</span><span style="font-family: 宋体">协议,还支持</span><span style="font-family: Calibri">https</span><span style="font-family: 宋体">(即在</span><span style="font-family: Calibri">ssl</span><span style="font-family: 宋体">协议上传输</span><span style="font-family: Calibri">http</span><span style="font-family: 宋体">),所以需要在</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">安装</span><span style="font-family: Calibri">openssl</span><span style="font-family: 宋体">库。</span></p>
<div class="cnblogs_code">
<pre>yum install -y openssl openssl-devel</pre>
</div>
<p> </p>
<h3>2 <strong>编译安装</strong></h3>
<p><span style="font-family: 宋体">将</span>nginx-1.8.0.tar.gz<span style="font-family: 宋体">拷贝至</span><span style="font-family: Calibri">linux</span><span style="font-family: 宋体">服务器。</span></p>
<p>解压:</p>
<div class="cnblogs_code">
<pre>tar -zxvf nginx-<span style="color: rgba(128, 0, 128, 1)">1.8</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>.tar.gz</pre>
</div>
<p>进入目录:</p>
<div class="cnblogs_code">
<pre>cd nginx-<span style="color: rgba(128, 0, 128, 1)">1.8</span>.<span style="color: rgba(128, 0, 128, 1)">0</span></pre>
</div>
<p> </p>
<p class="15">2.1、 configure</p>
<p>./configure --help<span style="font-family: 宋体">查询详细参数(参考本教程附录部分:</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">编译参数)</span></p>
<p> </p>
<p>参数设置如下:</p>
<p>./configure \</p>
<p>--prefix=/usr/local/nginx \</p>
<p>--pid-path=/var/run/nginx.pid \</p>
<p>--lock-path=/var/lock/nginx.lock \</p>
<p>--error-log-path=/var/log/nginx/error.log \</p>
<p>--http-log-path=/var/log/nginx/access.log \</p>
<p>--with-http_gzip_static_module \</p>
<p>--http-client-body-temp-path=/var/temp/nginx/client \</p>
<p>--http-proxy-temp-path=/var/temp/nginx/proxy \</p>
<p>--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \</p>
<p>--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \</p>
<p>--http-scgi-temp-path=/var/temp/nginx/scgi</p>
<p> </p>
<p><strong><span style="font-family: 宋体">注意:上边将临时文件目录指定为</span>/var/temp/nginx<span style="font-family: 宋体">,需要在</span><span style="font-family: Calibri">/var</span><span style="font-family: 宋体">下创建</span><span style="font-family: Calibri">temp</span><span style="font-family: 宋体">及</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">目录</span></strong></p>
<p> </p>
<p class="15">2.2、 编译安装</p>
<p>make</p>
<p>make install</p>
<p><span style="font-family: 宋体">安装成功查看安装目录</span> <span style="font-family: 宋体">:</span></p>
<div class="cnblogs_code">
<pre>cd /usr/local/nginx/</pre>
</div>
<p> </p>
<p><span style="font-family: 宋体"><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621102227024-485295149.jpg" alt=""></span></p>
<p> </p>
<h3> </h3>
<h3>2.3 <strong><span style="font-family: 宋体">启动</span>nginx</strong></h3>
<p> </p>
<p>进入目录:</p>
<div class="cnblogs_code">
<pre>cd /usr/local/nginx/sbin/</pre>
</div>
<p>启动:</p>
<p> </p>
<div class="cnblogs_code">
<pre>./nginx</pre>
</div>
<p> </p>
<p><span style="font-family: 宋体">查询</span>nginx<span style="font-family: 宋体">进程:</span></p>
<div class="cnblogs_code">
<pre>ps aux|grep nginx</pre>
</div>
<p> </p>
<p>查看nginx状态:</p>
<div class="cnblogs_code">
<pre>service nginx status</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621103415654-1221296661.jpg" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<h3>2.4 <strong>测试</strong></h3>
<p>nginx安装成功,启动nginx,即可访问虚拟机上的nginx:</p>
<p>查看ip地址:ifconfig</p>
<p><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621104155910-1639422672.jpg" alt=""></p>
<p> </p>
<p><strong>访问地址:http:172.20.10.7 </strong></p>
<p> </p>
<p> </p>
<p> </p>
<h3>2.5 <strong><span style="font-family: 宋体">停止</span>nginx</strong></h3>
<p> </p>
<p><span style="font-family: 宋体">方式</span>1<span style="font-family: 宋体">,快速停止:</span></p>
<p> </p>
<div class="cnblogs_code">
<pre>cd /usr/local/nginx/sbin</pre>
</div>
<div class="cnblogs_code">
<pre>./nginx -s stop</pre>
</div>
<p> </p>
<p><span style="font-family: 宋体">此方式相当于先查出</span>nginx<span style="font-family: 宋体">进程</span><span style="font-family: Calibri">id</span><span style="font-family: 宋体">再使用</span><span style="font-family: Calibri">kill</span><span style="font-family: 宋体">命令强制杀掉进程。</span></p>
<p> </p>
<p> </p>
<p> </p>
<p><span style="font-family: 宋体">方式</span>2<span style="font-family: 宋体">,完整停止</span><span style="font-family: Calibri">(</span><span style="color: rgba(255, 0, 0, 1)">建议使用</span>)<span style="font-family: 宋体">:</span></p>
<p> </p>
<div class="cnblogs_code">
<pre>cd /usr/local/nginx/sbin</pre>
</div>
<div class="cnblogs_code">
<pre>./nginx -s quit</pre>
</div>
<p> </p>
<p><span style="font-family: 宋体">此方式停止步骤是待</span>nginx<span style="font-family: 宋体">进程处理任务完毕进行停止。</span></p>
<p> </p>
<h3> </h3>
<h3>2.6 <strong><span style="font-family: 宋体">重启</span>nginx</strong></h3>
<p> </p>
<p><span style="font-family: 宋体">方式</span>1<span style="font-family: 宋体">,先停止再启动(</span><span style="color: rgba(255, 0, 0, 1)">建议使用</span>):</p>
<p> </p>
<p><span style="font-family: 宋体">对</span>nginx<span style="font-family: 宋体">进行重启相当于先停止</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">再启动</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">,即先执行停止命令再执行启动命令。</span></p>
<p> </p>
<p>如下:</p>
<p> </p>
<div class="cnblogs_code">
<pre>./nginx -s quit</pre>
</div>
<div class="cnblogs_code">
<pre>./nginx</pre>
</div>
<p> </p>
<p> </p>
<p><span style="font-family: 宋体">方式</span>2<span style="font-family: 宋体">,重新加载配置文件:</span></p>
<p> </p>
<p><span style="font-family: 宋体">当</span>nginx<span style="font-family: 宋体">的配置文件</span><span style="font-family: Calibri">nginx.conf</span><span style="font-family: 宋体">修改后,要想让配置生效需要重启</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">,使用</span><span style="font-family: Calibri">-s reload</span><span style="font-family: 宋体">不用先停止</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">再启动</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">即可将配置信息在</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">中生效,如下:</span></p>
<p> </p>
<div class="cnblogs_code">
<pre>./nginx -s reload</pre>
</div>
<h1>2.7 <strong><span style="font-family: 宋体">开机自启动</span>nginx</strong></h1>
<h2>2.7.1 <strong>编写</strong><strong>shell脚本</strong></h2>
<p><span style="font-family: 宋体">这里使用的是编写</span>shell<span style="font-family: 宋体">脚本的方式来处理</span></p>
<p>vi /etc/init.d/nginx (<span style="font-family: 宋体">输入下面的代码</span><span style="font-family: Calibri">)</span></p>
<p> </p>
<div class="cnblogs_code">
<pre>#!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
# nginx Startup script </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> the Nginx HTTP Server
# it </span><span style="color: rgba(0, 0, 255, 1)">is</span> v.<span style="color: rgba(128, 0, 128, 1)">0.0</span>.<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> version.
# chkconfig: </span>- <span style="color: rgba(128, 0, 128, 1)">85</span> <span style="color: rgba(128, 0, 128, 1)">15</span><span style="color: rgba(0, 0, 0, 1)">
# description: Nginx </span><span style="color: rgba(0, 0, 255, 1)">is</span> a high-<span style="color: rgba(0, 0, 0, 1)">performance web and proxy server.
# It has a lot of features, but it</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">s not for everyone.</span>
<span style="color: rgba(0, 0, 0, 1)"># processname: nginx
# pidfile: </span>/<span style="color: rgba(0, 0, 255, 1)">var</span>/run/<span style="color: rgba(0, 0, 0, 1)">nginx.pid
# config: </span>/usr/local/nginx/conf/<span style="color: rgba(0, 0, 0, 1)">nginx.conf
nginxd</span>=/usr/local/nginx/sbin/<span style="color: rgba(0, 0, 0, 1)">nginx
nginx_config</span>=/usr/local/nginx/conf/<span style="color: rgba(0, 0, 0, 1)">nginx.conf
nginx_pid</span>=/<span style="color: rgba(0, 0, 255, 1)">var</span>/run/<span style="color: rgba(0, 0, 0, 1)">nginx.pid
RETVAL</span>=<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
prog</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">nginx</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
# Source function library.
. </span>/etc/rc.d/init.d/<span style="color: rgba(0, 0, 0, 1)">functions
# Source networking configuration.
. </span>/etc/sysconfig/<span style="color: rgba(0, 0, 0, 1)">network
# Check that networking </span><span style="color: rgba(0, 0, 255, 1)">is</span><span style="color: rgba(0, 0, 0, 1)"> up.
[ ${NETWORKING} </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span> ] && exit <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
[ </span>-x $nginxd ] || exit <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
# Start nginx daemons functions.
start() {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> [ -<span style="color: rgba(0, 0, 0, 1)">e $nginx_pid ];then
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">nginx already running....</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
exit </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
fi
echo </span>-n $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Starting $prog: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
daemon $nginxd </span>-<span style="color: rgba(0, 0, 0, 1)">c ${nginx_config}
RETVAL</span>=$?<span style="color: rgba(0, 0, 0, 1)">
echo
[ $RETVAL </span>= <span style="color: rgba(128, 0, 128, 1)">0</span> ] && touch /<span style="color: rgba(0, 0, 255, 1)">var</span>/<span style="color: rgba(0, 0, 255, 1)">lock</span>/subsys/<span style="color: rgba(0, 0, 0, 1)">nginx
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo </span>-n $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Stopping $prog: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
killproc $nginxd
RETVAL</span>=$?<span style="color: rgba(0, 0, 0, 1)">
echo
[ $RETVAL </span>= <span style="color: rgba(128, 0, 128, 1)">0</span> ] && rm -f /<span style="color: rgba(0, 0, 255, 1)">var</span>/<span style="color: rgba(0, 0, 255, 1)">lock</span>/subsys/nginx /<span style="color: rgba(0, 0, 255, 1)">var</span>/run/<span style="color: rgba(0, 0, 0, 1)">nginx.pid
}
# reload nginx service functions.
reload() {
echo </span>-n $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Reloading $prog: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
#kill </span>-<span style="color: rgba(0, 0, 0, 1)">HUP `cat ${nginx_pid}`
killproc $nginxd </span>-<span style="color: rgba(0, 0, 0, 1)">HUP
RETVAL</span>=$?<span style="color: rgba(0, 0, 0, 1)">
echo
}
# See how we were called.
</span><span style="color: rgba(0, 0, 255, 1)">case</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$1</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)">
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL</span>=$?<span style="color: rgba(0, 0, 0, 1)">
;;
</span>*<span style="color: rgba(0, 0, 0, 1)">)
echo $</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Usage: $prog {start|stop|restart|reload|status|help}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
exit </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
esac
exit $RETVAL</span></pre>
</div>
<p>按Esc ,然后输入 :wq <span style="font-family: 宋体">保存并退出</span></p>
<p> </p>
<h2>2.7.2 <strong>设置文件的访问权限</strong></h2>
<p>chmod a+x /etc/init.d/nginx (a+x ==> all user can execute <span style="font-family: 宋体">所有用户可执行</span><span style="font-family: Calibri">)</span></p>
<p> </p>
<p><span style="font-family: 宋体">这样在控制台就很容易的操作</span>nginx<span style="font-family: 宋体">了:查看</span><span style="font-family: Calibri">Nginx</span><span style="font-family: 宋体">当前状态、启动</span><span style="font-family: Calibri">Nginx</span><span style="font-family: 宋体">、停止</span><span style="font-family: Calibri">Nginx</span><span style="font-family: 宋体">、重启</span><span style="font-family: Calibri">Nginx</span><span style="font-family: 宋体">…</span></p>
<p>/etc/init.d/nginx status</p>
<p>/etc/init.d/nginx start</p>
<p>/etc/init.d/nginx stop</p>
<p>/etc/init.d/nginx restart</p>
<p><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621105225417-1245010328.jpg" alt=""></p>
<p>如果<span style="font-family: 宋体">修改了</span>nginx<span style="font-family: 宋体">的配置文件</span><span style="font-family: Calibri">nginx.conf</span><span style="font-family: 宋体">,也可以使用上面的命令重新加载新的配置文件并运行,可以将此命令加入到</span><span style="font-family: Calibri">rc.local</span><span style="font-family: 宋体">文件中,这样开机的时候</span><span style="font-family: Calibri">nginx</span><span style="font-family: 宋体">就默认启动了</span></p>
<p> </p>
<h2>2.7.3 <strong><span style="font-family: 宋体">加入到</span>rc.local文件中</strong></h2>
<p> </p>
<p>vi /etc/rc.local</p>
<p> </p>
<p><span style="font-family: 宋体">加入一行</span> /etc/init.d/nginx start <span style="font-family: 宋体">保存并退出,下次重启会生效</span></p>
<p> </p>
<p> </p>
<h2>二、Linux安装 ftp 组件</h2>
<h3>1 <strong><span style="font-family: 宋体">安装</span>vsftpd<span style="font-family: 宋体">组件</span></strong></h3>
<p><span style="font-family: 宋体">安装完后,有</span>/etc/vsftpd/vsftpd.conf <span style="font-family: 宋体">文件,</span>是vsftp<span style="font-family: 宋体">的</span>配置文件。</p>
<p>先查看版本号,如果存在则已安装</p>
<p># vsftpd -version</p>
<p>安装</p>
<p># yum -y install vsftpd</p>
<p> 启动</p>
<p># systemctl start vsftpd</p>
<h3>2 <strong><span style="font-family: 宋体">添加一个</span>ftp<span style="font-family: 宋体">用户</span></strong></h3>
<p><span style="font-family: 宋体">此用户就是用来登录</span>ftp<span style="font-family: 宋体">服务器用的。</span></p>
<p># useradd ftpuser</p>
<p><span style="font-family: 宋体">这样一个用户建完,可以用这个登录,记得用普通登录不要用匿名了。登录后默认的路径为</span> /home/ftpuser.</p>
<p> </p>
<h3>3 <strong><span style="font-family: 宋体">给</span>ftp<span style="font-family: 宋体">用户添加密码。</span></strong></h3>
<p># passwd ftpuser</p>
<p>输入两次密码后修改密码。</p>
<p> </p>
<h3>4 <strong><span style="font-family: 宋体">防火墙开启</span>21<span style="font-family: 宋体">端口</span></strong></h3>
<p class="pre"><strong>关闭防火墙:</strong> systemctl stop firewalld.service </p>
<p class="pre"><strong>开启防火墙: </strong>systemctl start firewalld.service</p>
<p><strong><span style="font-family: 宋体">查看防火墙状态:</span></strong>systemctl status firewalld</p>
<p class="p"><strong><span style="font-family: 宋体">开启端口: </span></strong> firewall-cmd --zone=public --add-port=21/tcp --permanent</p>
<p class="p"><strong><span style="font-family: 宋体">重新加载端口配置: firewall-cmd --reload </span></strong></p>
<p class="p"><strong><span style="font-family: 宋体">查询端口号</span>21 是否开启:</strong> firewall-cmd --query-port=21/tcp</p>
<p class="p"><strong><span style="font-family: 宋体">查询有哪些端口是开启的</span>:</strong> firewall-cmd --list-port</p>
<p class="pre"><strong>禁止firewall开机启动: </strong> systemctl disable firewalld.service </p>
<p align="justify"><span style="color: rgba(255, 0, 0, 1)">CentOS<span style="font-family: 宋体">升级到</span><span style="font-family: "Times New Roman"">7</span><span style="font-family: 宋体">之后,发现无法使用</span><span style="font-family: "Times New Roman"">iptables</span><span style="font-family: 宋体">控制</span><span style="font-family: "Times New Roman"">Linuxs</span><span style="font-family: 宋体">的端口,</span><span style="font-family: "Times New Roman"">baidu</span><span style="font-family: 宋体">之后发现</span><span style="font-family: "Times New Roman"">Centos 7</span><span style="font-family: 宋体">使用</span><span style="font-family: "Times New Roman"">firewalld</span><span style="font-family: 宋体">代替了原来的</span><span style="font-family: "Times New Roman"">iptables</span></span><span style="font-family: 宋体">。</span></p>
<p align="justify"> </p>
<h3>5 <strong><span style="font-family: 宋体">修改</span>selinux</strong></h3>
<p><span style="font-family: 宋体">外网是可以访问上去了,可是发现没法返回目录(使用</span>ftp<span style="font-family: 宋体">的主动模式,被动模式还是无法访问),也上传不了,因为</span><span style="font-family: "Times New Roman"">selinux</span><span style="font-family: 宋体">作怪了。</span></p>
<p><span style="font-family: 宋体">修改</span>selinux<span style="font-family: 宋体">:</span></p>
<p>执行以下命令查看状态:</p>
<p># <span style="color: rgba(255, 0, 0, 1)">getsebool -a | grep ftp </span></p>
<p>allow_ftpd_anon_write --> off</p>
<p><span style="background-color: rgba(255, 255, 0, 1)">allow_ftpd_full_access --> off</span></p>
<p>allow_ftpd_use_cifs --> off</p>
<p>allow_ftpd_use_nfs --> off</p>
<p><span style="background-color: rgba(255, 255, 0, 1)">ftp_home_dir --> off</span></p>
<p>ftpd_connect_db --> off</p>
<p>ftpd_use_passive_mode --> off</p>
<p>httpd_enable_ftp_server --> off</p>
<p>tftp_anon_write --> off</p>
<p><span style="font-family: 宋体">执行上面命令,再返回的结果看到两行都是</span>off<span style="font-family: 宋体">,代表,没有开启外网的访问</span></p>
<p># setsebool -P allow_ftpd_full_access on</p>
<p># setsebool -P ftp_home_dir on</p>
<h3>6 <strong>关闭匿名访问</strong></h3>
<p><span style="font-family: 宋体">修改</span>/etc/vsftpd/vsftpd.conf<span style="font-family: 宋体">文件:</span></p>
<div class="cnblogs_code">
<pre>vim /etc/vsftpd/vsftpd.conf</pre>
</div>
<p><span style="font-family: 宋体"><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621111646902-2009204665.png" alt=""></span></p>
<p> </p>
<p>重启ftp<span style="font-family: 宋体">服务:</span></p>
<p># systemctl restart vsftpd.service </p>
<p>查看状态:systemctl status vsftpd.service </p>
<p align="justify"> </p>
<p>---------------------</p>
<p> </p>
<h3>7 <strong><span style="font-family: 宋体">设置开机启动</span>vsftpd ftp<span style="font-family: 宋体">服务</span></strong></h3>
<p><span style="font-family: 宋体"><span style="font-family: "Microsoft YaHei"">#systemctl enable vsftpd.service</span><br></span></p>
<p> </p>
<p><span style="font-family: 宋体"><span style="font-family: "Microsoft YaHei"">旧版本的linux可以用</span></span></p>
<p align="justify"># chkconfig vsftpd on</p>
<p align="justify"> </p>
<h2 align="justify">三、创建目录</h2>
<p>mkdir /home/ftpuser/www/images/ </p>
<p>修改用户访问权限 </p>
<div class="cnblogs_code">
<pre>chown ftpuser /home/ftpuser
chmod 777 -R /home/ftpuser</pre>
</div>
<p align="justify"> </p>
<p> 修改nginx/conf/nginx.conf在默认的server里再添加一个location并指定实际路径:</p>
<p>进入目录: cd /usr/local/nginx/con/</p>
<p>编辑: vim nginx.conf</p>
<div class="cnblogs_code">
<p>location / {<br> root /home/ftpuser/www;#定义服务器的默认网站根目录位置<br> indexindex.html index.htm;<br> }</p>
</div>
<p align="justify">优化后配置(其它项目备份,可以对比一下配置,可忽略):</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">#图片服务
server {
listen </span>8989<span style="color: rgba(0, 0, 0, 1)">;
server_name</span>106.54.201.220<span style="color: rgba(0, 0, 0, 1)">; #此处可以换成服务器IP
location </span>~ .*\.(gif|jpg|jpeg|<span style="color: rgba(0, 0, 0, 1)">png)$ { #拦截符合的图片格式
root </span>/home/ftpuser/<span style="color: rgba(0, 0, 0, 1)">suoyu_images; #指定图片存放路径
autoindex on; #打开浏览器功能
access_log </span>/home/ftpuser/suoyu_images/<span style="color: rgba(0, 0, 0, 1)">images.log; #图片 日志路径
index index.html index.htm;
}
}</span></pre>
</div>
<p> </p>
<p align="justify"><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621114349933-378636082.jpg" alt=""></p>
<p align="justify"> </p>
<p>修改完后需要重新启动nginx</p>
<div class="cnblogs_code">
<pre>/usr/local/nginx/sbin/nginx -s reload</pre>
</div>
<p>旧版本可用</p>
<div class="cnblogs_code">
<pre>service nginx restart</pre>
</div>
<p><em>说明</em></p>
<blockquote>
<p> root则是将images映射到/home/ftpuser/www/images/ </p>
</blockquote>
<p align="justify">确认 nginx 和 vsftpd 启动成功后 可以试着上传文件到/home/ftpuser/www/images/ 目录下</p>
<p align="justify">打开浏览器访问:http://172.20.10.7/images/bg1.jpg</p>
<p align="justify"><img src="https://img2018.cnblogs.com/blog/1513806/201906/1513806-20190621114739576-1637659762.jpg" alt=""></p>
<p align="justify"> </p>
<p align="justify">完毕!</p>
<p align="justify">good luck !</p><br><br>
来源:https://www.cnblogs.com/hxun/p/11063752.html
頁:
[1]