阿里雲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!~

 

到這裏基本環境就搭建好了~等寫完一些功能,再傳服務器,再繼續更新

相關文章
相關標籤/搜索