最近項目服務器變更,研究了CentOS6.9下httpd2.4+django1.11.16+python3.6+PostgreSQL的部署,以前還有一個ubuntu16.04下的部署等之後整理好後再來寫html
首先遠程的一些軟件,這裏的rpm文件是我更改了CentOS下設置,在線安裝後緩存下來的,也就是說你想離線安裝須要在線安裝成功,有須要的能夠私信我前端
遠程鏈接:xshell/putty
遠程上傳:WinSCP
部署文件:包含rpm文件夾,python依賴包,項目文件
由於是離線部署,首先要自定義本地源python
cd到準備好的rpm目錄下,安裝deltarpm,python-deltarpm,createrepo,安裝有前後順序linux
cd /home/file/local-packages/
yum install deltarpm
yum install python-deltarpm
yum install createrepo
建立本地yum倉庫,這裏我在根目錄建立的文件夾nginx
mkdir -p /yum/local
cp /home/file/local-packages/* /yum/local
重命名備份yum配置文件c++
cd /etc/yum.repo.d
rename .repo .repo.bak *
建立repo文件,將如下複製到repo文件中,使本地源生效sql
vim /etc/yum.repos.d/CentOS-Local.repo
[Local]
name=Local Yum
baseurl=file:///yum/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
啓用shell
gpgcheck=0
清空緩存,生產rpm包依賴關係數據庫
yum clean all
createrepo /yum
yum makecache
安裝gcc編譯器apache
yum install gcc
yum install gcc-c++
由於配置好了本地源,如下使用在線和離線安裝效果同樣,不過我使用scl源,很不錯的一個軟件集合,你能夠在這個裏面使用你想使用的各類軟件版本而與原環境不干擾,推薦給你們,具體使用請了解官方網站
SCL軟件集合官方網站
https://www.softwarecollections.org/en/
首先安裝python3.6
yum install rh-python36
scl enable rh-python36 bash
安裝PostgreSQL
yum install rh-postgresql94
scl enable rh-postgresql94 bash
postgresql-setup --initdb
service rh-postgresql94-postgresql start
su - postgres -c 'scl enable rh-postgresql94 -- psql'
alter user postgres with password 'Lantucx2018';
create database "resmanageV0.1";
\q
passwd postgres
修改PostgreSQL配置文件使其能夠被其餘主機鏈接
vim /var/opt/rh/rh-postgresql94/lib/pgsql/data/postgresql.conf
listenaddress = "*"
port = 5432
vim /var/opt/rh/rh-postgresql94/lib/pgsql/data/pg_hba.conf
(最後一行添加,此外,全部的驗證方式需改成md5)
host all all 0.0.0.0/0 md5
從新啓動PostgreSQL
service rh-postgresql94-postgresql restart
安裝httpd2.4,在CentOS下它叫httpd,而在windows和Ubuntu下,它叫apache,是經常使用的python部署服務
sudo yum install httpd24
scl enable httpd24 bash
service httpd24-httpd start
service httpd24-httpd restart
注意,安裝後須要配置httpd2.4的配置文件,這裏記不太清楚了,往後整理了會寫上來,有什麼問題了能夠私信我,這裏寫出配置文件路徑和錯誤文件路徑,注意,這個路徑僅適用於SCL集合安裝的,本身想要尋找能夠使用find -name 文件名 來尋找,這條指令是尋找當前目錄下,最好cd到根目錄使用
/opt/rh/httpd24/root/etc/httpd/conf
/var/log/httpd24/error_log
安裝mod-wsgi和nginx,nginx是前端須要,我順手裝上了,注意mod-wsgi安裝分兩種,一種是python依賴包,一種是安裝到操做系統中的,這裏使用的是安裝操做系統中
yum install rh-python36-mod_wsgi.x86_64
yum install rh-nginx110.x86_64
安裝python依賴包,python依賴包依賴關係複雜,離線安裝時要注意依賴關係,負責會有不少安裝不了,按照SCL方案安裝的python3.6須要安裝setuptools_scm
首先需單獨安裝setuptools_scm而後cd到部署文件目錄下批量安裝,SCL安裝的python須要開啓python3環境
pip3 install setuptools_scm-3.2.0.tar
pip3 install --no-index --find-links=./packages/ -r requirement.txt
而後將項目放到httpd目錄下,注意,須要更改給httpd的用戶操做項目文件的權限,我這裏是這麼操做的,實際多餘的操做記不太清楚了,若是報錯了看錯誤日誌給予響應的權限便可
將項目文件放到/opt/rh/httpd24/root/var/www/html/下
修改項目中logs權限chmod -R 權限 文件
Elasticsearch的安裝,因爲項目數據量巨大,普通數據庫查詢效率過低,這裏使用的Elasticsearch,之後會再更新Elasticsearch使用方法,網上也衆多,這裏不作贅述
mkdir /home/soft
cp /home/file/elasticsearch /home/soft
tar -xvzf elasticsearch.tar.gz
cd elasticsearch/bin/
./elasticsearch
到了django基本操做,注意更改項目中數據庫等配置,寫在這裏是提醒你們別忘了HHHHH,第一行是使用SCL安裝的python因此須要開啓python3的環境
scl enable rh-python36 bash
python3 manage.py makemigrations
python3 manage.py migrate
python manage.py createsuperuser
最後放個我踩到的大坑
不少權限問題都是防火牆引發的,部署的時候先關閉,沒問題了再打開
chkconfig iptables off
service iptables stop
還有一個selinux,這個是linux內核級別的安全限制,臨時關閉我感受大部分時候無論用,須要重啓才能生效,這個是一個大坑,注意關閉
setenforce 0
編輯/etc/selinux/config文件,將SELINUX的值設置爲disabled
vim /etc/selinux/config