用到的工具,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。
