部署阿里云服务器,linux, ubuntu ,部署django用到的一些命令
部署项目《下课说》APP时,总结出的一些命令和方法细节 Linux、ubuntu、django、uwsgi、nginx、mysql 里面有些是查找的资料,我也不大懂【手动笑哭】,这还是部署到一台服务器上,看分布式、集群服务器的技术贴时,都感觉好厉害😂,还需努力! 不过确实部署成功了,项目可以正常运行,期间还修改过几次代码,运行都很稳定。
【真没少费劲,装了好几遍,从刚开始装第一遍的时候装了一天,装到第三四次的时候一个小时就搞定了】
1.安装python3.6
python tab tab # 两次tab键,查看python版本[一般只有python2.7和3.5,需要寄几装3.6]
apt-get update # 更新数据源
apt-get install software-properties-common
add-apt-repository ppa:jonathonf/python-3.6
apt-get update
apt-get install python3.6
2.创建软链接
which python3 #查看python位置 /usr/bin/python3
cd /usr/bin
rm python #[把python绑成python3.6版本,可以不写]
ln -s python3.6 python
rm python3 #[把python3绑成python3.6版本,这个要写不然是python3.5]
ln -s python3.6 python3
可以移除python3.5
apt autoremove python3.5
3.安装pip3 对应python3.6
apt-get install python3-pip
pip3 install --upgrade pip #把pip3更新到最新
退出重新登 [python3.7目前还没有pip版本可用,亲测,不要用python3.7]
4.安装虚拟环境
pip3 install virtualenv #在python3.6下创建
创建虚拟环境:
virtualenv pro_wait_env #[找个目录进入,我放在了home目录下]
cd pro_wait_env
source pro_wait_env/bin/activate # 激活虚拟环境进入
python -V # 查看环境
pip -V
pip list
deactivate # 退出
5.安装git
apt-get install git #[也可以在虚拟环境部分安装]
clone代码
git clone 克隆地址 # clone github上面的代码
6.安装mysql
#wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb
#dpkg -i mysql-apt-config_0.8.10-1_all.deb # 选择8.0 ok
#apt-get update
apt-get install mysql-server # 两次密码 默认5.7版本
ps aux|grep mysql # 查看进程
mysql -uroot -p # 进入数据库
cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf
bind-address = 0.0.0.0 # 这样在Win可以远程连接
sudo service mysql restart # 重启
mysql -uroot -p # 进入数据库
# 修改密码
root@xks:/etc/mysql# cat debian.cnf
user = debian-sys-maint
password = a5iXwkeENbRNXkd5
user = debian-sys-maint
password = 57QwMAShmXlmSYdy
update user set authentication_string=PASSWORD("Xks201314") where user='root';
7.同步数据
pip freeze > requirments.txt # 在本机项目中 生成Python环境下的所有类库到requirments.txt
pip install -r requirements.txt # 在服务器虚拟环境中 安装django需要的库
8.上传settings.py用于测试
ALLOWED_HOSTS = ['*']
9.安装mysqlclient
wget https://dev.mysql.com/get/libmysqlclient-dev_8.0.11-1ubuntu16.04_amd64.deb
dpkg -i libmysqlclient-dev_8.0.11-1ubuntu16.04_amd64.deb
# 执行上一句,若提示没有按照libmysqlclient21,则执行apt-get install libmysqlclient21
apt-get update
apt-get install libmysqlclient-dev
apt-get install python3.6-dev
apt-get install openssl
apt-get install libssl-dev
主要的:其实可以直接装pymysql
pip3 install pymysql
10.测试启动
python manage.py runserver 0.0.0.0:80
============================================== nginx和uwsgi ================================
测试:
pip install uwsgi
uwsgi --http :8000 --wsgi-file test.py
uwsgi --chdir /home/pro_test --home /home/dj20_env/ --http :8000 --module pro_test.wsgi:application
uwsgi --chdir /www/pro_test --www /www/pro_xks_env/ --http :8000 --module pro_test.wsgi:application
配置:
apt install nginx
cd /etc/nginx
cd sites-available/
可以把sites-available和sites-enabled 中的default都删掉,软连接引用默认
在sites-available/目录下: vim pro_test.conf
内容:
# mysite_nginx.conf
upstream django {
server 127.0.0.1:8001;
}
# configuration of the server
server {
listen 8000;
server_name 47.100.206.78;
charset utf-8;
client_max_body_size 75M; # adjust to taste
location /media {
alias /home/pro_wait/media;
}
location /static {
alias /home/pro_wait/static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
//////////////////////////////////////////////////////////////////
# mysite_nginx.conf
upstream django {
server 127.0.0.1:8001;
}
# configuration of the server
server {
listen 8000;
server_name 47.100.206.78;
charset utf-8;
client_max_body_size 75M; # adjust to taste
location /media {
alias /www/pro_wait/media;
}
location /static {
alias /www/pro_wait/static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
进入项目
vim pro_test.ini
内容:
////////////////////====第一次部署=====////////////////////////////////
# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
chdir = /home/pro_wait
module = pro_wait.wsgi:application
home = /home/dj20_env
# process-related settings
master = true
# maximum number of worker processes
processes = 10
harakiri = 60
max-requests = 5000
# the socket (use the full path to be safe
socket = 127.0.0.1:8001
uid = 1000
gid = 2000
pidfile = /home/pro_wait/master.pid
daemonize = /home/pro_wait/pro_wait.log
vacuum = true
//////////////////////====第二次部署=====//////////////////////////////
# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
chdir = /www/pro_wait
module = pro_wait.wsgi:application
home = /www/pro_xks_env
# process-related settings
master = true
# maximum number of worker processes
processes = 10
harakiri = 60
max-requests = 5000
# the socket (use the full path to be safe
socket = 127.0.0.1:8001
uid = 1000
gid = 2000
pidfile = /www/pro_wait/master.pid
daemonize = /www/pro_wait/pro_wait.log
vacuum = true
先在setting.py中加入
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
收集静态文件
python manage.py collectstatic
启动django
uwsgi --ini /home/pro_wait/pro_wait.ini #通过这个ini文件启动
uwsgi --ini /www/pro_wait/pro_wait.ini #通过这个ini文件启动
查看进程
ps -aux | grep uwsgi
软连接到执行
ln -s /etc/nginx/sites-available/pro_wait.conf /etc/nginx/sites-enabled/pro_wait.conf
查看nginx状态: nginx -t
重启nginx服务: service nginx restart
nginx -s stop
uwsgi --stop master.pid
uwsgi --reload master.pid
ps -aux | grep uwsgi
pip freeze > requeirment.txt
chmod 777 media
chmod -R 777 media
nginx的启动和停止:
sudo service nginx start / stop / status / restart;
修改代码重启
killall -9 uwsgi
uwsgi --ini /www/pro_wait/pro_wait.ini
service nginx restart
.
.

浙公网安备 33010602011771号