阿里云ECS-Linux--CentOS7.3--乱七八糟,回头在整理

经常使用命令:html

  • iptables -P INPUT ACCEPT         容许全部
  • iptables -L -n           查看iptables现有规则
  • iptables -F                清空全部自定义规则
  • iptables -P OUTPUT ACCEPT          全部出站一概绿灯
  • iptables -P FORWARD DROP          全部转发一概丢弃
  • iptables -I INPUT -s ***.***.***.*** -j DROP     封掉一个IP
  • iptables -D INPUT -s ***.***.***.*** -j DROP    解封一个IP
  • service iptables save                  保存iptables配置信息
  • netstat -lnp|grep 88                   查看端口占用
  • ps -aux|grep <进程号>               查看进程详细信息
  • rpm -q pkgname                        查看软件是否安装

 

  •  

说在前面,若是不是root帐号,命令前要加sudo。python

安装软件的方法:mysql

1、安装iptableslinux

  1. 关闭firewall,请务必使用sudo 不然关闭不上。
    # systemctl stop firewall.service
    # sudo systemctl stop firewalld.service
  2. 禁止firewall自启动,请务必使用sudo 不然关闭不上。
    # systemctl disablefirewall.service
    # sudo systemctl disable firewalld.service
  3. 安装iptables-services
    # sudo yum install iptables-services
  4. 编辑防火墙配置文件
    # vi /etc/sysconfig/iptables
    添加开放端口
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
    -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 8080 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
  5. 重启iptables,使配置生效
    # systemctl restart iptables.service
    这里必定要说明一下:配置格式错误重启将会报错。
  6. 设置iptables为开机启动
    # sudo systemctl enable iptables
  7. 关闭SELinux-----(个人默认是关闭的这条开始不用再操做了)
    vi /etc/selinux/config
    注释全部,只保留一下一条
    SELINUX=disabled
  8. 使配置当即生效-----(个人默认是关闭的这条开始不用再操做了)
    # setenforce 0

2、安装与配置VSFTPnginx

安装vsftpd:c++

  1. 安装 ftp和Vsftpd
    # yum -y install ftp vsftpd
  2. 检查vsftpd状态
    # systemctl status vsftpd
  3. 启动vsftpd服务
    # systemctl start vsftpd
  4. 尝试访问vsftpd
    # ftp localhost

配置vsftpd.confweb

  1. 备份vsftpd.conf
    # mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
  2. 新建打开vsftpd.conf
    # vi /etc/vsftpd/vsftpd.conf
  3. 修改配置:(能够直接复制)

    #禁用匿名帐户
    anonymous_enable=NOsql

    #容许实体用户登陆
    local_enable=YES数据库

    #容许用户写入
    write_enable=YESdjango

    #限制用户上传文件的权限
    local_umask=002

    #启用用户列表
    userlist_enable=YES

    #在用户列表的用户将会禁止登陆(感受像是黑名单)
    userlist_deny=YES

    #用户列表的位置
    userlist_file=/etc/vsftpd/user_list

    #使用本地时间
    use_localtime=YES

    #若是文件夹中有.message,在该用户计入该文件夹时,将会显示其内容
    dirmessage_enable=YES

    #输出日志文件
    xferlog_enable=YES

    #输出传输端口为20
    connect_from_port_20=YES

    #日志格式化
    xferlog_std_format=YES

    #开启监听
    listen=YES

    #服务名称为vsftpd
    pam_service_name=vsftpd

    #支持TCP Wrapper
    tcp_wrappers=YES

    #登陆ftp时的欢迎词
    banner_file=/etc/vsftpd/welcome.txt

  4. 修改新vsftpd.conf权限----(由于新建文件和原备份文件不一致)
    # chmod 600 /etc/vsftpd/vsftpd.conf

  5. 建立welcome.txt欢迎词
    # vi /etc/vsftpd/welcome.txt
    ~~~欢迎登陆WXH的FTP服务器~~~

添加和配置用户

  1. 添加用户,并指定用户主目录
    # useradd -d /home/wangxihao wangxihao
  2. 设置密码
    # passwd wangxihao
    PS:系统会提示输入密码,但注意,密码不能少于8位数。
  3. 重启vsftpd
    # systemctl restart vsftpd
  4. 测试ftp连接
    # ftp localhost
    PS:出现欢迎词后,在输入用户名、密码。提示Login successful. 则登陆成功。
  5. 测试ftp用户权限
    ftp> ls /
    此时进入了系统根目录,这种状况是不容许的,须要配置chroot。

配置chroot权限

  1. 打开vsftpd.conf
    # vi /etc/vsftpd/vsftpd.conf
  2. 修改并加入如下配置信息

    #启用chroot。
    chroot_local_user=YES

    #启用chroot列表,这个列表中的用户不受chroot限制,能够进入其余目录,好比系统目录。
    chroot_list_enable=YES

    #列表的位置
    chroot_list_file=/etc/vsftpd/chroot_list
    allow_writeable_chroot=YES

    #chroot_list是默认不存在的,须要本身创建。
    # vi /etc/vsftpd/chroot_list

  3. 创建chroot_list文件------(能够为空,等因而chroot限制的一个白名单)
    # vi /etc/vsftpd/chroot_list

  4. 测试ftp连接
    # cp /etc/vsftpd/chroot_list /home/wangxihao
    PS:此处只是为了增长一个标记。
    # ftp localhost
    输入用户名、密码,登陆成功。
    ftp>ls /
    此处显示的是刚才拷贝的chroot_list文件,则说明chroot限制生效。

  5. 遇到的问题
    使用FileZilla,连接服务器出现如下错误“ Failed to retrieve directory listing ”
    解决方法1:因我FileZilla默认是passive连接方式,修改成active便可
    Site Manager>Transfer settings>Transfer mode,选Active

    解决办法2:使vsftp支持passive
    一、编辑vsftpd
    # vi /etc/vsftpd/vsftpd.conf
    加入如下4行:
    #容许被动访问,端口50000--50003
    pasv_enable=YES
    pasv_min_port=50000
    pasv_max_port=50003
    port_enable=YES

    二、在iptables添加50000~50003端口。
    # vi /etc/sysconfig/iptables
    加入如下:开放50000-50003端口
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 50000:50003 -j ACCEPT

    三、重启vsftp和iptables
    # systemctl restart vsftpd
    # systemctl restart iptables

  6. 搞定!下一步是python django uwsgi nginx

3、安装Python、pip三、Django

安装Python、PIP

  1. 首先说明系统自带的python2.7.5不能卸载。不然系统会问题。
  2. 安装python3 须要的依赖包。
    # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel
  3. 下载python3.6.1(2017-05)
    # cd /home/wangxihao
    这个目录是以前建立的vsftp目录。用于存放通常性数据
    # wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
  4. 建立python3目录
    # mkdir /usr/local/python3 
  5. 解压缩python文件
    # tar -zxvf Python-3.6.1.tgz
  6. 进入解压缩以后的目录
    # cd Python-3.6.1
  7. 配置文件安装目录--- 唰唰唰-很快
    # ./configure --prefix=/usr/local/python3
  8. 执行make---唰唰唰唰唰-好慢,真的好慢,要耐心
    # make
  9. 执行 make install
    # make install
  10. 设置软链接,能够直接使用执行python3 进入python3
    # ln -s /usr/local/python3/bin/python3 /usr/bin/python3
  11. 由于yum使用python2,所以替换为python3后可能没法正常工做,所以修改yum配置文件
    # vi /usr/bin/yum
    将其中:#!/usr/bin/python
    修改成:#!/usr/bin/python2.7
    PS:运行yum时报错:File "/usr/libexec/urlgrabber-ext-down", line 28
    解决办法以下:
    #  vi /usr/libexec/urlgrabber-ext-down
    将其中:#!/usr/bin/python
    修改成:#!/usr/bin/python2.7
  12. 若是想执行Python,进入python3
    # mv /usr/bin/python /usr/bin/python_bak
    # ln -s /usr/local/python3/bin/python3 /usr/bin/python
  13. 默认已经安装了pip3,但只是没有加入环境变量(吐槽不知道Linux是否是叫环境变量)
    # ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    若是习惯使用pip的话,能够用上面相似的方法
    # mv /usr/bin/pip /usr/bin/pip_bak
    # ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

安装Django

  1. 安装Django
    # pip install django
  2. 设置软链接(就是加入环境变量,若是把整个文件夹加入进去就行了)
    # ln -s /usr/local/python3/bin/django_admin /usr/bin/django_admin
  3. 或者修改/etc/profile文件(在系统启动后第一个用户登陆时运行)
    # vi /etc/profile
    添加如下命令:
    export PATH=/usr/local/python3/bin:$PATH
  4. 要使修改生效,能够重启系统,或者执行
    # source /etc/profile
    # echo $PATH

  5. 建立Django项目
    # cd /home/Django_Web
    # django-admin startproject WXH_DJANGOWEB

  6. 修改Django项目配置
    # cd WXH_DJANGOWEB\WXH_DJANGOWEB
    # vi settings.py
    在尾部添加一句:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')

  7. 保存退出后更新应用配置,自动生成 static 目录
    # ../manage.py collectstatic

  8. 运行django项目
    # python /home/Django_Web/WXH_DJANGOWEB/manage.py runserver 0.0.0.0:8080

  9. 这是访问http://ip:8080 或 http://ip:8080/admin(个人8080端口是开放的),提示错误:ALLOWED_HOSTS
    这里添加host白名单
    # vi /home/Django_Web/WXH_DJANGOWEB/WXH_DJANGOWEB/settings.py
    找到:ALLOWED_HOSTS = [ ]
    修改:ALLOWED_HOSTS = ['*'] 
    或改为:ALLOWED_HOSTS = ['你的IP'] 
    或改为:ALLOWED_HOSTS = ['你的域名'] 
    这样访问就没有问题了~~

  10. 存在一个小问题,当我开启runserver以后,关闭时按了CTRL+Z。当再次打开时,提示我端口占用。无奈之下,查找了一下如何解决

    1. 缘由:CTRL+C 是强制中断(关闭)。CTRL+Z 是中断,但若是任务没有结束就等因而挂起状态。

    2. 查找占用的端口:
      # netstat -apn|grep 8080

    3. 显示“tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      32574/python  ”
      记住加粗的部分,就是进程号

    4. 杀死当前进程
      # kill -9 32574

    5. 在运行runserver
      # python /home/Django_Web/WXH_DJANGOWEB/manage.py runserver 0.0.0.0:8080
      OK了~ 之后尽可能用CTRL+C关闭

安装uWSGI

  1. 安装uWSGI
    # pip3 install uwsgi
  2. 运行uWSGI,测试
    # vi test.py
    输入一下内容:(注意缩进)
    # test.py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"] # python3
        #return ["Hello World"] # python2
    再运行:
    # uwsgi --http :8080 --wsgi-file test.py
    PS:浏览器访问8080端口,看到Hello World,说明ok。
  3. 测试django与uwsgi的链接
    # uwsgi --http :80 --chdir /home/Django_Web/WXH_DJANGOWEB/ --module WXH_DJANGOWEB.wsgi
    PS:这里修改了好多,之前是创建一个django_uwsgi.ini文件,而后链接,如今能够直接指向项目中的wsgi,省去中间文件了。
    PS:这里要注意的是,若是更换端口的话,记得打开防火墙的端口限制。

安装nginx

  1. 安装依赖环境
    # yum install patch make cmake gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap diffutils
    好多啊,,,,汗,不过有一些是之前安装过的。
  2. 安装pcre
    # wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
    # tar -zxvf pcre-8.00.tar.gz
    # cd pcre-8.00
    # ./configure --prefix=/usr/local/pcre
    # make
    # make install
  3. 建立用户(没明白意思)
    # groupadd www
    # useradd -s /sbin/nologin -g www www
  4. 下载nginx
    # wget http://nginx.org/download/nginx-1.9.12.tar.gz
    PS:为何不用yum安装。由于传说云安装会添加不少权限配置,不懂哎。
    # tar -zxvf nginx-1.9.12.tar.gz
    # cd nginx-1.9.12
    # ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6
    # make
    # make install
  5. 启动nginx
    # /usr/local/nginx/sbin/nginx
    PS浏览器访问网站80端口,显示“Welcome to nginx!”,则安装OK
  6. 配置nginx
    # vi /usr/local/nginx/conf/nginx.conf
    PS:好多文档都写/etc/nginx/nginx.conf,然而,并无。
    在http{}中添加以下:   
    upstream django {
            server 127.0.0.1:8001; # for a web port socket
    }
    server {
            listen      80;
            server_name wangxihao.com;
            charset     utf-8;
            client_max_body_size 75M;   # adjust to taste

            #location /media  {
            #    alias /path/to/your/mysite/media;  # your Django project's media files - amend as required
            #}

            #location /static {
            #    alias /path/to/your/mysite/static; # your Django project's static files - amend as required
            #}

            # Finally, send all non-media requests to the Django server.
            location / {
                root        /home/DJANGO_WEB/WXH_DJANGOWEB;
                uwsgi_pass  django;
                include     uwsgi_params; # the uwsgi_params file you installed
            }
        }

  7. uwsgi 与 nginx 连接
    # uwsgi --socket :8001 --wsgi-file /home/wangxihao/test/test.py
    PS:test.py是以前安装uwsgi时创建的测试文件。
    PS:nginx是启动状态,运行这条命令。
    PS:浏览器访问80端口,显示 Hello World ,说明成功!
    PS:这里socket:8001对应的是nginx配置文件中的127.0.0.1:8001。若是须要修改则一块儿修改,必须同步。

  8. nginx 与 uwsgi 与 django 连接
    # uwsgi --socket :8001 --module /home/Django_Web/WXH_DJANGOWEB/WXH_DJANGOWEB.wsgi
    运行到这里,访问浏览器时,出现“Internal Server Error”--500错误
    PS:推测1:是权限问题

  9. uwsgi.ini配置
    # vi django_uwsgi.ini
    添加如下内容,须要的请本身修改。
    # django_uwsgi.ini file
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    chdir           = /home/Django_Web/WXH_DJANGOWEB
    # Django's wsgi file
    module          = WXH_DJANGOWEB.wsgi
    # the virtualenv (full path)
    # home          = /path/to/virtualenv
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe)
    # socket        = /path/to/your/project/mysite.sock
    socket          = :8001
    # ... with appropriate permissions - may be needed
    # chmod-socket  = 664
    # clear environment on exit
    vacuum          = true

  10. 运行uwsgi.ini
    # /usr/local/nginx/sbin/nginx -s  reload
    # uwsgi --ini django_uwsgi.ini
    PS:到了这里“Internal Server Error”--500错误,本身消失了。
    PS:访问浏览器80端口,卧槽!!  显示It worked! django 的It worked!

  11.  

    下一步是安装mysql

安装mysql

  1. 安装mysql
    # yum install mysql mysql-devel mysql-server、
    PS:CentOS7下解决yum install mysql-server没有可用包的问题
    # cd /home/wangxihao
    # wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    # rpm -ivh mysql-community-release-el7-5.noarch.rpm
    # yum install mysql-server

  2. 启动mysql
    # service mysqld start
    # service mysqld stop
    启动mysql(推荐):  # systemctl start mysqld
    开机启动:     # systemctl enable mysqld

  3. 进入mysql配置用户密码
    不要删除ROOT权限 妈蛋,初始化系统,从新再来!!
    这里我删除了root帐号,请你们注意谨慎操做,必定要建立一个可用用户先。
    mysql>delete from user where User!='root';

    # mysql
    PS:命令交行直接输入mysql,不须要密码直接进入mysql
    mysql>select Host,User,Password from mysql.user;
    mysql>delete from mysql.user where host!='localhost' user!='root';
    mysql>UPDATE mysql.user SET Password=PASSWORD('password') where USER='root'
    PS:只留下root的localhost权限
    建立数据库并设置wangxihao帐号,在全部地方都而已访问指定数据库。
    mysql>create database WXH_DJANGOWEB;
    mysql>grant all on WXH_DJANGOWEB.* to 'wangxihao'@'%' identified by 'passw@rd';
    刷新操做,当即生效。
    mysql>flush privileges;

  4. 出现过的问题

    1. 在修改root密码时,输入的命令是:UPDATE mysql.user SET Password='passw@rd' where USER='root';
      这样存在数据库password字段中的密码是没有加密的。而数据库读取密码时是解密读取。
      因此怎么输入密码都是错误的。请你们注意。可是也有解决办法。
      解决办法:
      # systemctl stop mysqld
      # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
      # mysql -u root mysql
      # mysql> UPDATE mysql.user SET Password=PASSWORD('newpassword') where USER='root';
      # mysql>FLUSH PRIVILEGES;
      # mysql>quit;
      # systemctl start mysqld
      # mysql -uroot -pnewpassword

    2. 晚上仍是还好好的,今早在登陆的时候外地客户端显示10061错误。
      # systemctl stop mysqld,报错,要求看状态。
      # systemctl start mysqld,也报错
      # systemctl status mysqld,状态看不懂。哈哈
      解决办法:
      查看错误日志:
      # mysql -uroot -p
      # mysql> show variables like 'log_error';
      PS:结果显示错误日志地址,个人是#/var/log/mysqld.log
      # mysql>quit;
      # vi /var/log/mysqld.log
      PS,里面最后一行一直说mysqld_safe已经存在。“mysqld_safe A mysqld process already exists”
      因而乎:
      # ps -A|grep mysql
      此时显示了3个mysql、mysqld、mysqld_safe,3个进程存在。
      因而乎,我把他们3个杀死了 ……
      # kill -9 XXXXX
      以后,打开mysqld服务,一切正常。
      # systemctl start mysqld
      搞定!

连接mysql与Django

  1. 安装pymysql
    # pip3 install pymysql
    # pip3 freeze
    PS:查看pymysql版本号应该是7.11以上,5.0是错误的。
    #pip3 uninstall pymysql3 -- 安装失败时执行删除。
  2. 配置Django数据库设置
    # vi /home/Django_Web/WXH_DJANGOWEB/WXH_DJANGOWEB/settings.py
    修改数据库配置:
    DATABASES = {
        'default': { 'ENGINE': 'django.db.backends.mysql',
            'NAME': 'WXH_DJANGOWEB',
            'USER': 'wangxihao',
            'PASSWORD': 'passw@rd',
            'HOST': '你的ip',
            'PORT': '3306',
        }
    }
  3. 由于mysqldb再也不支持python3,因此将使用pymysql替代。
    # vi /home/Django_Web/WXH_DJANGOWEB/WXH_DJANGOWEB/__init__.py
    PS:目前是一个空的文件,不要担忧。
    插入内容:
    import pymysql
    pymysql.install_as_MySQLdb()
    保存退出,注意,两行前面都不能留空额
  4. 跑起来吧~~·
    没出问题,OY!~

 

到这里基本环境就搭建好了~等写完一些功能,再传服务器,再继续更新

相关文章
相关标签/搜索