1. 程式人生 > >linux學習-DAY2-經典網際網路架構

linux學習-DAY2-經典網際網路架構

一、Linux軟體包安裝

1.安裝程式的方式

  • 軟體包管理器:如RPM。
  • 軟體包管理器的前端工具:如YUM。
  • 原始碼包應用。
  • 通用二進位制格式:直接解壓壓縮檔案,就可以使用。但一定要注意安裝平臺。

2.RPM

RPM早期被稱為RedHat Package Manager,但由於目前RPM非常流行,且已經成為Linux工業標準。所以RPM現在又被稱為RPM is Package Manager。

RPM管理支援事務機制。增強了程式安裝解除安裝的管理。

RPM的功能:打包、安裝、查詢、升級、解除安裝、校驗、資料庫管理。

但是RPM無法解決軟體包的依賴關係。因為Linux中的程式大多是小程式,而程式與程式之間存在非常複雜的依賴關係。

光碟掛載

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

# 進入/mnt檢視,你會發現有一個Packages的目錄,裡面有所有下載安裝的包
cd  /mnt
ls

使用

# 安裝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前端軟體包管理器。

YUM使用Python語言寫成。YUM客戶端基於RPM包進行管理,可以通過HTTP伺服器下載、FTP伺服器下載、本地軟體池的等方式獲得軟體包,可以從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係。

YUM在安裝RPM時,會從伺服器下載相應包,且快取在本地。

使用YUM進行RPM包的管理,非常簡單方便。

更改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.6、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
[[email protected] 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連結使用者
[[email protected] redis-py-master]# mysql

mysql> grant all on *.* to [email protected]'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 

二、經典網際網路架構專案(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