centos7服務器部署django項目。


用到的工具,xftp(文件互傳),xshell(遠程連接)

aliyun服務器防火牆開啟的端口。80,22(ssh),3306(mysql),8000,9090

部署項目:

1,安裝nginx

1>http://nginx.org/en/download.html
2>下載: wget http://nginx.org/download/nginx-1.17.0.tar.gz
3>解壓壓縮包  tar xf nginx-1.17.0.tar.gz
4>安裝依賴 yum -y install pcre-devel zlib-devel
5>進入解壓后的文件 安裝nginx: ./configure --prefix=/usr/local/nginx
6>make  和  make install
7>啟動nginx /usr/local/nginx/sbin/nginx   可通過瀏覽器訪問服務器公網ip看到歡迎頁面

2,安裝mysql數據庫

安裝依賴:yum -y install ncurses-devel gcc-* bzip-*        yum -y install gcc-*
安裝cmake:

wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
   解壓cmake  
   進入cmake文件夾,運行configure命令   ./configure
   沒有error說明安裝成功 然后cmake進行編譯   make -j4    make install
  查看cmake版本確認是否安裝成功  cmake --version
安裝boost 1.59版本
下載: https://www.boost.org/users/history/version_1_59_0.html
解壓boost,因為boost是綠化版,直接解壓就好了
剪切boost文件夾 mv boost_1_59_0 /usr/local/boost
安裝mysql
   從官網下載mysql5.7的社區版壓縮包
解壓並進入解壓后的文件夾執行下面的命令:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data/ \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DWITH_EMBEDDED_SERVER=1 \
-DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost
代表的意義分別是:
指定安裝路徑
指定數據目錄
指定sock文件路徑
安裝Innodb存儲引擎
安裝Myisam存儲引擎
允許使用Load data 命令從本地導入數據
安裝所有字符串,默認字符串utf8,校驗字符
關閉debug
生成一個libmysqld.a的庫,這個庫同時集成了mysql服務和客戶端API
允許boost下載boost庫文件
沒有報錯的話進行編譯 : make -j4     make install
如果在編譯時候出錯,或者make install后出錯,可以重新編譯make -j4和make install
因為可能網速問題,導致一些包沒有下載下來,所以重新make -j4和make install
就好了
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ll /usr/local/mysql/
添加mysql的用戶,用戶名為mysql,並利用 chown 將指定文件的擁有者改為指定的用戶mysql用戶
useradd -s /sbin/nologin -r mysql
chown mysql.mysql /usr/local/mysql/ -R
ll /usr/local/mysql/
建立軟連接
ln -sf /usr/local/mysql/bin/* /usr/bin/
ln -sf /usr/local/mysql/lib/* /usr/lib/
ln -sf /usr/local/mysql/libexec/* /usr/local/libexec
ln -sf /usr/local/mysql/share/man/man1/* /usr/share/man/man1
ln -sf /usr/local/mysql/share/man/man8/* /usr/share/man/man8
# 編輯配置文件
vim /etc/my.cnf

/usr/local/mysql//bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

Q8jZpqqlqG%H  這個是mysql密碼,一定記得記錄下來

 啟動mysql

/etc/init.d/mysql start
yum -y install lsof
lsof -i :3306

設置mysql

mysql_secure_installation

Ctr+d退出

 

這樣才能用Navicat去連接數據庫

 3,部署python

下載python文件  wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
解壓並進入python文件夾
yum -y install gcc-* openssl-* libffi-devel sqlite-devel
./configure --enable-optimizations --with-openssl=/usr/bin/openssl
make -j8       make install
默認安裝路徑:/usr/local/lib/python3.7
 
升級pip   pip3 install --upgrade pip
安裝虛擬環境,因為有可能上線多個項目,每個項目所需工具不一樣,所以創建虛擬環境,一個項目一個環境,互不影響:pip3 install virtualenv
創建一個虛擬環境 virtualenv -p python3 web
使得虛擬環境生效:source web/bin/activate
然后在web虛擬環境下安裝Django:   pip3 install django==2.1.8
創建一個django項目: django-admin.py startproject myweb
django-admin.py
修改配置文件
vim myweb/settings.py

指定端口,啟動Django項目:python3 manage.py runserver 0.0.0.0:8000
通過瀏覽器訪問服務器官網ip+端口號可查看頁面信息  119.23.204.209:8000
服務器mysql版本:5.7   Django版本:2.1   python版本:3.7

4,發布網站

安裝uwsgi : pip install uwsgi   pip3 install uwsgi
mkdir /etc/uwsgi
vim /etc/uwsgi/uwsgi.ini      寫入以下內容
[uwsgi]
uid=root      //誰啟動uwgi
gid=root      //組是誰
socket = 127.0.0.1:9090    //監聽的ip地址和端口是多少
master = true        //啟動主進程
vhost = true         //多站模式,可以發布多個網站
no-site = true       //多站模式時不設置入口模塊和文件
workers = 2        //子進程數
reload-mercy = 10   //平滑的重啟
vacuum = true      //退出、重啟時清理文件
max-requests = 1000  //開啟10000個進程后,啟動respawn下
limit-as = 512   //將進程的總內存量控制在512M
buffer-size = 30000  //buffer的大小
pidfile = /var/run/uwsgi9090.pid  //pid文件,用於下面的腳本啟動、停止該進程
daemonize = /var/log/uwsgi9090.log
pythonpath=/root/web/lib/python3.7/site-packages
啟動uwsgi:uwsgi --ini /etc/uwsgi/uwsgi.ini
查看啟用端口信息: netstat -ntpl
關閉uwsgi:
cat /var/run/uwsgi9090.pid     kill -9 11830
vim /etc/init.d/uwsgi     寫入以下內容
#! /bin/sh
DESC="uwsgi daemon"
NAME=uwsgi
DAEMON=/usr/local/bin/uwsgi
CONFIGFILE=/etc/uwsgi/$NAME.ini
PIDFILE=/var/run/${NAME}9090.pid
SCRIPTNAME=/etc/init.d/$NAME
FIFOFILE=/tmp/uwsgififo
set -e
[ -x "$DAEMON" ] || exit 0
 
do_start() {
if [ ! -f $PIDFILE ];then
    $DAEMON $CONFIGFILE || echo -n "uwsgi running"
else
    echo "The PID is exit..."
fi
}
 
do_stop() {
if [ -f $PIDFILE ];then
    $DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
    rm -f $PIDFILE
    echo "$DAEMON STOPED."
else
    echo "The $PIDFILE dosen't found"
fi
}
 
do_reload() {
if [ -p $PIDFILE ];then
    echo w > $FIFOFILE
else  
    $DAEMON --touch--workers--reload $PIDFILE || echo -n "uwsgi can't reload"
fi
}
 
do_status() {
    ps aux|grep $DAEMON
}
 
case "$1" in
 status)
    echo -en "Status $NAME: \n"
    do_status
 ;;
 start)
    echo -en "Starting $NAME: \n"
    do_start
 ;;
 stop)
    echo -en "Stopping $NAME: \n"
    do_stop
 ;;
 reload|graceful)
    echo -en "Reloading $NAME: \n"
    do_reload
 ;;
 *)
    echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
    exit 3
 ;;
esac
exit 0
# 設置權限
chmod 755  /etc/init.d/uwsgi
啟動uwsgi       /etc/init.d/uwsgi start
vim /usr/local/nginx/conf/nginx.conf
寫入以下內容:
注意:如果域名已經解析過了,server_name  localhost;改為server_name www.terroristhouse.com;
server {
        listen       80;
        server_name  localhost;
 
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:9090;
            uwsgi_param UWSGI_SCRIPT myweb.wsgi;
            uwsgi_param UWSGI_CHDIR /usr/local/nginx/html/myweb;
            index  index.html index.htm;
            client_max_body_size 35m;
            #uwsgi_cache_valid 1m;
            #uwsgi_temp_file_write_size 64k;
            #uwsgi_busy_buffers_size 64k;
            #uwsgi_buffers 8 64k;
            #uwsgi_buffer_size 64k;
            #uwsgi_read_timeout 300;
            #uwsgi_send_timeout 300;
            #uwsgi_connect_timeout 300;
        }
    }
#移動項目到指定文件夾
mv myweb /usr/local/nginx/html/
靜態文件配置

/usr/local/nginx/conf/nginx.conf文件中設置
server {
       listen       80;
       server_name  www.terroristhouse.com;
location /static/ {
        #autoindex on;
        alias /usr/local/nginx/html/mysite7/static/;
   break;
   #alias /usr/local/nginx/html/collectedstatic;
}
location /media/ {
   alias /usr/local/nginx/html/mysite7/media/;
   break;
   #autoindex on;
   #alias /usr/local/nginx/html/collectedstatic;
}
收集本地項目安裝的庫項目目錄下
導出庫:pip3 freeze > requirements.txt

在服務器虛擬項目中安裝庫
導入庫: pip3 install -r requirements.txt
重啟 uwsgi和nginx  用瀏覽器訪問域名可查看頁面

/etc/init.d/uwsgi stop        停止運行uwsgi
/etc/init.d/uwsgi start        開啟運行uwsgi
killall -9 nginx                關閉nginx的進程
/usr/local/nginx/sbin/nginx    啟動和查看nginx服務

done。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM