开发环境

系统介绍

windows, macOS,linux是当今主流三大操作系统,普通用户一般是选择windows或macOS, linux主要是占据服务器领域市场。
操作系统给人的感觉是:

  • windows经济适用,档次较低;

  • macOS高端大气上档次;

  • Linux是极客专用,一个黑乎乎的窗口,各种花花绿绿的指令在闪烁,对着键盘噼里啪啦一通乱敲,就能窃取各种机密。

    在程序员群体中,操作系统有以下的鄙视链:macOS–>linux–>windows。 不过作为一个程序员,你很有必要学会linux,如果你的程序最终是跑在线上的Linux服务器上,那么你就更应该从现在开始投入linux的怀抱中,早日从windows脱坑。至于macOS,在命令行上与linux绝大部分相同,都是类unix的操作系统。简单地说,macOS是一个比windows界面更加美观,同时又兼备linux强大命令行的操作系统. 要说macOS的缺点,那就是贵…

windows与linux的设计理念有根本性的区别:

windows:用户不知道自己想要什么,也不明白自己在做什么,更不打算为自己的行为负责。

1
因为windows将所有操作都隐藏起来,只给用户提供封装好的功能,用户只能在操作系统限制的范围内操作,如果是普通用户,会觉得很windows很舒服,因为不需要思考。只需要按照指示去操作。但对于开发人员而言,这种设计理念是无法接受的,一旦要做出一些超越封装好的功能之外的事情,就会出现各种难以意料的情况,而且很多情况下,这些问题是无解的。或者只能用极其蹩脚扭曲的方式去勉强处理,然后瑟瑟发抖地期待着程序能正常运行。因为一旦程序崩溃,你也会为之崩溃。在windows下作开发,那种体验就好比在陪伴一个任性的女朋友,虽然长得清秀靓丽,但喜怒无常,她开心时,彼此相安无事,她不开心时,就直接哭闹,你问她:怎么了?她也不说原因,只是一直哭。你只能试着用各种方式去哄她开心,即使这次能哄好她,并不意味着下次同样的方法能奏效。这样的相处方式,很累。不是她不好,而是彼此不适合。即使终日相伴,却依然对其一无所知。

linux:用户知道自己想要什么,也明白自己在做什么,并且会为自己的行为负责。

1
linux将所有操作权都交给了用户,她相信用户是理性的聪明的,忠实地执行用户的指令,向用户暴露所有的细节。用户在拥有自主权的同时也拥有了破坏力,因此普通用户根本无法驾驭,可能一个指令就把操作系统弄崩溃了。对于开发者而言,linux的开放与自由给了我们无限的可能性,我们能看到程序是如何运行的,运行报错也会有友好的提示。根据报错指引往往能将问题解决。与之相处,好比与一个成熟的女性相处,历经风雨,已经不再关注浮夸的外表,而是关注内在的涵养。刚接触时,可能会觉得她高冷,慢慢地,会发现她很善解人意,心情不好时她会跟你说是什么原因造成的,彼此商量如何解决这个问题,而不是无来由地崩溃。与之相处,会感到很舒服,彼此坦诚,无需套路,你在想什么,我都知道。我在念什么,你也明白。

总结:我选择linux的原因在于自由、舒服,简言之:爽!

1.2 环境安装
  1. centos7安装python3(https://www.cnblogs.com/felixwang2/p/9934460.html)
  2. centos7安装虚拟环境(https://www.centos.bz/2018/05/centos-7-4-安装python3及虚拟环境/)
  3. centos7安装mysql (https://blog.csdn.net/WYA1993/article/details/88890883)
  4. centos7安装redis (https://www.cnblogs.com/zuidongfeng/p/8032505.html)
  5. pycharm连接云服务器(https://blog.csdn.net/lin_danny/article/details/82185023)

一、安装Python3

由于CentOS7原本就安装了Python2,而且这个Python2不能被删除,因为有很多系统命令,比如yum都要用到。所以我们要额外安装Python3,而且系统一般允许多个版本的python同时存在。

我们先来查看python安装位置,一般是位于/usr/bin/python目录下。

1
2
# which python
>> /usr/bin/python

下面介绍安装Python3的方法:

1. 安装依赖包(切记安装)

1
2
# yum -y groupinstall "Development tools"
# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2.下载Python3安装包

大家可根据自己需求下载不同版本的Python3,我下载的是Python3.6.2

1
# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

3. 新建python3存放目录

1
# mkdir /usr/local/python3

4. 安装Python3

解压压缩包,进入解压目录,指定安装目录,安装Python3。

1
2
3
4
# tar -xvJf  Python-3.6.2.tar.xz
# cd Python-3.6.2
# ./configure --prefix=/usr/local/python3
# make && make install

安装Python3时,会自动安装pip。假如没有,需要自己手动安装。

1
# yum -y install python-pip

5. 创建软链接

1
2
# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

6. 安装完成,输入python3测试

img

二、创建虚拟环境

virtualenv是一个可以在同一计算机中隔离多个python版本的工具。有时,两个不同的项目可能需要不同版本的python,如 python2.7 / python3.6 ,但是如果都装到一起,经常会导致问题。virtualenv能够用于创建独立的Python虚拟环境,多个Python相互独立,互不影响。
virtualenvwrapper这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。

下面介绍安装python虚拟环境的方法:

使用pip安装包前,先更新pip。

1
# pip3 install --upgrade pip

1. 安装virtualenv、virtualenvwrapper

1
2
# pip3 install virtualenv
# pip3 install virtualenvwrapper

2. 进入.bashrc文件中,定义virtualenvwrapper路径

使用vim编辑.bashrc文件

1
# vim ~/.bashrc

在文末填入以下代码并保存

1
2
3
export VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/Python-3.6.2/python # 指定virtualenvwrapper执行的python版本
export WORKON_HOME=/usr/local/python_workspace # 指定虚拟环境存放目录,.virtualenvs目录名可自拟
source /usr/local/bin/virtualenvwrapper.sh # virtualenvwrapper.sh所在目录

3. 运行.bashrc文件

1
# source ~/.bashrc

4. 创建虚拟环境

1
# mkvirtualenv py3-env

也可指定虚拟环境的python版本

1
# mkvirtualenv --python=/usr/bin/python3 py3-env

5. 进入虚拟环境中,然后进入到项目所在目录,安装好相应的包(如无需要,可跳过此步)

1
#  pip install -r requirements.txt

虚拟环境搭建完成!

常见的virtualenvwrapper命令

  • 创建虚拟环境
1
# mkvirtualenv my_env
  • 切换到某个虚拟环境
1
# workon my_env
  • 退出当前虚拟环境
1
# deactivate
  • 删除某个虚拟环境
1
# rmvirtualenv my_env
  • 列出所有虚拟环境
1
# lsvirtualenv
  • 进入到虚拟环境所在的目录
1
# cdvirtualenv

三、Centos7 安装和配置MySQL5.7

第一步,下载MySQL安装

1
2
3
4
[root@localhost ~]# cd /home/data/
[root@localhost data]# ls
get-docker.sh nginx-1.10.1 nginx-1.10.1.tar.gz redis-5.0.3 redis-5.0.3.tar.gz server-jre-8u131-linux-x64.tar.gz zookeeper-3.4.10.tar.gz
[root@localhost data]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

如果提示wget命令不存在,先执行

1
yum -y install wget

下载完成后

img

多了一个mysql57-xxx的文件,这个就是mysql安装源

安装mysql安装源

1
[root@localhost data]# yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

第二步,在线安装MySQL

1
[root@localhost data]# yum -y install mysql-community-server

下载的东西有点多,需要等待一会

第三步,启动MySQL服务

1
[root@localhost data]# systemctl start mysqld

第四步,设置开机启动

1
2
[root@localhost data]# systemctl enable mysqld
[root@localhost data]# systemctl daemon-reload

第五步,修改root登录密码

mysql安装完成之后,会在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。

1
[root@localhost data]# vim /var/log/mysqld.log

img

复制此密码,使用此密码登录root

1
2
3
4
5
6
7
8
9
10
11
[root@localhost data]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

修改密码, mysql5.7默认密码策略要求密码必须是大小写字母数字特殊字母的组合,至少8位

1
2
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test2016@';
Query OK, 0 rows affected (0.01 sec)

第六步,设置允许远程登录

1
2
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Test2016@' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

第七步,退出

1
2
mysql> exit
Bye

第八步,防火墙开放3306端口

1
2
3
4
5
[root@localhost data]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost data]# firewall-cmd --reload
success
[root@localhost data]#

第九步,配置mysql默认编码为utf-8

修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置

character_set_server=utf8

init_connect=’SET NAMES utf8’

img

:wq!保存退出

第十步,重启MySQL

1
[root@localhost data]# systemctl restart mysqld

第十一步,登录root用户查看编码

img

第十二步,测试远程连接

img

img