1.买服务器,掏钱吧
2.连上服务器,22端口改一下,默认密码改复杂一点.其他的随意, 再adduser 一个个人账户, 没事别用root
给它加上sudo权限
usermod -a -G sudo wqk # 再确认一下 groups wqk
切换到wqk
su wqk
3.安装虚拟环境,隔离项目
可以用pip或者apt安装,这里我们选择pip
a. 查看pip版本
查看pip版本: pip -V
查看pip3版本: pip3 -V
b. 安装pip(如果存在则不需要安装)
安装pip3: apt install python3-pip
安装pip2: apt install python-pip
c. 更新pip
更新pip (如果pip版本高于9.0则不需要更新):
更新pip3: pip3 install --upgrade pip
更新pip: pip install --upgrade pip
注意: 更新后如出现以下错误(这是pip 10.0.0版本的BUG):
Traceback (most recent call last):
File “/usr/bin/pip”, line 9, in
from pip import main
解决方法:修改对应pip文件中的代码(pip和pip3类似)
例如更新pip时报错则需要修改 /usr/bin/pip 文件中的代码,
使用: sudo vim /usr/bin/pip 打开pip文件
将:
from pip import main
if __name__ == '__main__':
sys.exit(main())
改成:
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
d. pip命令
pip install xxx:安装xxx依赖包
pip list:查看所有依赖包
pip freeze:查看新安装的包
pip uninstall xxx :卸载xxx包
1.3, virtualenv和virtualenvwrapper 的安装和使用
【请使用普通用户】
a. 安装虚拟环境
sudo apt update
sudo pip3 install virtualenv virtualenvwrapper
sudo pip install virtualenv virtualenvwrapper
sudo apt install virtualenv virtualenvwrapeer
mkvirtualenv env3 -p /usr/bin/python3
安装后如果不能使用虚拟环境命令,则需要配置环境变量
1, 进入家目录: cd ~
2, 使用vim打开.bashrc, 定位到最后:shift+g,并添加以下2行代码(注意修改自己Ubuntu的用户名)
export WORKON_HOME=/home/wqk/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
3, 在家目录创建.virtualenvs目录: mkdir .virtualenvs
4, 加载修改后的设置,使之生效:source .bashrc
(如果找不到virtualenvwrapper.sh,
则将路径改成/usr/local/bin/virtualenvwrapper.sh
然后重试 )
b. 创建虚拟环境:
mkvirtualenv env
mkvirtualenv env2 -p /usr/bin/python3 (指定python路径)
c. 退出虚拟环境
deactivate
d. 进入虚拟环境:
workon 虚拟环境名称
如果workon的时候报错 你还要将virtualenvwrapper.sh文件里的which python 升级为 which python3
并且插入如下代码:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
4.虚拟环境里面安装库文件, 一般从开发环境里面pip -freeze > environment.txt直接拿出来 然后pip install -r environment.txt 进行安装
5.安装nginx,配置uwsgi,配置文件如下
nginx安装和卸载:
sudo apt-get install nginx sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。 sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; server{ listen 80 default_server; server_name localhost; location /static { alias /var/www/MZMARKET/MZMARKET/static; } location / { include /etc/nginx/uwsgi_params; uwsgi_pass 127.0.0.1:8888; } } ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; # include /etc/nginx/sites-enabled/*; } #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; # # server { # listen localhost:110; # protocol pop3; # proxy on; # } # # server { # listen localhost:143; # protocol imap; # proxy on; # } #}
uwsgi需要pip3 install进行安装
[uwsgi] # 使用nginx连接时 使用 socket=0.0.0.0:8888 # 直接作为web服务器使用 # http=0.0.0.0:8888 # 配置工程目录 chdir=/var/www/OnlinePay # 配置项目的wsgi目录。相对于工程目录 wsgi-file=OnlinePay/wsgi.py #配置进程,线程信息 processes=4 threads=10 enable-threads=True master=True pidfile=uwsgi.pid daemonize=uwsgi.log
supervisord.conf
;[include] ;files = relative/directory/*.ini [program:celery.worker] ;指定运行目录 directory=/var/www/OnlinePay ;运行目录下执行命令 command=celery -A OnlinePay worker --loglevel=info --concurrency=1
额外的apt install知识
apt-get install 一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。 sudo apt-get install -y 这里主要将的就是-y选项,添加这个选项就相当于不需要重复地确认安装 sudo apt-get install -q 即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。 sudo apt-get remove 既然有安装就会有卸载,remove指令就是卸载,值得注意的是,remove仅仅卸载软件,但是并不卸载配置文件 sudo apt-get purge 卸载指令,同时卸载相应的配置文件 sudo apt-get autoremove
这个就别用了,删除依赖库删的太多了
5. 我们装下依赖库
6.装下mysql
sudo apt install mysql-server
但是装mysql的时候经常遇到密码问题,给的默认密码也不能用,有时候root号都没有
debian9默认安装的mysql密码重置语句为:
UPDATE user SET Password = PASSWORD('12345678') WHERE user = 'root';
UPDATE user SET plugin = 'mysql_native_password' WHERE user = 'root';
+-----------+------+-------------------------------------------+-----------------------+
| host | user | password | plugin |
+-----------+------+-------------------------------------------+-----------------------+
| localhost | root | *8BBA3B98FB48ECDB1980683A0D95F3343CAA2A6B | mysql_native_password |
+-----------+------+-------------------------------------------+-----------------------+
root密码重置:https://www.cnblogs.com/Owen-ET/p/9644727.html
无root参考:
https://blog.csdn.net/qq_37369726/article/details/101944373
注意:跳过密码的设置在/etc/mysql/mysql.conf.d/mysqld.cnf里面
记得:
service mysql restart
或者:
/etc/init.d/mysqld restart
7.把项目扔进去
8. uwsgi --ini uwsgi.ini开启
--reload uwsgi.pid 重启
--stop uwsgi.pid 关闭
9. 重启 nginx -s reload
-s stop关闭
10.测试项目
11. 其他需要配置celery启动和 supervisor管理celery 单独写
12. admin 样式丢失的问题:
由于之前已建立了static目录,并保存了其他页面的依赖的静态文件,所有执行python manage.py collectstatic命令后,命令会发现static目录下已经存在了部分静态文件,因此命令行会报错。 所以,将步骤改进为: 1、在django项目中建立个temp的目录(临时目录,待会儿删除) 2、在settings里把STATIC_ROOT设置为你刚才建立的temp目录 比如:STATIC_ROOT = 'D:wampwwwdjangoprojectschatbot emp' 3、然后使用python manage.py collectstatic,这样django会自动把全部样式复制到temp目录 4、打开temp,将admin复制粘贴至原有的而项目static目录下,并删除temp文件夹,STATIC_ROOT改为原先的项目static目录
13.安全问题
修改ssh端口 修改/etc/ssh/sshd_config,在Port 22下添加你的端口 Port 22 Port YOUR_PORT 修改/etc/ssh/ssh_config,在Host *下添加你的端口 Host * Port 22 Port 你的端口 # ForwardAgent no ... 重启ssh service ssh restart 查看状态 netstat -an | grep "LISTEN "