1. 程式人生 > 實用技巧 >linux 常用伺服器部署

linux 常用伺服器部署

安裝mysql(mariadb)

yum install mariadb-server mariadb -y  #下載mysql
systemctl start mariadb  #啟動mysql
mysql -u root -p   #登入mysql   
這裡沒有設定密碼直接回車

mysql --user=root -p #登入不上用這個試試
View Code

安裝python3

下載Python原始碼地址
下載地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
安裝python 庫環境

yum install gcc patch libffi
-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 下載,解壓安裝原始碼包 tar -xvzf Python-3.6.2.tgz cd Python-3.6.2 編譯3步曲 configure是一個指令碼檔案,告訴gcc編譯器,(/opt/python369)Python3即將安裝到哪裡,對開發環境檢查 ./configure --prefix=/opt/python369 make 生成Python3 可執行程式 make install 第2部第3部合成一步 make
&& make install 配置 PATH vim /etc/profile 將解壓出來的python3 可執行檔案加入到 path PATH = "/opt/python369/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" source /etc/profile 豆瓣源下載django 注意Python版本與Django版本 pip3 install -i https://pypi.doubanio.com/simple/ django==1.11.25 建立Django專案 建立專案 django
-admin startproject dj1 建立app01 django-admin startapp app01 setting 中註冊app01 ALLOWED_HOSTS = ["*"] 啟動 服務 python3 manage.py runserver 0.0.0.0:9000 訪問 linux主機ip:9000/

virtualenv虛擬環境

不同工程依賴的開發環境不同,建立互相隔離的環境
#指定清華源下載pip的包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
建立獨立執行環境-命名
virtualenv  --python=python3  venv1
進入虛擬環境
source venv/bin/activate
安裝第三方包
(venv)Myproject: pip3 install -i   https://pypi.doubanio.com/simple django==1.9.8
#此時pip的包都會安裝到venv環境下,venv是針對Myproject建立的

建立專案。。。
建立app。。。
退出venv環境
deactivate命令
原理:
複製一分Python到virtualenv環境
命令source venv/bin/activate進入一個virtualenv環境時,
virtualenv會修改相關環境變數,讓命令python和pip均指向當前的virtualenv環境。
    echo $PATH
/opt/venv1/bin:/opt/python369/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
View Code

uwsgi

是什麼
    wsgi  是閘道器介面 ,一種協議
uwsgi   實現wsgi的介面協議,c語言編寫支援多程序
安裝uwsgi
pip3 install -i https://pypi.doubanio.com/simple uwsgi
配置檔案(專案目錄下建立uwsgi.ini)

    [uwsgi]
#使用nginx連線時使用
#socket=0.0.0.0:8000

#這裡是socket引數,上線是不會這麼用的,對後端不安全,使用socket是安全的,這裡是除錯
http=0.0.0.0:8000

#不用nginx直接當做web伺服器使用
#http=0.0.0.0:9000

#專案目錄絕對路徑(也就是crm第一層絕對路徑)
chdir=/opt/luffy_crm

# crm第二層相對路徑,找到第二層下的wsgi
# module=luffy_crm.wsgi

#wsgi檔案路徑,在專案底下
wsgi-file=Ace_crm/wsgi.py

#填寫虛擬直譯器第一層目錄,2*cpu數量+1
home=/opt/luffy_crm/venv_crm

# 定義uwsgi執行的程序數量
processes=3
#threads=2
master=True
vacuum=True
#pidfile=uwsgi.pid
#daemonize=uwsgi.log
啟動
uwsgi --ini ./uwsgi.ini
檢視啟動的日誌
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 14466)
spawned uWSGI worker 1 (pid: 14468, cores: 1)
spawned uWSGI worker 2 (pid: 14469, cores: 1)
spawned uWSGI worker 3 (pid: 14470, cores: 1)
spawned uWSGI http 1 (pid: 14471)
View Code

supervisor

supervisor 是基於 python 的任務管理工具,用來自動執行各種後臺任務
1。安裝supervisor

yum install -y supervisor
2.生成supervisor 配置檔案
echo_supervisord_conf > /etc/supervisord.conf
配置例子
    supervisord.conf配置檔案引數解釋
[program:xx]是被管理的程序配置引數,xx是程序的名稱
[program:xx]
command=啟動uwsgi命令
autostart=true       ; 在supervisord啟動的時候也自動啟動
startsecs=10         ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒
autorestart=true     ; 程式退出後自動重啟,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重啟
startretries=3       ; 啟動失敗自動重試次數,預設是3
user=tomcat          ; 用哪個使用者啟動程序,預設是root
priority=999         ; 程序啟動優先順序,預設999,值小的優先啟動
redirect_stderr=true ; 把stderr重定向到stdout,預設false
stdout_logfile_maxbytes=20MB  ; stdout 日誌檔案大小,預設50MB
stdout_logfile_backups = 20   ; stdout 日誌檔案備份數,預設是10
; stdout 日誌檔案,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立日誌檔案)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false     ;預設為false,程序被殺死時,是否向這個程序組傳送stop訊號,包括子程序
killasgroup=false     ;預設為false,向程序組傳送kill訊號,包括子程序
3.找到uwsgi絕對路徑
注意:這裡是在虛擬環境下
(venv_crm) [root@localhost venv_crm]# which uwsgi
/opt/luffy_crm/venv_crm/bin/uwsgi
    /opt/luffy_crm/Venv_CRM/bin/uwsgi
4.uwsgi.ini絕對路徑
/opt/luffy_crm/uwsgi.ini
    /opt/luffy_crm/uwsgi.ini
因此 啟動uwsgi 命令的絕對路徑是
/opt/luffy_crm/venv_crm/bin/uwsgi --ini  /opt/luffy_crm/uwsgi.ini
將supervisor 配置寫入到 /etc/supervisord.conf
    #supervisord.conf配置檔案引數解釋
[program:s666]
command=/opt/luffy_crm/venv_crm/bin/uwsgi --ini  /opt/luffy_crm/uwsgi.ini
autostart=true       ; 在supervisord啟動的時候也自動啟動
startsecs=10         ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒
autorestart=true     ; 程式退出後自動重啟,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重啟
stopasgroup=true     ;預設為false,程序被殺死時,是否向這個程序組傳送stop訊號,包括子程序
killasgroup=true     ;預設為false,向程序組傳送kill訊號,包括子程序
    #supervisord.conf配置檔案引數解釋
[program:s666]
command=/RE/luffy_crm/Venv_crm/bin/uwsgi --ini /RE/luffy_crm/uwsgi.ini
autostart=true       ; 在supervisord啟動的時候也自動啟動
startsecs=10         ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒
autorestart=true     ; 程式退出後自動重啟,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重啟
stopasgroup=true     ;預設為false,程序被殺死時,是否向這個程序組傳送stop訊號,包括子程序
killasgroup=true     ;預設為false,向程序組傳送kill訊號,包括子程序
5.最後啟動supervisor,完成uWSGI啟動django

supervisord -c /etc/supervisord.conf #啟動supervisor
supervisorctl -c /etc/supervisord.conf restart my  #重啟my專案
supervisorctl -c /etc/supervisord.conf [start|stop|restart] [program-name|all]
6.檢查程序資訊
ps -ef | grep supervisor  #檢查supervisor是否存在程序,是否啟動
ps -ef | grep uwsgi     #檢查uwsgi是否啟動
7.進入supervisor 任務管理終端

supervisorctl -c /etc/supervisord.conf

(venv_crm) [root@localhost luffy_crm]# supervisorctl -c /etc/supervisord.conf 
s666                             RUNNING   pid 15329, uptime 0:06:19
supervisor>   ##supervisor 互動式命令

statu  #檢視狀態
start  s666  #start 程序名稱啟動程序
stop all  #停止全部任務
View Code

niginx

1.下載
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.檢查環境依賴
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

    如果忘記檢查環境依賴  1 刪除檔案 nginx-1.12.0
                            
4.安裝3部曲
    3解壓
 tar -zxvf nginx-1.12.0.tar.gz 
    4.編譯安裝,狀態檢測,安裝目錄
./configure --prefix=/opt/nginx112/
    make && make install 
5.啟動nginx
 sbin目錄找到nginx啟動

cd sbin
./nginx #啟動
./nginx -s stop #關閉
./nginx -s reload #重新載入
6.新增進path
7.輸入ip可以檢視nginx首頁
View Code