一、Linux需要的几个库(我这几个都是之前装好的)
- gcc(因为安装nginx需要先下载源码包然后编译(需要gcc环境)的)
yum install gcc - PCRE(正则表达式库,nginx的http模块需要pcre来解析正则表达式)
yum install -y pcre pcre-devel
- zlib(压缩和解压,nginx源码包解压)
yum install -y zlib zlib-devel
- openssl(SSL协议,nginx支持http协议和https协议(在ssl协议上传输http))
yum install -y openssl openssl-devel
二、安装和配置vsftpd服务
- 首先看看有没有安装:vsftpd -v
安装vsftpd:sudo apt-get install vsftpd
出现问题需要卸载:sudo apt-get purge vsftpd - 创建用户文件的主目录:sudo mkdir /ftpuser
- 创建登录服务器的用户:sudo useradd -d /ftpuser -s /bin/bash ftpuser
- 为这个用户设置密码:sudo passwd ftpuser
- 设置 /ftpuser 目录的用户权限:sudo chown ftpuser:ftpuser /ftpuser
- 修改vsftpd.conf配置文件,位置:/etc/vsftpd/vsftpd.conf,配置参数如下(容易忽略的我简单注释了一下):
#关闭匿名访问(不关闭的话,就是用户名不正确,但是密码正确,也会登进来) anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES chroot_list_enable=YES #这里还需要创建一个chroot_list来添加登录用户的名字,按照我的来就是添加一个ftpuser chroot_list_file=/etc/vsftpd/chroot_list listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES #开启被动模式,指定一个端口范围,这个值可以按照自己的来,但是别忘了在防火墙添加这个端口范围,这个在下边防火墙设置里说 pasv_min_port=30000 pasv_max_port=30999
- 设置开机自启动:chkconfig vsftpd on
- 记着每次修改完配置文件之后记得重启服务:
启动/停止/重启:service vsftpd start/stop/restart
三、安装和配置nginx
- 解压下载好的nginx安装包:tar -zxvf nginx-xxx.tar.gz(xxx:你下的nginx版本号)
- 进入你刚刚解压好的nginx文件夹中:cd nginx-xxx
- 这一步可以不要,指定安装目录:./configure --prefix=/usr/local/nginx(prefix后边是安装的目录路径)
- 编译和安装:make && make install(默认是安装到:/usr/local/nginx)
- 启动nginx:进入目录:cd /usr/local/nginx/sbin,启动:./nginx -c /usr/local/nginx/conf/nginx.conf(第一次需要指定配置文件,以后直接 ./nginx 就可以)
- 停止nginx:./nginx -s quit 或者 ./nginx -s stop
- 重启nginx:./nginx -s quit ./nginx(先停止再启动)
./nginx -s reload(会重新加载配置文件,适合修改配置文件后的重启) - 查看nginx启动状态:ps aux | grep nginx
- 修改配置文件:位置:/usr/local/nginx/conf/nginx.conf,修改如下(内含部分解释):
#在最上边一行加上(取消匿名模式,添加用户ftpuser) user ftpuser; #修改root location / { #改成用户文件目录 root /ftpuser; index index.html index.htm; }
四、 防火墙配置:
- 这里要注意:如果要是使用命令行的方式来开启端口的话,注意centos6的防火墙为iptables,但是centos7的防火墙为firewalld,具体的命令行差别可以看看这个老哥总结的:https://www.cnblogs.com/sos-blue/p/7436944.html
- 还有一种办法就是直接在防火墙的配置文件中添加:
#这一行是本来就有的 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT #依葫芦画瓢,改一下端口号就行,这个是ftp服务常用的端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT #访问nginx服务器的时候需要80端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT #这个是上边提到的开启被动模式的端口范围 -A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT
- 凡是修改配置文件都要记着重启,重启iptables:service iptables restart
- 开启外网的访问,修改selinux(Linux的一个安全模块):
查看状态:get sebool -a | grep ftp(会发现都是off,需要打开两个)
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
执行完上边两条命令再看一遍状态是否打开了
五、配置nginx开机自启动脚本&服务的方式启动nginx
- 尝试过 service 启动之后,启动 nginx 是真的好别扭啊,而且每次开机还得来自己动手打开它,咱是受这种累的人吗,那显然不行啊,那就再来搞一搞吧!
- 添加脚本文件:vi /etc/init.d/nginx(这里要注意这个nginx文件本来是没有的,是我们自己建的),输入内容贴在最后了,有点长,其中有两个地方看情况改一下路径(下边脚本里边有提示)
- 给这个文件添加权限:chmod a+x /etc/init.d/nginx(a+x:所有的用户都可以执行)
- 现在的启动和停止nginx:/etc/init.d/nginx start /etc/init.d/nginx stop
- 把这个文件加入vchkconfig 管理:chkconfig --add /etc/init.d/nginx
- 现在咱们就可以用服务的方式启动 nginx 了:
service nginx start 启动
service nginx stop 停止
service nginx restart 重启 - 设置开机自动启动
chkconfig nginx on - 脚本文件:
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: NGINX is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" #nginx启动文件所在的位置,看情况修改 prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" #nginx.conf 所在的路径 看情况修改 [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done fi } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $prog -HUP retval=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
然后我们就可以愉快的用 FileZilla 这个客户端来测试一下了,如果不清楚流程的话可以参考这个老哥写的:https://blog.csdn.net/Hello_World_QWP/article/details/78184435