部署阿里云服务器,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



.

  

 

 

 

 

.

posted @ 2019-01-03 20:08  code练习生  阅读(891)  评论(0编辑  收藏  举报