ubuntu裸機啓動python博客項目

關注公衆號“輕鬆學編程”瞭解更多。

在linux的ubuntu(18.04)中正確安裝python的命令:

sudo apt clean
sudo apt update
sudo apt upgrade
sudo apt install python3
sudo apt install python3-venv
sudo apt install python3-dev
sudo apt install python3-pip
sudo pip3 install --upgrade pip
sudo apt install nginx
sudo apt autoremove
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
sudo apt install redis-server

允許外部訪問Mysql

1、登錄雲服務器的控制檯,然後配置安全組,開通3306端口允許外部訪問
2、在服務器上找到/etc/mysql/mysql.conf.d中的mysqld.cnf文件,
把bind-address		= 127.0.0.1改成
bind-address		= 0.0.0.0

3、找到/etc/mysql中的debian.cnf查看裏面的登錄用戶與密碼,比如我的是
user     = debian-sys-maint
password = eSHSYdfO3fdBvqqG
然後執行命令:
mysql -u debian-sys-maint -peSHSYdfO3fdBvqqG
回車,進入mysql命令行後,繼續輸入:
use mysql;
update mysql.user set authentication_string=password('你的密碼') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
create database my_web charset=utf8;
exit;

4、然後重啓mysql
sudo /etc/init.d/mysql restart
查看3306端口是否允許外部訪問:
netstat -lnp|grep 3306
如果顯示的是0.0.0.0開通的端口則說明允許外部訪問
在上面的語句中創建了一個與項目相關的數據庫my_web,這個改爲你實際的

虛擬環境

在/home下創建一個my_web文件夾,把自己的項目導進來

在/home下創建一個文件夾venv,然後進去使用命令python3 -m venv my_web創建一個虛擬環境

使激活虛擬環境:source /home/venv/my_web/bin/activate

導包:pip3 install -r /home/my_web/requirements.txt

導uwsgi:pip3 install uwsgi

數據遷移與創建後臺管理員

python manage.py  makemigrations
python manage.py migrate
python manage.py createcachetable
python manage.py createsuperuser

uwsgi配置:

[uwsgi]
# 使用nginx連接時 使用8000端口
socket=0.0.0.0:8000
# 直接作爲web服務器使用
#http=127.0.0.1:8010
# 配置工程目錄
chdir=/home/my_web
# 配置項目的wsgi目錄。相對於工程目錄
wsgi-file=MySites/wsgi.py
virtualenv =/home/venv/my_web
#配置進程,線程信息
processes=2
threads=4
enable-threads=True
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log


啓動uwsgi服務:uwsgi --ini uwsgi.ini

nginx配置:

在/etc/nginx/sites-available創建一個文件my_web,內容如下:

    #設定虛擬主機配置
        server {
            #偵聽80端口
            listen 80;
            #listen 443 ssl;
            #定義使用 www.nginx.cn訪問
    		#ssl on;
            server_name  xxx.xxx.com;
            #定義服務器的默認網站根目錄位置
            root /home/my_web; 
    		#ssl_session_timeout 5m; 
            #ssl_certificate   /etc/nginx/cert/xxx.pem;
            #ssl_certificate_key  /etc/nginx/cert/xxx.key;
            #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            #ssl_prefer_server_ciphers on;
            #設定本虛擬主機的訪問日誌
            #access_log  logs/nginx.access.log  main;
     
            #默認請求
            location / {
                #倒入了uwsgi的配置
                include uwsgi_params; 
    		    client_max_body_size	50m;
                #連接uwsgi的超時時間
               # uwsgi_connect_timeout 30; 
     	    #設定了uwsig服務器位置
     	    	uwsgi_pass 127.0.0.1:8000;
            }
            
            location /static{
          	alias /home/my_web/static;
            }
    	location /media {
    	alias /home/my_web/media;
    	}
     
    }

其中xxx.xxx.com表示域名.如果沒有https,就使用#把ssl註釋掉就可以了。

然後把test映射到/etc/nginx/sites-enabled

命令

ln -s /etc/nginx/sites-available/my_web /etc/nginx/sites-enabled/my_web

即可
注意:
uwsgi中配置listen=1024時,啓動uwsgi時可能會報錯:

django + uwsgi + nginx 日誌Listen queue size is greater than the system max net.core.somaxconn (128).

解決方法:

修改系統參數

/proc/sys/net/ipv4/tcp_max_syn_backlog  原來2048    改爲8192
/proc/sys/net/core/somaxconn	原來128     改爲262144

重啓nginx

nginx -s reload

注:啓動nginx的命令爲

nginx -c /etc/nginx/nginx.conf

如果獲取不到靜態資源,可能與項目目錄權限有關:

chmod 777  my_web/

ubuntu18.04開機自啓動腳本

步驟 

1.編寫腳本。
vi start.sh
比如添加以下內容:
source /home/venv/my_web/bin/activate
uwsgi --ini /home/my_web/uwsgi.ini
nginx -s reload
2.給腳本賦權限。

chmod 777 start.sh
3.進入到/etc/init.d/目錄下。

cd /etc/init.d
4.將腳本遷移過來。(必須在該目錄下的腳本才能執行)

mv 創建腳本路徑/start.sh .
5.通過命令行增加。

# 100表示優先級,數越大執行的越靠後。
update-rc.d start.sh defaults 100
6.去除開機啓動腳本

update-rc.d start.sh -f start.sh remove

後記

【後記】爲了讓大家能夠輕鬆學編程,我創建了一個公衆號【輕鬆學編程】,裏面有讓你快速學會編程的文章,當然也有一些乾貨提高你的編程水平,也有一些編程項目適合做一些課程設計等課題。

也可加我微信【1257309054】,拉你進羣,大家一起交流學習。
如果文章對您有幫助,請我喝杯咖啡吧!

公衆號

公衆號

讚賞碼

關注我,我們一起成長~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章