操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    要介紹標題中寫明的項目部署流程,以及解決部署過程中可能遇到的一些問題,在開始之前,墻裂推薦這篇文檔:

    Setting up Django and your web server with uWSGI and nginx

    看完這篇文檔,你可能已經(jīng)能夠解決90%(甚至100%)的問題了,剩下10%的問題(我所遇到的)將穿插在我部署的過程中進行解決。

    (第一次部署的過程十分粗糙,遇到的很多問題都沒有妥善記錄下來,現(xiàn)在另起一個比較干凈的服務器,重新部署一下,好把之前的坑過一遍,另外對配置進行一些優(yōu)化)

    如果按照本文流程,仍然配置不成功的話,請按照以下幾點排除問題:

    1. 檢查服務器端口配置
    2. 檢查配置文件是否正確
    3. 檢查部署過程中各個項目的版本是否和本文一致(版本更新后可能導致配置變化)
    4. 檢查防火墻(我配置時沒有遇到這個問題)
    5. google…
    6. 歡迎留言,一起解決問題~

    環(huán)境

    阿里云: Ubuntu 14.04 64位

    本機:windows10

    python:3.6.6

    工具

    IDE:Pycharm(代碼部署功能比較好用)

    文件圖形化客戶端:WinSCP(查看服務器文件結(jié)構(gòu))

    virtualbox虛擬機(這個其實無所謂,只是覺得開個虛擬機直連服務器比較舒服一點)

    預配置

    申請一個阿里云服務器

    獲取服務器實例

    獲取IP

    配置安全組([配置放行端口](

    ))

    連接服務器

    連接服務器的方法很多,不一一贅述了,我比較喜歡在Ubuntu系統(tǒng)下使用ssh直連

    安裝ssh

    sudo apt-get install ssh

    連接目標服務器

    ssh root@xx.xx.xxx.xxx

    xxx部分為服務器的公網(wǎng)IP地址,root為用戶名(不推薦使用root賬戶進行后續(xù)部署操作)

    配置用戶

    給服務器系統(tǒng)添加自定義用戶,后面的操作都在該用戶下(本文中添加并使用賬戶名為breavo,賬戶名可任意取)

    sudo adduser breavo

    詳細過程可以自行google:)

    (創(chuàng)建用戶后請務必添加sudo權(quán)限,避免后續(xù)出現(xiàn)權(quán)限問題)

    使用pyenv管理python版本

    由于各個項目之間存在python的版本問題,而服務器中自帶的python2(現(xiàn)在也自帶python3了,但是版本可能不符合需求)是遠遠無法滿足需求的,導致的結(jié)果就是你的服務器中安裝了多個python版本,每個項目依賴不同的版本運行。那么管理的必要性是不言而喻的了,另外每個項目需要一個獨立的運行環(huán)境(項目依賴需要分開管理,否則會變成噩夢),這一點通過創(chuàng)建虛擬環(huán)境來解決。

    下載pyenv

    首先對系統(tǒng)環(huán)境進行一下更新,確保后面的操作不會因為缺少某個工具導致失敗

    sudo apt-get update

    安裝curl,git

    sudo apt-get install curl git-core

    安裝pyenv

    curl -L https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
    1
    

    這個命令會把pyenv安裝到當前用戶的~/.pyenv目錄下.(本文中為/home/breavo/.pyenv)

    同樣,在用戶目錄下找到.bashrc文件,將下面的代碼添加至文件內(nèi)容末尾(本文中bashrc文件路徑在/home/breavo下,可自行對應到自己的路徑)

    export PYENV_ROOT="${HOME}/.pyenv"
    if [ -d "${PYENV_ROOT}" ]; then
     export PATH="${PYENV_ROOT}/bin:${PATH}"
     eval "$(pyenv init -)"
    fi
    1
    2
    3
    4
    5
    6
    

    修改后保存~

    這段代碼的作用主要是指明pyenv的位置,以便以后可以直接在命令行里面運行pyenv命令。 保存在~/.bashrc 文件中是為了每次用戶登陸后自動生效。

    所以如果你是第一次運行命令并且沒有注銷的話, 這一段是不會生效的, 我們還需要運行下面的命令令其生效

    source ~/.bashrc
    1
    

    然后就可以直接在命令行里面敲pyenv了。

    安裝pyenv參考文章:點擊這里

    Python安裝

    pyenv安裝完了,接下來安裝我們需要的python版本,首先查看一下目前python有哪些版本可以安裝

    pyenv install --list
    1
    

    會打印一串很長的列表,網(wǎng)上滑一滑,可以看下如下圖所示。


    我們就安裝圖中畫圈的這個版本

    pyenv install 3.6.6 -v

    (注:這里install的時候最好加一個 -v,否則安裝過程信息是不會打印在控制臺的,看上去就好像安裝進度卡住了一樣,首次安裝可能會引起疑惑)


    安裝失敗 = =,原因是一些依賴還沒有裝上

    sudo apt-get install make build-essential libssl-dev zlib1g-dev
    sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget
    sudo apt-get install llvm libncurses5-dev libncursesw5-dev
    1
    2
    3
    

    依賴安裝完畢之后,再次pyenv install 3.6.6 -v

    順利完成~

    注:到這一步為止有一個坑,很多人喜歡安裝最新的版本(python 3.7.0+),在依賴全部安裝完畢的情況下,依舊會出現(xiàn)下圖提示。


    問題是Open SSL已經(jīng)安裝過了(就是這個libssl-dev),當時排查這個問題排查了很久,到最后,發(fā)現(xiàn)是因為沒有配置的情況下,本地的OpenSSL根本沒有支持到python3.7.0+

    pyenv builds/installs openssl into a sub-directory of a new installation prefix, but Python is not configured to use it. Without ./configure --with-openssl=${somewhere} it will favor the system’s OpenSSL. In the case of Darwin, this always fails because the version of OpenSSL is no longer supported (Python >=3.7.0).

    問題鏈接:Python 3.7.0 :: The Python ssl extension was not compiled. Missing the OpenSSL lib?

    前面排查的時候根本沒往那方面想,結(jié)果悲劇了,浪費了很多時間 = =~

    pyenv基本操作

    安裝完成,查看一下

    pyenv versions
    1
    

    發(fā)現(xiàn)python3.6.6已經(jīng)安裝進系統(tǒng)了~

    切換系統(tǒng)默認python環(huán)境

    pyenv global 3.6.6
    1
    

    當前系統(tǒng)默認python版本已經(jīng)變成3.6.6了,可以輸入python命令check一下

    卸載某個python版本

    pyenv uninstall x.x.x
    1
    

    另外pyenv還有各種其他命令行操作,可自行google了解~

    重新打開遠程SSH窗口可能會遇到pyenv command not found問題,重新source一下.bashrc文件

    或者

    查看解決方案:戳這里

    配置虛擬環(huán)境

    準備

    開始配置之前,不妨閱讀一下pyenv-virtualenv ReadMe

    (可選 + 推薦)自動激活虛擬環(huán)境

    通過pyenv安裝完成后,連帶著virtualenv也安裝完成了,我們可以通過pyenv命令完成虛擬環(huán)境的配置

    在 pyenv-virtualenv中,由于需要從根本上處理一些已知的問題(關于$PATH和shell提示符),activate/deactivate提示符將會在未來的版本中移除(目前依然可以使用,但是會彈出warning,我是覺得不爽啦~)

    問題鏈接:Question regarding prompt changing

    根據(jù)作者的建議,我們可以如下方式完成虛擬環(huán)境的配置和激活

    運行

    $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

    重啟一下shell

    $ exec "$SHELL"
    1
    

    運行

    pyenv virtualenv 3.6.6 eshop

    其中3.6.6是需要指定的python版本, eshop是虛擬環(huán)境的名稱(隨便起的~)

    此時,虛擬環(huán)境已經(jīng)創(chuàng)建完成并自動激活,可以通過pyenv versions查看,如下圖所示。


    通過 pyenv shell xxx(xxx為python版本號或者虛擬環(huán)境名稱)切換環(huán)境,效果如下圖


    原有的激活方式

    運行

    pyenv virtualenv 3.6.6 eshop

    激活/反激活虛擬環(huán)境

    pyenv activate eshop

    pyenv deactivate

    最后

    卸載虛擬環(huán)境

    pyenv uninstall

    至此,虛擬環(huán)境的搭建就算完成了~

    Nginx基本配置

    sudo apt-get install nginx
    1
    

    運行

    sudo /etc/init.d/nginx start # start nginx
    1
    

    如果出現(xiàn)sudo: unable to resolve host問題,參考這里

    如果出現(xiàn)端口占用情況,通過修改配置文件換用其他端口(如8000)

    如果出現(xiàn)端口沒被占用但無法訪問,請回到配置安全組出查看端口策略是否配置完備

    打開瀏覽器訪問 xx.xx.xxx.xxx:80,其中xxxx是你的公網(wǎng)IP,80是Nginx默認監(jiān)聽的端口號

    出現(xiàn)


    這個表示Nginx已經(jīng)成功安裝并運行起來了

    (可選)服務端配置數(shù)據(jù)庫

    本文以postgresql為例進行安裝配置

    基本配置

    參考文章:Ubuntu 安裝和配置postgresql

    安裝postgresql

    sudo apt-get install postgresql

    安裝完成后服務器系統(tǒng)會自動創(chuàng)建一個名為postgres的賬戶(數(shù)據(jù)庫超級用戶),密碼為空

    切換到postgres

    sudo su postgres
    1
    

    登陸postgresql

    psql postgres
    1
    

    在postgresql界面繼續(xù)輸入如下命令(注意末尾加分號)

    ALTER USER postgres with PASSWORD 'postgres';
    1
    

    修改成功后輸入’\q’ 退出postgresql

    退出postgres賬戶可以直接輸入exit后回車或者ctrl + d

    上述流程正確的情況下如下圖所示。


    遠程登陸

    編輯pgsql配置文件,運行

    vim /etc/postgresql/9.1/main/postgresql.conf

    或者利用WinSCP界面進行編輯(本篇文章中所有配置文件編輯均使用WinSCP + sublime,個人喜好)

    修改配置文件如下:

    監(jiān)聽任何地址訪問,修改連接權(quán)限

    # listen_addresses = ‘localhost’
    改為 
    listen_addresses = ‘*’
    1
    2
    3
    

    啟用密碼驗證

    # password_encryption = on 
    改為 
    password_encryption = on
    1
    2
    3
    

    編輯 /etc/postgresql/9.1/main/pg_hba.conf,在文件末尾添加

    # to allow your client visiting postgresql server
    host all all 0.0.0.0 0.0.0.0 md5
    1
    2
    

    保存上述修改

    最后,重啟數(shù)據(jù)庫

    sudo service postgresql restart


    至此,數(shù)據(jù)庫配置完成了

    可以通過登陸測試一下,直接登陸或者使用PgAdmin都可以,不再贅述

    Django項目代碼上傳

    上傳

    前面配置了這么多,Django項目還沒有上傳到服務器呢,確保本地有一個可運行Django項目(廢話:P)

    上傳方式很多

    1. 通過WinSCP直接上傳(左邊拖到右邊,完成~)
    2. 通過pycharm進行代碼部署(推薦)
    3. 其他

    新建的用戶可能會遇到上傳的權(quán)限問題,解決方法戳Permissions on /var/www/html for uploading web site files via SFTP

    查看用戶xxx所在組以及組內(nèi)成員

    groups xxx

    更改文件上傳目錄的用戶和用戶組

    sudo chown breavo:breavo /file/upload/path

    為用戶組添加寫權(quán)限

    sudo chmod -R 775 /file/upload/path

    項目試運行

    設置django settings.py

    ALLOWED_HOSTS = ['*']
    1
    

    安裝項目依賴(依賴寫入requirements.txt中,每個依賴注意添加版本號)

    cd 到你存放requirement.txt的目錄, 運行

    pip install -r requirements.txt

    等待依賴安裝完成,cd到項目目錄下,運行

    python manage.py runserver 0.0.0.0:8000

    打開瀏覽器輸入服務器地址,查看

    xx.xx.xxx.xxx:8000 (xxx為服務器公網(wǎng)IP地址)

    項目正常運行~(如果settings.py文件中的DEBUG設置為False,會觀察到靜態(tài)資源無法加載)

    Nginx代理

    在項目中配置Nginx

    在項目目錄下添加一個config文件夾,后面的配置文件都統(tǒng)一放到該文件夾下(配置文件存放路徑不統(tǒng)一會導致輸入提示符時運行不成功)

    config文件下新建mysite_nginx.conf文件,內(nèi)容如下(將路徑替換成你自己的項目路徑或者對應文件):

    # mysite_nginx.conf
    # the upstream component nginx needs to connect to
    upstream django {
     # unix:///home/breavo/PyWorkSpace/mysite_code_shuffle/config/eshop.sock
     # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
     server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }
    # configuration of the server
    server {
     # the port your site will be served on
     listen 8000;
     # the domain name it will serve for
     server_name xx.xx.xxx.xxx; # substitute your machine's IP address or FQDN
     charset utf-8;
     # max upload size
     client_max_body_size 75M; # adjust to taste
     # Django media
     location /media {
     # /home/breavo/PyWorkSpace/mysite_code_shuffle/meida;
     alias /path/to/your/mysite/media; # your Django project's media files - amend as required
     }
     location /static {
     # /home/breavo/PyWorkSpace/mysite_code_shuffle/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 / {
     uwsgi_pass django;
     include /home/breavo/PyWorkSpace/mysite_code_shuffle/config/uwsgi_params; # the uwsgi_params file you installed
     }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    

    在/etc/nginx/sites-enabled中創(chuàng)建一個鏈接,這樣Nginx能夠發(fā)現(xiàn)并啟用我們的配置,運行

    sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
    1
    

    部署靜態(tài)文件

    在運行Nginx之前,需要將django項目中的所有靜態(tài)文件放入static文件夾,在mysite/settings.py中添加

    STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    1
    

    然后運行

    python manage.py collectstatic
    1
    

    啟動(重啟)Nginx

    sudo /etc/init.d/nginx start
    1
    

    簡單測試

    往服務器項目的media文件夾里丟一個圖片(這里以test.png為例)


    訪問

    xx.xx.xxx.xxx:8000/media/test.png
    1
    



    圖片正確顯示~

    至此,靜態(tài)文件部署算是完成了

    Uwsgi安裝及配置

    接下來我們需要使用Uwsgi來處理項目中的動態(tài)請求

    基本配置

    虛擬環(huán)境下運行

    pip install uwsgi

    在之前創(chuàng)建的config文件夾下新建一個hello.py用來做測試,寫入以下內(nèi)容

    # test.py
    def application(env, start_response):
     start_response('200 OK', [('Content-Type','text/html')])
     return [b"Hello World"] # python3
     #return ["Hello World"] # python2
    1
    2
    3
    4
    5
    

    接下來運行

    uwsgi --http :8001 --wsgi-file test.py

    打開瀏覽器查看


    出現(xiàn)上圖,說明Uwsgi已經(jīng)初步運行成功

    運行項目

    上述步驟沒有出問題的話,我們就可以使用Uwsgi啟動項目了,項目根目錄下運行

    uwsgi --http :8001 --module mysite.wsgi

    其中mysite.wsgi(mysite替換成自己的項目名稱)會自動搜索項目中的wsgi.py文件

    如果正常運行~恭喜

    如果瀏覽器出現(xiàn)Internal Server Error

    1. 檢查命令提示符是否輸入正確
    2. 檢查是否項目根目錄下運行
    3. 其他情況,查看命令行輸出或者log

    至此Uwsgi基本配置算是完成了~~

    Nginx + Uwsgi + django

    Nginx訪問hello.py

    現(xiàn)在我們使用socket通信來通過Nginx訪問hello.py,(確保Nginx已經(jīng)啟動)config文件夾下運行

    uwsgi --socket :8001 --wsgi-file hello.py

    好了,就這么現(xiàn)在訪問瀏覽器

    xx.xx.xxx.xxx:8000


    成功訪問~

    其中8000是Nginx監(jiān)聽的端口(mysite_nginx.conf文件中配置),–socket :8001是用于socket通信的端口(兩個端口都可以替換~)

    使用Unix sockets替換端口

    編輯mysite_nginx.conf文件,將原來內(nèi)容修改成如下

    server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    1
    2
    

    保存后,config文件夾下運行

    uwsgi --socket mysite.sock --wsgi-file hello.py

    依舊打開瀏覽器訪問xx.xx.xxx.xxx:8000,屏幕出現(xiàn)hello world,說明一切正常

    如果出現(xiàn)502 Bad Getway

    查看你的Nginx error log(/var/log/nginx/error.log)

    如果出現(xiàn)

    connect() to unix:///path/to/your/mysite/mysite.sock failed (13: Permission
    denied)
    1
    2
    

    則說明是權(quán)限問題,運行

    uwsgi --socket mysite.sock --wsgi-file hello.py --chmod-socket=666

    或者

    uwsgi --socket mysite.sock --wsgi-file hello.py --chmod-socket=664 (推薦,但是我用了沒成功)

    log如果打印了其他問題,請仔細檢查配置~

    使用Nginx + Uwsgi運行項目

    uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664
    1
    

    注意這里有個小坑,mysite_nginx.conf中我配置的mysite.sock在config文件夾下,而這條命令需要在項目根目錄下運行,這里可以:

    1. 修改mysite_nginx.conf下sock文件路徑到根目錄下
    2. 使用配置文件啟動(推薦)
    編輯配置文件

    config文件夾下新建mysite_uwsgi.ini,輸入以下內(nèi)容

    # mysite_uwsgi.ini file
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    chdir = /path/to/your/project
    # Django's wsgi file
    module = project.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
    # ... with appropriate permissions - may be needed
    chmod-socket = 666
    # clear environment on exit
    vacuum = true
    stats = %(chdir)/config/uwsgi.status 
    pidfile = %(chdir)/config/uwsgi.pid
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    

    用自己的路徑替換其中對應的配置~

    保存后,運行(確保在mysite_uwsgi.ini目錄下)

    uwsgi --ini mysite_uwsgi.ini

    打開瀏覽器訪問xx.xx.xxx.xxx:8000

    項目這時候應該完美運行了~~

    大功告成~:)

    最后

    重新一步一步的部署了一遍之后,強迫癥終于舒服了~~文章中還是有很多地方不(沒)夠(有)完(寫)善(全),后面有時間繼續(xù)補一補~:)


    一、申領范圍:失業(yè)人員

    二、申領條件

    (一)依法參加了失業(yè)保險,所在用人單位和本人按規(guī)定履行繳費義務滿1年;

    (二)非因本人意愿中斷就業(yè)。

    三、網(wǎng)上申領

    (一)登錄“吉林省社會保險網(wǎng)上經(jīng)辦系統(tǒng)”申領

    1.登錄系統(tǒng)網(wǎng)址:http://wssb.jlsi.jl.gov.cn:8001,選擇“個人用戶”,未注冊申領人點擊“注冊”按鍵,進行注冊;已注冊申領人可直接登錄。

    2.登錄成功后,點擊進入“失業(yè)金申領”模塊,填寫帶*的必填信息,點擊“同步社會保障卡信息”,確認無誤后保存。

    3.保存后進入“失業(yè)金申領列表”頁面,點擊“附件”,進行附件上傳。

    4.上傳附件后點擊“上報”,等待社會保險局審核結(jié)果。

    5.上報完成后,請通過點擊“同步審批結(jié)果”,關注審批結(jié)果。

    (二)通過“吉林掌上社保”APP申領

    失業(yè)人員可掃描二維碼下載“吉林掌上社保”APP,通過“吉林掌上社保”APP進行失業(yè)保險金申領。

    (三)長春市失業(yè)人員申領

    可登陸“長春市社會保險公共服務平臺”

    (https://www.ccshbx.org.cn/)、“長春社會保險”微信公眾號和“長春社會保險”微信小程序辦理。

    四、現(xiàn)場申領

    失業(yè)人員需要攜帶有效身份證件(激活金融社會保障卡,或本人身份證、銀行卡、存折)到失業(yè)保險最后參保地社會保險局申領。

    來源 敦化社保

網(wǎng)站首頁   |    關于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有