linux學習-DAY2-經典互聯網架構

1、Linux軟件包安裝

1.安裝程序的方式

  • 軟件包管理器:如RPM。
  • 軟件包管理器的前端工具:如YUM。
  • 源碼包應用。
  • 通用二進制格式:直接解壓壓縮文件,就可使用。但必定要注意安裝平臺。

2.RPM

RPM早期被稱爲RedHat Package Manager,但因爲目前RPM很是流行,且已經成爲Linux工業標準。因此RPM如今又被稱爲RPM is Package Manager。html

RPM管理支持事務機制。加強了程序安裝卸載的管理。前端

RPM的功能:打包、安裝、查詢、升級、卸載、校驗、數據庫管理。python

可是RPM沒法解決軟件包的依賴關係。由於Linux中的程序大可能是小程序,而程序與程序之間存在很是複雜的依賴關係。mysql

光盤掛載linux

# 只要掛載好光盤,安裝軟件會顯的特別方便 
# 1.把/dev/cdrom掛載到/mnt
mount /dev/cdrom /mnt

# 進入/mnt查看,你會發現有一個Packages的目錄,裏面有全部下載安裝的包
cd  /mnt
ls

使用ios

# 安裝rpm包
rpm -ivh 包名
# 更新rpm包
rpm -Uvh 包名
# 卸載rpm
rpm -e 包名

# rpm包的查詢
rpm -q 包名
# 查詢過濾
rpm -qa |grep vsf
# 查詢文件所在路徑
which vim
# 查詢某文件是由哪一個rpm包安裝生成的
rpm -qf /usr/bin/vim

3.yum

YUM是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。nginx

YUM使用Python語言寫成。YUM客戶端基於RPM包進行管理,能夠經過HTTP服務器下載、FTP服務器下載、本地軟件池的等方式得到軟件包,能夠從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係。c++

YUM在安裝RPM時,會從服務器下載相應包,且緩存在本地。redis

使用YUM進行RPM包的管理,很是簡單方便。sql

更改yum站點源

# 使用aliyun yum站點源
# BASE源:一些基本的軟件包
# 1.進入yum的源
cd /etc/yum.repos.d/

# 2.該文件夾裏有安裝系統是自動從官方下載的源,能夠不要,咱們把它挪走
mv *.repo /tmp

# 3.獲取阿里的源
wget http://mirrors.aliyun.com/repo/Centos-7.repo

# EPEL源:擴展的軟件包
yum install -y epel-release

操做

# yum安裝軟件
# -y:下載軟件後會遇到選項:是否安裝,有了-y會默認安裝
# openssl openssl-devel :這兩個必定要先安裝
yum install -y openssl openssl-devel 

# 軟件包查詢
yum list |grep vsftpd

# 軟件包組查詢
yum grouplist

# 軟件包組安裝
yum groupinstall "Development Tools"

# 卸載軟件包
yum remove

優化yum源

# 本地鏡像yum源(光盤掛載到/mnt下)
# 掛在之後,下載yum源會從本地光盤找
# 1.進入yum的源,必須把/etc/yum.repos.d/裏的.repo結尾的文件挪走,linux先看到哪一個配置,就用哪一個配置文件
cd /etc/yum.repos.d/

# 2.建立一個yum的配置文件必須是.repo結尾
vim local.repo

# 3.在編輯模式中
[local]
name=localios
baseurl=file:///mnt # 掛載到本地文件/mnt
gpgcheck=0

# 4.清空yum的緩存
yum clean all


# 局域網yum源(ftp)
# 本地鏡像yum源必須隨身攜帶關盤,比較麻煩,因此搭建局域網yum源,能夠經過局域網下載軟件
# 1.安裝ftp軟件
yum install -y vsftpd
# 2.啓動ftp服務,並設置開機自啓動
systemctl start vsftpd
systemctl enable  vsftpd

# 3.建立站點目錄,並將光盤軟件拷貝其中
# 如今就能夠經過ftp://IP地址/pub/centos7/訪問
cp -a /mnt/*  /var/ftp/pub/centos7

# 4.若是你的電腦想要經過局域網下載軟件,就須要配置repo文件
# 具體步驟和本地鏡像yum源差很少
# 惟一不一樣的是配置
[ftp]
name=centos7
baseurl=ftp://10.0.0.100/pub/centos7
gpgcheck=0

4.源碼包應用(python3.六、redis)

解壓

# .zip
unzip  xxx.zip
# .tar .tar.gz .tgz.tar.bz2 .tar.xz
tar xf  xxx.tar
# .iso 掛載
mount -o loop xxx.iso  /test
# .cpio
cpio -idcmv < xxx.cpio

安裝

# 把壓縮文件放到/opt裏
cd /opt

# mysql 源碼包
# 1
cmake
# 2.編譯
make
make install
# 或 make && make install


# python3.6源碼包安裝
# 解壓後進入文件
# 1.定製功能
./configure  
# 2.編譯
make
make install
# 或 make && make install
     
    
# redis 源碼包安裝 
# 解壓後進入文件
# 1.編譯
make

# 2.修改環境變量
vim /etc/profile

# 添加如下一行:
export PATH=/opt/redis-3.2.10/src:$PATH

# 3.生效配置
source /etc/profile

python連接redis

# 解壓後進入文件
cd redis-py-master
# 用python3運行
python3 setup.py install


# 測試
#運行python3
[root@xcq redis-py-master]# python3
>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379)
>>> r.set('name', 'oldguo')
True
>>> r.get('name')
b'oldguo'

5.二進制包(mysql5.7.20)

安裝及配置mysql

# 1.解壓及製做軟鏈接
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql

# 2.編輯環境變量
vim  /etc/profile
# 添加如下一行:
export PATH=/opt/mysql/bin:$PATH

# 3.生效配置:
source /etc/profile

# 4.卸載自帶mariadb
yum remove mariadb-libs

# 5.生成配置文件(/etc/my.cnf)
vim /etc/my.cnf
# 內容
[mysqld]
basedir=/opt/mysql
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
user=mysql
log_error=/var/log/mysql.log
log_bin=/opt/mysql/data/mysql-bin
server_id=100
[mysql]
socket=/tmp/mysql.sock


# 6.建立用戶和數據目錄,並受權
# 對mysql操做時,默認要有一個mysql用戶
useradd mysql 
mkdir  /opt/mysql/data 
chown -R mysql.mysql /opt/mysql

# 7.初始化數據
touch /var/log/mysql.log 

chown -R mysql.mysql /var/log/mysql.log

mysqld --initialize-insecure --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql

啓動mysql

# 1.進入目錄
cd /opt/mysql/support-files
# 2.執行腳本
./mysql.server start


# 爲了啓動方便,把mysql.serve,移動到/etc/init.d/mysqld
# 這樣就不用每次要進入目錄在啓動
cp mysql.server /etc/init.d/mysqld

# 之後用這條命令啓動mysql
/etc/init.d/mysqld start



# 擴展:使用systemctl 管理mysql
vim /etc/systemd/system/mysqld.service

# 配置
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

# 配置好以後,之後就用systemctl來啓動mysql
systemctl start mysqld

python3連接mysql

# 建立mysql連接用戶
[root@xcq redis-py-master]# mysql

mysql> grant all on *.* to root@'10.0.0.%' identified by '123';
Query OK, 0 rows affected, 1 warning (0.13 sec)
mysql> create database bbs charset utf8;


# python代碼測試

pip3 install pymysql

vim testmysql.py

import pymysql
db = pymysql.connect("10.0.0.100","root","123","bbs" )
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)
db.close()

python3  testmysql.py

2、經典互聯網架構項目(LNMP)

LNMP = Linux Nginx MySQL PHP

1.Nginx 安裝

# 1.新建官方Nginx yum源的repo配置文件
vim /etc/yum.repos.d/nginx.repo 

# 配置官方Nginx yum源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# 2.下載安裝
yum install nginx -y

# 3.啓動Nginx,並將Nginx加入開機自啓

systemctl start nginx
systemctl enable nginx

# 以後就能夠經過http://10.0.0.100(IP地址)訪問頁面了

2.Django安裝

# 1.安裝依賴包
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel zlib zlib-devel -y

# 2.安裝Django和uwsgi,以及一堆模塊
vim  re.txt
asn1crypto==0.24.0
beautifulsoup4==4.6.3
bs4==0.0.1
certifi==2018.4.16
cffi==1.11.5
chardet==3.0.4
Click==7.0
cryptography==2.3.1
Django==1.11.9
Flask==1.0.2
Flask-Cors==3.0.6
gevent==1.3.6
greenlet==0.4.15
idna==2.7
ItsDangerous==1.1.0
Jinja2==2.10
lxml==4.2.6
MarkupSafe==1.0
numpy==1.15.3
Pillow==5.3.0
pycparser==2.18
PyMySQL==0.9.2
pytz==2018.7
requests==2.19.1
selenium==3.141.0
six==1.11.0
urllib3==1.23
virtualenv==16.1.0
Werkzeug==0.14.1
wordcloud==1.5.0

pip3 install -i https://pypi.doubanio.com/simple/ -r re.txt

3.uwsgi安裝

# uwsgi能夠經過端口訪問Django項目了
# 1.安裝
pip3 install -i https://pypi.doubanio.com/simple/ uwsgi
    
    
# 2.測試uwsgi是否正常
# 新建test.py文件
vim test.py

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello Django"]

# 運行
# & :在後臺運行
# 咱們就能夠在瀏覽器經過10.0.0.100(IP地址):8001訪問
uwsgi --http :8001 --wsgi-file test.py &

# 3.測試django是否正常,運行:
# 新建django項目demosite
django-admin.py startproject demosite
# 進入項目demosite根目錄
cd demosite
# 運行項目demosite
python3 manage.py runserver 0.0.0.0:8002
# 在瀏覽器內輸入:http://10.0.0.100:8002,檢查django是否運行正常。

# 注:測試Django項目時,要在settings.py中配置ALLOWED_HOST=['*'],放開全部地址均可以訪問

4.nginx+uwsgi配置django空項目

# 爲何要nginx+uwsgi一塊兒來配置,由於
# 單獨只用uwsgi的話會顯示出端口號,若是加上nginx就不會顯示出端口
# 能隱藏本身的真實端口,對於用戶來講只是訪問了域名而已


# 1.配置uwsgi
# 在Django項目根目錄建立uwsgi.ini
vim /root/demosite/uwsgi.ini
# 配置uwsgi.ini
[uwsgi]
socket = 127.0.0.1:9999
master = true
workers = 2
max-requests = 1000
buffer-size = 30000
pidfile = /run/uwsgi.pid
daemonize = /var/log/uwsgi.log

# 以Django項目裏的uwsgi.ini的配置來啓動uwsgi
uwsgi --ini /root/demosite/uwsgi.ini &


# 2.配置Nginx
vim /etc/nginx/conf.d/py.conf
# 配置
server {
    # 監聽來自80端口的請求
    listen 80;
    # IP地址
    server_name 10.0.0.100;
    client_max_body_size 100M;

    location / {
        index index.html;
        include uwsgi_params;
        # 同uwsgi內容,經過這個去訪問uwsgi
        uwsgi_pass 127.0.0.1:9999;
        # Django項目demosite的wsgi
        uwsgi_param UWSGI_SCRIPT demosite.wsgi;
        # 要配置Django項目目錄
        uwsgi_param UWSGI_CHDIR /root/demosite;
    }
}

# 重啓nginx
systemctl restart nginx

# 配置好後就能夠經過http://10.0.0.100訪問Django
相關文章
相關標籤/搜索