sudo wget -P /home/ubuntu/Downloads/ https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
我们可以换清华源来提高下载速度
sudo wget -P /home/ubuntu/downloads/ https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh
此时的安装位置是可以切换的,我们记住当前的下载位置,别到时候找不到安装包了
可以验证安装包的hash值已确定其完整性,此网站可以看其正确的哈希值
sha256sum /home/ubuntu/Downloads/e/Anaconda3-2020.11-Linux-x86_64.sh
bash /home/ubuntu/downloads/Anaconda3-2020.11-Linux-x86_64.sh
在Ubuntu20环境下安装到了 ~/anaconda3
的目录下
vim ~/.condarc
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
我们发现此时conda
命令并不能使用,因为我们还需要配置环境
vim打开 ~/.bashrc
在最后面加上路径,当然如果安装到了别的位置,我们需要添加别的位置的PATH
export PATH=$PATH:~/anaconda3/bin
sudo apt-get install nginx
在ubuntu20下,Nginx的配置文件在 /etc/nginx/nginx.conf
http{
upstream django {
# 这里我们指定8000端口,这个端口外部访问不到
# server 127.0.0.1:8000
# 也可以用文件,二选一
server unix:///home/ubuntu/web/hello/hello.sock
}
server {
# 服务监听端口
listen 80;
# 域名或者公网IP
server_name http://www.baidu.com;
# 字符集
charset utf-8;
location /static {
alias /home/ubuntu/static/;
}
location / {
uwsgi_pass django;
# 导⼊uwsgi配置
include /etc/nginx/uwsgi_params;
}
}
}
每次配置完毕都需要重启一下
nginx -s reload
或者
service nginx restart
# 查看状态
service nginx status
# 启动
service nginx start
# 停止
service nginx stop
此时我们在 /home/ubuntu/static
中创建我们的静态文件,我们发现已经可以从外网访问了,要是你看不到,去释放一下自己的80端口(访问安全组,让自己的80端口是可以访问的)
我们需要在 /etc/nginx/
这个路径下创建这个文件,当然我们也可以在别的路径下,只要我们在 nginx.conf
这个文件中写好路径
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
找到nginx.conf,将第⼀⾏的代码进⾏修改
# user www-data;
user root;
# 或者将 www-data更改权限
此刻就可以访问了
Uwsgi可以将用户输入域名的行为映射到内网,域名映射-域名端口映射-域名映射到内网ip
最好先安装这个,要不装不上,很奇怪的问题
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-dev
sudo apt-get install uwsgi
还有一个安装不上的解决方案没试过,不知道可以不可以
需要注意的是pip install uwsgi 要加上–no-cache-dir,pip 可以强制下载重新编译安装的库,不然pip会直接从缓存中拿出了上次编译后的 uwsgi 文件,并没有重新编译一份。
pip uninstall uwsgi
sudo apt-get install libpcre3 libpcre3-dev
pip install uwsgi --no-cache-dir
uconfig.ini
[uwsgi]
# 项目根目录
chdir = /home/ubuntu/web/hello/
# wsgi.py的目录
module = hello.wsgi
master = true
processes = 4
# socket = 127.0.0.1:8000
socket = /home/ubuntu/web/hello/hello.sock
chmod-socket = 666
vacuum = true
daemonize = /home/ubuntu/web/hello/uwsgi.log
我们写一个test.py文件
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
然后我们测试一下
uwsgi --http :8000 --wsgi-file test.py
我们发现现在我们是可以用我们的公网ip+端口访问的,可以得到hello word
现在我们启动我们的Django项目
# 到项目根目录
cd /home/ubuntu/web/hello
# 启动UWSGI,本身并没有hello.wsgi这个文件,这样写的意思是hello项目下的wsgi.py
uwsgi --http :8000 --module hello.wsgi
此时我们打开浏览器发现,我们是可以访问我们django项目中的界面的,但是我们需要加上8000端口
我们启动我们的django在8000端口,前面我们的nginx已经代理了这个端口
uwsgi --socket :8000 --module hello.wsgi
我们现在发现我们django的主页已经可以由nginx传出了,也就是说我们可以直接通过IP访问我们的django了
此时我们也可以设置自己的sock的套接字为unix文件形式
uwsgi --socket hello.sock --module hello.wsgi --chmod 666
此处的hello.sock和我们在2.2配置的hello.sock要保持一致
uwsgi --ini uconfig.ini
得到下面的命令说明启动成功sh
[uWSGI] getting INI configuration from uconfig.ini
用 ps aux
可以查看到uwsgi
pkill -f uwsgi -9
[uwsgi]
# 虚拟环境目录加项目文件夹,django项目的根目录,同名目录的外层
chdir = /var/www/datavis/firstapp
# django项目同名目录内层自动生成的wsgi.py的路径,如果你的项目叫taobao,就填taobao.wsgi
module = firstapp.wsgi
# 指定虚拟环境,如果没有使用虚拟环境可以不用指定
home = /var/www/datavis
# 启动主进程
master = true
# 最大进程数量
processes = 4
# 停止uwsgi时自动清理
vacuum = true
# django项目运行的端口号 这个时候直接对接nginx,将网站对接到http的域名下
# socket = 127.0.0.1:8000
# socket的设置要和nginx保持一致
socket = /home/ubuntu/web/hello/hello.sock
# 给足够的权限
chmod-socket = 666
# 指定后台输出日志信息的文件,如果遇到不能正常使用,可以使用cat /var/log/uwsgi_log.log查看报错信息
daemonize = /var/log/uwsgi_log.log
# 指定运行时候的pid文件,也可以用来停止进程, uwsgi --stop /var/run/uwsgi_pid.log
pidfile = /var/run/uwsgi_pid.log
sudo apt-get update
sudo apt install mysql-server
sudo mysql_secure_installation
配置项较多,如下所示:
#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)
#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (选择N,不删除匿名用户)
#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)
#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)
#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)
systemctl status mysql.service
在Ubuntu下MySQL缺省是只允许本地访问的
#找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
#重启mysql
sudo /etc/init.d/mysql restart
登录mysql
sudo mysql -uroot -p
#切换数据库
use mysql;
#查询用户表命令:
select User,authentication_string,Host from user;
#查看状态
select host,user,plugin from user;
#允许远程访问
mysql> UPDATE user SET host = '%' WHERE user = 'root';
#刷新cache中配置 刷新权限
flush privileges;
#退出
quit;
其中root@localhost
,localhost
就是本地访问,配置成 %
就是所有主机都可连接;
settings
文件,在allow_hosts
里面加上自己的服务器的公网ip,和允许访问的域名
# 查看端口占用信息
netstat -apn #查看所有的进程
netstat -nltp #查看所有的被占用的端口的进程
kill -9 掉自己不想要的程序