文章目录
sudo
apt install sudo
root
- 进入 root:sudo su
- 更改 root 密码:passwd root
创建新用户/切换用户
- adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码
- useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本
- 这里我想创建一个有管理员权限的用户,用 adduser
- 创建新用户:
adduser xiaogeldx
- 赋予管理员权限:
- 执行 visudo 命令,该命令实际上打开的是/etc/sudoers文件
visudo
vi /etc/sudoers
- 修改该文件,在“root ALL=(ALL:ALL) ALL”这一行下面加入一行:
xiaogeldx ALL=(ALL:ALL) ALL
- 执行 visudo 命令,该命令实际上打开的是/etc/sudoers文件
- 切换用户:
su user #user 是想要切换到的用户名
ssh
sudo apt-get install openssh-client #用于远程登录
sudo apt-get install openssh-server #提供远程登陆
sudo /etc/init.d/ssh start #开启远程登陆
ps -e | grep ssh
# 如果成功,会出现如下结果
- 修改SSH配置文件以下选项
vim /etc/ssh/sshd_config
# PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
PermitRootLogin yes #允许root用户使用ssh登录
net-tools
- 用于 ifconfig
sudo apt-get install net-tools
搜狗拼音
- 先下载linux版本,选32位或64位
- 打开下载的安装包,安装
- 在ubuntu软件下载fcitx和fcitx配置
- 进入设置,区域和语言-管理已安装的语言
- 会弹出如下对话框,选安装
- 把键盘输入法系统改为fcitx,然后关闭
- 重启电脑即可
谷歌浏览器
1. 有图形用户界面
- 在https://www.google.cn/intl/zh-CN/chrome/直接下载Linux版本,安装即可
2. 没有图形用户界面
- 安装依赖
sudo apt-get install libxss1 libappindicator1 libindicator7
- 下载Chrome安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- 安装
sudo apt-get install -f
sudo dpkg -i google-chrome*.deb
- 注:如果安装时(即运行 sudo dpkg -i google-chrome*.deb)报错
Errors were encountered while processing:
google-chrome-stable
就安装 google-chrome-stable,sudo apt-get install google-chrome-stable
,如果出现 E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
(缺少依赖关系) 就运行 sudo apt --fix-broken install
vim
sudo apt install vim
pycharm
创建pycharm快捷方式
- 创建其他的快捷方式改一下也可以用,比如 navicat,亲试过
- Ubuntu的快捷方式都放在/usr/share/applications,首先在该目录下创建一个Pycharm.desktop
sudo vim Pycharm.desktop
- 输入下面代码:(Exec和Icon的路径改为自己的)
[Desktop Entry]
Type=Application
Name=Pycharm
GenericName=Pycharm3
Comment=Pycharm3:The Python IDE
Exec="/home/xiaoge/下载/pycharm-professional-2019.1.1/pycharm-2019.1.1/bin/pycharm.sh" %f
Icon=/home/xiaoge/下载/pycharm-professional-2019.1.1/pycharm-2019.1.1/bin/pycharm.png
Terminal=pycharm
Categories=Pycharm;
- 然后即可运行
- requirements.txt文件,里面记录了当前程序的所有依赖包及其精确版本号
- 小技巧:如果使用pip install安装库比较慢,可以用镜像,方法类似下面:
mkdir ~/.pip
vim ~/.pip/pip.conf
,填入下面代码:[global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com [list] format=columns
虚拟环境 virtualenv+virtualenvwrapper
什么是虚拟环境:
通过工具将系统上的Python解释器复制了一份最简版本
虚拟环境的重要性:
- 不会污染系统环境
- 不同的项目环境的隔离
安装虚拟环境
- 安装Python解释器
- 使用virtualenv
创建隔离的Python运行环境
Windows下:
1. 安装:pip install virtualenv
2. 创建独立的Python运行环境
virtualenv spider
创建新的Python环境放到当前目录下的spider目录中
3. 进入虚拟环境
env\spider\activate
Linux下:
1. 安装:pip install virtualenv
2. 创建独立的Python运行环境
virtualenv -p /usr/bin/python3.6 env #指定Python版本
virtualenv env #默认Python2.7
创建新的Python环境放到当前目录下的env目录中
3. 进入虚拟环境
cd env
source ./bin/activate
4. 退出虚拟环境:deactivate
5. 删除虚拟环境:rmvirtualenv env - 使用 virtualenv+virtualenvwrapper
#安装virtualenv这个包
sudo apt-get install virtualenv
#安装 virtualenwrapper 这个包
sudo apt-get install virtualenvwrapper
#运行下virtualenvwrapper.sh
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
#这里运行成功不会提示
#创建虚拟环境
mkvirtualenv -p /usr/bin/pythonx.x「项目名字」
#mkvirtualenv -p /usr/bin/python3.7 spider
#进入虚拟环境
workon [项目名字]
- 安装虚拟机导入Ubuntu或者用云服务器
- 退出,删除虚拟环境
- 退出虚拟环境:deactivate
- 退出虚拟环境:deactivate
安装在原开发环境中依赖的库
- 配置两台机器上相同的扩展库环境
- 第一步,在已配置好的机器上使用
pip freeze > requirements.txt
生成扩展库信息列表 - 第二步,把生成的requirements.txt文件复制到目标机器上的python安装目录中scripts子目录(没有该目录也不要紧,就放在root目录下)
- 第三步,在目标机器上执行pip install -r requirements.txt,读取文件requirements.txt中的扩展库信息并在本机进行安装
- 第一步,在已配置好的机器上使用
python3.7+up
- 安装依赖库:
sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
-
下载Python 3.7.3:
sudo mkdir -p /etc/python3.7
cd /etc/python3.7
sudo wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz -
解压下载的软件包:
sudo tar xzf Python-3.7.3.tgz -
编译Python源:
cd Python-3.7.3
sudo ./configure --enable-optimizations --prefix=/etc/python3.7
sudo make altinstall -
建立python3.7的软链
sudo ln -s /etc/python3.7/bin/python3.7 /usr/bin/python3.7
sudo ln -s /etc/python3.7/bin/pip3.7 /usr/bin/pip3.7 -
将/etc/python3.7/bin加入PATH
vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/etc/python3.7/bin
export PATH
-
使生效
source ~/.bash_profile -
如果报错-ModuleNotFoundError: No module named ‘_ctypes’
sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
sudo apt-get install libffi-dev libssl-dev libreadline-dev -y
- 将 python3.7 设为默认 python 版本
cd /usr/bin
sudo rm -rf python
sudo ln -s /usr/bin/python3.7 /usr/bin/python
注
- 如果报错
No apport report written because MaxReports is reached already Errors were encountered while processing:
cd /var/lib/dpkg
sudo mv info/ info-bak
sudo mkdir info
sudo apt-get update
sudo apt-get install -f
#就解决了问题,然后恢复info-bak
sudo mv info/* info-bak/
sudo rm -rf info
sudo mv info-bak/ info
Ubuntu+django+nginx+uwsgi
- 系统更新:
sudo apt-get update
sudo apt-get dist-upgrade
#有选1234就选1,有default或者y,n的选默认
需要安装pythonX.Y-devXY,即你的Python版本
uwsgi
-
安装uWSGI:(首先要创建虚拟环境,在虚拟环境下进行)
pip install uwsgi
-
基本无问题,进行下一步:
-
基础测试:创建一个名为test.py的文件,代码如下:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
- 运行uWSGI:
uwsgi --http :8000 --wsgi-file test.py
- http :8000
使用协议http,端口8000 - wsgi-file test.py
加载指定的文件test.py
- http :8000
- 访问本地或服务器的ip:8000(如果在本地运行就是127.0.0.1:8000,如果是服务器就用服务器的ip)
- 显示Hello World就证明成功了,uwsgi安装无异常
- 确保django程序无误后,用uwsgi运行django项目(在django项目根目录运行)
uwsgi --http :8000 --module 项目名.wsgi
module 项目名.wsgi:加载指定的wsgi模块 - 关闭uwsgi:
sudo pkill -f uwsgi -9
- 创建一个名为mysite_uwsgi.ini的文件
vim /etc/uwsgi/sites/web_prv.ini
- 填入以下内容:
[uwsgi]
chdir = /home/web_prv
module = web_prv.wsgi:application
wsgi-file = /home/web_prv/web_prv/wsgi.py
home = /home/env
master = true
processes = 1
thunder-lock =true
enable-threads =true
socket = web_prv.sock
chmod-socket = 666
vacuum = true
daemonize = /home/web_prv/logs/web_prv.log
- uwsgi配置参数
http : 协议类型和端口号
processes : 开启的进程数量
workers : 开启的进程数量,等同于processes(官网的说法是spawn the specified number ofworkers / processes)
chdir : 指定运行目录(chdir to specified directory before apps loading)
wsgi-file : 载入wsgi-file(load .wsgi file)
stats : 在指定的地址上,开启状态服务(enable the stats server on the specified address)
threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreaded mode with the specified number of threads)
master : 允许主进程存在(enable master process)
daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。(肯定要启用,要不刷屏!!)
pidfile : 指定pid文件的位置,记录主进程的pid号。 (生成pid文件,以便stop uwsgi)
vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)
nginx
- 安装nginx:
sudo apt-get install nginx
- 运行/停止/重启nginx:
sudo service nginx start/stop/restart
- 运行nginx后在浏览器输入ip显示如下表示成功(nginx配置默认端口是80,所以直接输入ip即可)
- 在/etc/nginx/sites-available/目录中创建一个后缀为 .conf 的文件,并将下面代码放入其中:
vim /etc/nginx/sites-available/web_prv.conf
- 填入内容:
# the upstream component nginx needs to connect to
upstream web_prv {
server unix:///home/web_prv/web_prv.sock; 和uwsgi的配置socket = web_prv.sock对应
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name xxx;
server_name xxxx; #确保django的settings.py文件中的ALLOWED_HOSTS有这些域名或者ip
charset utf-8;
access_log /home/web_prv/logs/access.log; #django项目根目录下创建logs文件夹,logs下创建access.log和error.log
error_log /home/web_prv/logs/error.log;
# max upload size
client_max_body_size 75M;
location /static {
alias /home/web_prv/static;# your Django project's static files - amend as required
}
location /media {
alias /home/web_prv/media;
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass web_prv;
include /etc/nginx/uwsgi_params;# the uwsgi_params file you installed
}
}
- 这个conf文件告诉nginx从文件系统提供媒体和静态文件,以及处理需要Django干预的请求。对于大型部署,让一个服务器处理静态/媒体文件,另一个处理Django应用程序被认为是一种好习惯,但是现在,这样做即可
- 保存退出,并检测错误!提示ok,那才行!
#建立软连接,关于Linux软连接,硬链接等参考此文软硬连接https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
sudo ln -s /etc/nginx/sites-available/web_prv.conf /etc/nginx/sites-enabled/
sudo service nginx configtest
有错误用sudo nginx -t
查看 - 重启服务:
service nginx restart
uwsgi /etc/uwsgi/sites/web_prv.ini -d /home/web_prv/web_prv.log
-
如果这时候你的网站已经可以正常浏览使用了,别忘记再在项目中的settings.py中关闭你的Debug:settings.py
DEBUG = False
/etc/nginx/sites-available/default default是个链接,所以如果想要自己创建个配置文件(我建的web_prv),就链接一下,链接方法:
ln -s /etc/nginx/sites-available/web_prv /etc/nginx/sites-enabled/
-
检查你的nginx错误日志(/var/log/nginx/error.log)。如果你看到类似的东西:
connect() to unix:///path/to/your/mysite/mysite.sock failed (13: Permission
denied)
那么可能你需要管理套接字上的权限,以便允许nginx使用它。
尝试:
uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666 # (very permissive) -
运行项目
uwsgi /etc/uwsgi/sites/web_prv.ini -d /home/web_prv/logs/web_prv.log
settings.py一些注意点
sys.path.insert(0, BASE_DIR)
sys.path.insert(1, os.path.join(BASE_DIR, 'apps'))
DEBUG = False
ALLOWED_HOSTS = [
'xxx',
'xxxx'
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
注
- 如果之前部署过,也就是有了 .sock 这个文件,需要将其删除后再进行
uwsgi /etc/uwsgi/sites/web_prv.ini -d /home/web_prv/logs/web_prv.log
,或者运行后发现配置错了导致部署失败,更改好配置后也要删除该文件,在运行 uwsgi
navicat
1 下载配置navicat
- 到navicat官网https://www.navicat.com.cn/products下载
- 解压下载的安装包tar -zxvf
- 查看系统支持的字符集: locale -a,我的有‘zh_CN.UTF-8’
- 进入解压的文件夹内,打开start_navicat文件,会看到 export LANG=”en_US.UTF-8” 将这行代码改为 export LANG=”zh_CN.UTF-8”
- 顺便修改数据库字符集,打开 /etc/mysql/mysql.conf.d路径下的mysqld.cnf文件,
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,
在[mysqld]段落中添加如下两行:
character-set-server=utf8
collation-server=utf8_general_ci
重启MySQL:service mysql restart
输入密码登录:mysql -uroot -p
然后查看数据库字符集设置:
mysql -u root -p
mysql> show variables like ‘character_set_%’;
查看字符集排序设置:
mysql> show variables like ‘collation_%’;
- 打开navicat
./start_navicat
- 进入后choose工具-选项,将文字都选为AR PL UKai CN
- 添加数据库链接信息
创建navicat快捷方式
- 在/usr/share/applications文件夹下创建navicat.desktop文件
[Desktop Entry]
Encoding=UTF-8
Name=Navicat
Comment=The Smarter Way to manage dadabase
Exec=/bin/sh "/home/xiaoge/下载/navicat121_premium_cs_x64/start_navicat" #改为自己的路径
Icon=/home/xiaoge/下载/navicat121_premium_cs_x64/navicat.png #改为自己的路径
Categories=Application;Database;MySQL;navicat
Version=1.0
Type=Application
vsftpd
安装vsftpd
- sudo apt-get install vsftpd
- service vsftpd restart/start/stop
创建用户
- mkdir -p /home/xiaoge
- useradd xiaoge -g ftp -d /home/xiaoge -s /sbin/nologin
- passwd xiaoge
- 可以使用“netstat -tl”命令检查FTP端口有没有已经打开,或者直接在浏览器里输入“ftp://你的服务器IP”(新安装的vsftpd默认是可以匿名不需要密码直接访问),如果能直接连接到FTP服务器,则安装vsftpd算是大功告成
- 修改vsftpd的配置文件“vi /etc/vsftpd.conf”:(添加或修改)
#禁止匿名访问 anonymous_enable=NO #接受本地用户 local_enable=YES #可以上传 write_enable=YES #启用在chroot_list_file的用户只能访问根目录 chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
- 在/etc/vsftpd.chroot_list添加受访问目录限制的用户:
echo "xiaoge" >> /etc/vsftpd.chroot_list
- 如果报错“530 Login incorrect”,在 /etc/shells 最后一行添加“/sbin/nologin”
- 如果报错500 Illegal PORT command.ftp: bind: Address already in use
ftp> quote pasv 227 Entering Passive Mode (192,168,0,112,164,248). ftp> passive Passive mode on.
ftp端口
- ftp服务有两个端口,默认情况下,一个是20端口,另一个是21端口,21端口用于连接,20端口用于数据传输
- 进行ftp文件传输,客户端首先连接到ftp服务器的21端口,进行用户的认证,认证成功后,要传输文件时,ftp服务器会开一个端口20来进行传输数据文件
- 报错 响应: 550 Failed to change directory.
解决方法:- sudo gedit /etc/vsftpd.conf
增加:local_root=/home/test
以下三句去掉#
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
保存 - sudo gedit /etc/vsftpd.chroot_list
增加ftp的用户名(一行一个ftp用户名)
保存 - sudo chmod 777 /home/ftpdir
- sudo service vsftpd restart
- sudo gedit /etc/vsftpd.conf
git和github
git安装配置
-
Linux安装
apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev apt-get install git git --version #查看版本
-
配置用户
git config --global user.name 用户名 git config --global user.email 邮箱
-
查看配置信息
git config --list
github
-
git连接github,本地git仓库和github仓库之间的传输是通过SSH加密的
-
使用以下命令生成SSH Key:
ssh-keygen -t rsa -C "邮箱" #注意有引号#邮箱是github注册的邮箱
-
一直回车就行,成功的话会在~/下生成.ssh文件夹,进去,打开 id_rsa.pub,复制里面的 key
cd ~ cd .ssh cat id_rsa.pub #复制key
-
在github上,选择Settings
-
选SSH and GPG keys,选New SSH key
-
Title随意填,Key把前面复制的key粘贴到这里
-
为了验证是否成功用如下代码
ssh -T git@github.com #成功会显示github名
-
选择下图中的New repository
-
在Repository Name中填github中的项目名,其他默认
-
创建一个和github的项目名相同的git本地仓库的文件夹,然后进入文件夹
#下面这些代码是复制图中的第二种方法的代码 echo "# hahaah" >> README.md git init git add README.md git commit -m "first commit" git remote add origin git@github.com:xiaogeldx/hahaah.git git push -u origin master
pycharm配置git和github
- File-Settings-Version Control-Git,Path to Git executable,选择git包的路径
- GitHub,登录github账号
- VCS-Checkout from Version Control,url添加github的远程仓库
- 先在命令行创建项目,然后再设置pycharm代码同步
参考文档 :https://www.jianshu.com/p/d6f9138fab7b
http://www.itdaan.com/blog/2017/07/30/ad795d3843f9776c73200dcb71ca36a1.html
https://blog.csdn.net/appleyuchi/article/details/79352170
redis
- 在 Ubuntu 系统安装 Redis 可以使用以下命令:
sudo apt-get update
sudo apt-get install redis-server
- 启动 Redis
redis-server
- 查看 redis 是否启动
redis-cli
- 以上命令将打开以下终端:
redis 127.0.0.1:6379> - 127.0.0.1 是本机 IP ,6379 是 redis 服务端口,可以输入 PING 命令
redis 127.0.0.1:6379> ping
PONG
以上说明我们已经成功安装了redis
Ubuntu下做win10启动盘
- 下载 woeusb,这款软件是我最后用的方法,最初用 grade 分区,用挂载win10.iso的方法,boot,grub引导等都不成,也用过全是命令行制作或者grade分区+dd等,包括ms-sys等方法都穿插用过,最后万念俱灰采用woeusb
- 最初选方法时查资料看大家说woeusb不靠谱,再加上个人感觉太简单,不可信,就一直没用,直到实在没新法子了才用它,悔不该,太年轻,为了做这个启动盘白白浪费三整天的时间精力,光往u盘里拷iso就不止20次,我都怕u盘让我拷烧了,没想到用woeusb一次就成功了
- 因为我的U盘早就用grade分区为fat32,所以不知道是否需要先分区,但我个人认为不需要先分区了,因为现在的woeusb带有这个功能,自己也没从头尝试,望知
- 环境:Ubuntu19,8GU盘,woeusb,win10的iso文件
安装woeusb
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install woeusb
使用woeusb
- 操作十分简单,和 Ubuntu/Linux 自带的启动盘创建器差不多,如下图
- 点 install 等一会即可,我的电脑,U盘不好,等了不到二十分钟做好了
- 重启自动进入重装系统界面(前提是 BIOS 设置为U盘的启动优先级最高)
注
- 本人用这个方法只做了 win10 的启动盘,其他的 windows 没尝试,不确定好用否
- 用这个方法之前做过引导修复,如https://jingyan.baidu.com/article/4ae03de3dbdac83eff9e6be0.html中的方法一,不知道是否有用,望知
- 如果出现“无法在驱动器0的分区1上安装windows”问题,我查看的该链接https://blog.csdn.net/AinUser/article/details/54836081,实测可行,我是将磁盘转换为 MBR,如果不行就改为 GPT,该方法实际应该是将硬盘格式化为相应类型,硬盘有存货的慎用
docker
安装 docker
- 官网地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/
- 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新apt:
sudo apt-get update
- 添加证书安装包以允许apt通过HTTPS:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
- 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加仓库。
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 安装docker ce
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 测试
sudo docker run hello-world
- 添加当前用户到 docker 用户组
sudo usermod -aG docker xiaoge
#xiaoge 为当前用户名
docker 的优化配置
- 在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
ipython
sudo apt-get install ipython3
pip install ipython
网易云音乐
修改 Ubuntu 镜像
sudo vim /etc/apt/sources.list
恢复成英文
sudo vim /etc/default/locale
#以下内容
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
#以上内容
source /etc/default/locale