*注:轉(zhuǎn)載自:
https://www.cnblogs.com/znn041622/p/11145952.html
一.環(huán)境介紹:
????(1)阿里云cms(ubumtu18.0.1)
????(2) git
????(3)mysql5.7
????(4)python
? ? (5) uwsgi
????(6) nginx
????(7)django2.0
二:環(huán)境配置:
1.安裝前準(zhǔn)備工作:
(1) 因?yàn)榘⒗镌品?wù)器安全要求比較高隶糕,因此混狠,需要登錄后臺(tái)服務(wù)器摘投,去安全組設(shè)置開放接口,
需要開放3306(數(shù)據(jù)庫),22(22)ssh后續(xù)連接,80(http)服務(wù),此外打開3000-9000端口孝鹊。
(2)開啟FTP服務(wù),方便后續(xù)上傳文件和安裝包穴墅。
2.git安裝以及相關(guān)設(shè)置
sudo apt-get install git
2.1文件保存到github上惶室。
(1)注冊(cè)github賬戶,同時(shí)下載bendigit客戶端
(2)在git客戶端做基本配置,自己的名字和郵箱:
git config --global user.name "yourname"
git config --global user.email "youremail"
(3)二玄货、生成SSH密鑰過程:
1.查看是否已經(jīng)有了ssh密鑰:cd ~/.ssh如果沒有密鑰則不會(huì)有此文件夾皇钞,有則備份刪除
2.生成密鑰:$ ssh-keygen -t rsa -C “yourenail”按3個(gè)回車,密碼為空松捉〖薪纾可以看到如下內(nèi)容:
“Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:………………最后得到了兩個(gè)文件:id_rsa和id_rsa.pub”
文件在用戶/users/username/.ssh下。
3.登錄github,點(diǎn)擊settings,添加密鑰到ssh:ssh-add,添加的是“id_rsa.pub”里面的公鑰隘世。
5.測(cè)試:ssh -Tgit@github.com可柿,出現(xiàn)如下內(nèi)容說明測(cè)試連接成功:
“The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell accessConnection to github.com closed.”
git安裝成功
2.2搭建自己的git服務(wù)器:
(1)創(chuàng)建git用戶和權(quán)限:
添加用戶:adduser git
修改權(quán)限:vi /etc/passwd
找到文件:git:x:1001:1001:,,,:/home/git:/bin/bash做修改如下:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shel
(2)創(chuàng)建git公鑰匙:
同上述步驟3.1步驟的1和2.復(fù)制id_rsa.pub內(nèi)容,回到服務(wù)器操作:
cd/home/git/cd/home/git/?mkdir .ssh
cd.sshcd.ssh?vi authorized_keys
需要先檢測(cè)是否有.ssh目錄丙者,將公匙保存在文件里复斥,然后退出。
(3)測(cè)試械媒,創(chuàng)建一個(gè)倉庫目锭,常識(shí)獲取:
cd/varcd/var?chown -R git:git git
chmod777gitchmod777git?cd git
接下來纷捞,我們用git命令初始化一個(gè)倉庫:
$ git init --bare arepoforyourproject.git
回到你本地的電腦上痢虹,我們通過克隆來試試倉庫是否可以使用:
$ git clone git@10.0.0.121:/var/git/arepoforyourproject.git
然后會(huì)提示你輸入git的密碼(創(chuàng)建用戶時(shí)的密碼),輸入進(jìn)去主儡,
git服務(wù)器已經(jīng)OK了奖唯。
3.數(shù)據(jù)庫安裝:
sudo apt-get install mysql
sudo apt-get update
sudo apt-get install mysql-server
sudo apt-get install mysql-client (安裝過程中需要設(shè)置密碼:123456)
sudo apt-get install libmysqlclient-dev
安裝完成以后,輸入:mysql -uroot -p 回車 輸入密碼看能否進(jìn)行正常的本地登錄糜值。
如果無法登陸(確認(rèn)服務(wù)器打開了3306端口):
3.1修改mysql監(jiān)聽I(yíng)P:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address丰捷,如果監(jiān)聽固定遠(yuǎn)程IP坯墨,則改成遠(yuǎn)程主機(jī)IP,
若監(jiān)聽所有IP瓢阴,則改成0.0.0.0或者注釋bind-address:
service mysql restart
查看MySQL監(jiān)聽地址:
netstat -ano | grep 3306畅蹂,看到:
tcp 0 0.0.0:3306 0.0.0.01:*(配置監(jiān)聽所有人)
監(jiān)聽成功
3.2遠(yuǎn)程登錄實(shí)現(xiàn):
grant all privileges on *.* to '用戶'@'ip' identified by '密碼' with grant option;
flush privileges;
第一句語句語句中,*.*代表所有庫表荣恐,若想給予所有IP權(quán)限, ”ip”寫成“%”,所以第一句sql的意思是給予來自所有IP地址的通過“用戶”累贤, “密碼”登錄的用戶對(duì)所有庫表的所有操作權(quán)限叠穆。 第二句sql,刷新權(quán)限臼膏。
service mysql restart
然后同樣重啟MySQL生效硼被。
3.3 mysql -u ‘user’ -p,然后輸入密碼就可以登陸成功。
mysql安裝成功
4.python安裝:
系統(tǒng)自帶了2.7版本渗磅,以及3.6.7.項(xiàng)目使用3.6.2,因此嚷硫,采用編譯安裝3.6.2版本的python:
(1)依賴庫的預(yù)安裝:
sudo apt-get install gcc make zlib1g-dev
sudo apt-get install libbz2-dev
sudo apt-get install libsqlite3-dev
sudo apt-get install python3-dev libxml2-dev libffi-dev libssl-dev libxslt1-dev
(2)安裝:
獲取python包:
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
或者下載本地,通過ftp上傳服務(wù)器
解壓:
tar xJf Python-3.6.1.tar.xz
進(jìn)入目錄配置:
./configure --prefix=/usr/python3
編譯:
make
安裝:sudo -H make install
建立鏈接:
ln -s /usr/python/bin/python3 /usr/bin/python3
python3安裝成功始鱼。
4.1虛擬環(huán)境建立:
apt-get install virtaulenv
apt-get install virtualenvwrapper
安裝完virtualenvwrapper后仔掸,還需要配置virtualenvwrapper的環(huán)境變量。
首先通過which virtualenvwrapper.sh命令查看virtualenvwrapper.sh文件所在的路徑医清。
在當(dāng)前用戶目錄下創(chuàng)建.virtualenv文件夾起暮,用來存放所有的虛擬環(huán)境目錄。
在當(dāng)前用戶目錄下編輯.bashrc文件会烙,添加以下代碼:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
然后退出bashrc文件负懦,輸入命令source ~/.bashrc。
5.安裝uwsgi:
pip3 install uwsgi
6.安裝nginx:
apt-get install nginx
三.部署自己的項(xiàng)目到服務(wù)器上:
本地工作:
(1)確認(rèn)項(xiàng)目沒有bug柏腻。
(2)用pip freeze > requirements.txt將當(dāng)前環(huán)境的包導(dǎo)出到requirements.txt文件中纸厉,方便部署的時(shí)候安裝。
(3)項(xiàng)目上傳到github或者自己服務(wù)器:
git init 初始化倉庫
git add . 批量跟蹤倉庫文件
git commit -m '提交說明'(必須要寫)
創(chuàng)建一個(gè)遠(yuǎn)程倉庫:
git remote add origin xxx.git (倉庫地址)
將本地倉庫中的代碼提交到遠(yuǎn)程服務(wù)器的master分支上
git push -u origin master(首次提交需要加-u)
服務(wù)器端工作:
(1)mkvirtualenv --python=/usr/bin/python3 xfz-env 新建虛擬環(huán)境
(2)進(jìn)入虛擬環(huán)境:
git init
創(chuàng)建一個(gè)遠(yuǎn)程倉庫:
git remote add origin xxx.git (倉庫地址)
git pull origin master
pip install -r requirements.txt
(3)進(jìn)入mysql數(shù)據(jù)庫中五嫂,創(chuàng)建好項(xiàng)目的數(shù)據(jù)庫颗品。
執(zhí)行python manage.py makemigrations/migrate將模型映射到數(shù)據(jù)庫中。
執(zhí)行python manage.py runserver 0.0.0.0:8000贫导,然后在自己電腦上訪問這個(gè)網(wǎng)站抛猫,確保沒有BUG。
在settings.py中的ALLOWED_HOST添加網(wǎng)站的域名或者ip地址孩灯。
設(shè)置DEBUG=False闺金,避免如果你的網(wǎng)站產(chǎn)生錯(cuò)誤,而將錯(cuò)誤信息暴漏給用戶峰档。
在settings.py中配置STATIC_ROOT
(4)執(zhí)行g(shù)it命令败匹,更新到服務(wù)器上:
當(dāng)前目錄下新建文件夾:STATIC_ROOT寨昙,并且執(zhí)行python manage.py collectstatic
執(zhí)行python manage.py runserver 0.0.0.0:8000,然后在自己電腦上訪問這個(gè)網(wǎng)站掀亩,確保沒有BUG
(5)當(dāng)前目錄下創(chuàng)建uwsgi,ini(修改項(xiàng)目路徑舔哪,home,按照自己項(xiàng)目的路徑):
[uwsgi]
# 必須全部為絕對(duì)路徑
# 項(xiàng)目的路徑
chdir = /srv/beike/xfz
# Django的wsgi文件
module = xfz.wsgi
# Python虛擬環(huán)境的路徑
home = /root/.virtualenvs/xfz-env
# 進(jìn)程相關(guān)的設(shè)置
# 主進(jìn)程
master = true
# 最大數(shù)量的工作進(jìn)程
processes = 10
http = :8000
# 設(shè)置socket的權(quán)限
chmod-socket = 666
# 退出的時(shí)候是否清理環(huán)境
vacuum = true
daemonize = /var/log/xfz_uwsgi.log
然后通過命令uwsgi --ini uwsgi.ini運(yùn)行,確保沒有錯(cuò)誤槽棍。然后在瀏覽器中訪問http://ip地址:8000捉蚤,如果能夠訪問到頁面(可能沒有靜態(tài)文件)說明uwsgi配置沒有問題
(6)在/etc/nginx/conf.d目錄下,新建一個(gè)文件炼七,叫做zhiliaoketang.conf(根據(jù)自己情況也可以叫其他名字缆巧,
修改server 后的路徑到自己的項(xiàng)目路徑,server_name到自己的項(xiàng)目名):
upstream zhiliaoketang {
server unix:///srv/zhiliaoketang/zhiliaoketang.sock;
}
# 配置服務(wù)器
server {
# 監(jiān)聽的端口號(hào)
listen 80;
# 域名
server_name 192.168.0.101;
charset utf-8;
# 最大的文件上傳尺寸
client_max_body_size 75M;
# 靜態(tài)文件訪問的url
location /static {
# 靜態(tài)文件地址
alias /srv/zhiliaoketang/static_dist;
}
# 最后豌拙,發(fā)送所有非靜態(tài)文件請(qǐng)求到django服務(wù)器
location / {
uwsgi_pass zhiliaoketang;
# uwsgi_params文件地址
include /etc/nginx/uwsgi_params;
}
}
service nginx configtest陕悬,如果ok說明成功了
service nginx restart
在返回到項(xiàng)目目錄,打開uwsgi:
注釋掉:
“http = :8000”按傅,并添加:
“socket = srv/zhiliaoketang/zhiliaoketang.sock”(該內(nèi)容需要與zhiliaoketang.conf下面的upstream
中配置路徑保持一致)捉超。
至此,整個(gè)配置完成唯绍。