Install LEMP on vps of Linode ,Vultr or Couldcone.

在Linode , Vultr , Cloudcone 的 VPS上安裝 LEMP的方法,我是以實際安裝CentOS 7.5 Server – 64 Bit (Latest Kernel + BBR)所做的紀錄 ,
本篇皆需要在root帳號下操作,安裝完成後請務必adduser使用sudo來管理系統會比較安全。
使用 putty 登入vps給的 ip後
用hostnamectl 指令查詢一下主機相關資訊:
指令: hostnamectl

Static hostname: yourhostname
Icon name: computer-vm
Chassis: vm
Machine ID: f0aa2369d99d4150a1b73b773fbcca5c
Boot ID: feb82ec1485945abb571b71608b10434
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 4.19.8-1.el7.elrepo.x86_64
Architecture: x86-64

看看時區是否正確
指令: date
若不是你現在的時間就要設定好,之後看 log 設定 crontab 時才會正確
設定台灣 CST 時區的指令
指令: timedatectl set-timezone Asia/Taipei

先升級 yum , 之後我們將用 yum 來安裝所有的套件
基本套件安裝
yum -y update or yum -y upgrade
安裝 nano 編輯器
yum -y install nano
安裝net-tools (ifconfig,netstat,traceroute)
yum -y install net-tools
yum -y install traceroute

安裝常用工具
yum -y install wget
yum -y install lynx

安裝Epel擴充資源庫(Extra Packages for Enterprise Linux)
yum -y install epel-release
yum -y install yum-utils

安裝LEMP(在Linux上安裝Enginx,Mariadb,Php)
1.) nginx:
yum -y install nginx
systemctl enable nginx
systemctl start nginx

2.) mariadb
yum -y install mariadb-server
systemctl enable mariadb
systemctl start mariadb

接著馬上更改 mariadb的密碼
mysql
USE mysql;
UPDATE user SET Password=password(‘your-new-password’) WHERE User=’root’
;
或是執行 mysql_secure_installation 也可以。詳細的設定在/etc/my.conf中。

3.) PHP-fpm
yum -y install centos-release-scl
yum -y install rh-php72 rh-php72-php-fpm rh-php72-php-mysqlnd
設定檔/etc/opt/rh/rh-php72/php-fpm.d/www.conf

user = nginx
group = nginx
systemctl start rh-php72-php-fpm
systemctl enable rh-php72-php-fpm

這時 nginx 與 php-fpm 各自跑各自的,還需要回去設定nginx
設定 nano /etc/nginx/nginx.conf
在 server 的 {} 中加入
server {
….
….
….
index index.php index.html index.htm;
location ~ .php$ {
try_files $uri =404;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


}

設定好之後,重新啟動 PHP-FPM 與 Nginx 服務
systemctl restart rh-php72-php-fpm
systemctl restart nginx

nano /usr/share/nginx/html/info.php
<?php phpinfo(); ?>


打開chrome or firefox 開啟 http://your-vps-ip/info.php
若看到伺服器相關資訊就表示成功了

設定name-virtualserver
指令 mkdir /etc/nginx/virtualserver
nano /etc/nginx/nginx.conf
在nginx.conf中加入
include /etc/nginx/virtualserver/.conf
在目錄 /etc/nginx/virtualserver 中
新增 your.domain.name.com.conf (例如: abc.com.conf)

指令 nano abc.com.conf
server {
server_name www.yourname.tw yourname.tw;
root /home/user/sites/site1;
index index.php index.html index.htm;
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.php?$args;
}

}
若你要安裝 wordpress , 請注意 nginx.conf 中這幾個要mark掉
這部分花了我不少時間…. 🙁

#rewrite_log on;
#tcp_nopush on;
#tcp_nodelay on;

安裝ftpd
yum -y install pure-ftpd
systemctl enable pure-ftpd
systemctl start pure-ftpd

snowvps vps

snowvps主機商是我首次kvm使用的主機商,因第一次使用,價格與穩定就是最重要的條件,之前都是使用OpenVZ的vps,但大多數主機商都超賣連線速度與I/O都慘不忍賭,但xen的vps又偏貴,kvm的價格與效能在中間,所以我選擇了kvm vps. (更新: 2019/12/09 宣告倒閉!!!!!)





下列是價格(定價),但我訂購的是優惠價, $1.66 美金(月繳)
1 vCPU – KVM SSD
1024MB RAM
15GB SSD
2TB Bandwidth
1 IPv4 Address
Full Root Access
SolusVM Control Panel
$25.00 USD 年繳


2 vCPU – KVM SSD
2048MB RAM
30GB SSD
2TB Bandwidth
1 IPv4 Address
Full Root Access
SolusVM Control Panel
Starting from
$5.99 USD 月繳

效能部分:
———————————————————————-
CPU model : QEMU Virtual CPU version (cpu64-rhel6)
Number of cores : 1
CPU frequency : 2499.998 MHz
Total size of Disk : 14.0 GB (2.3 GB Used)
Total amount of Mem : 991 MB (215 MB Used)
Total amount of Swap : 1023 MB (0 MB Used)
System uptime : 1 days, 17 hour 29 min
Load average : 0.19, 0.28, 0.31
OS : CentOS 7.7.1908
Arch : x86_64 (64 Bit)
Kernel : 3.10.0-1062.4.3.el7.x86_64
——————————————————————-
I/O speed(1st run) : 70.6 MB/s
I/O speed(2nd run) : 60.4 MB/s
I/O speed(3rd run) : 57.7 MB/s
Average I/O speed : 62.9 MB/s
——————————————————————-
Node Name IPv4 address Download Speed
CacheFly 205.234.175.175 10.7MB/s
Linode, Tokyo2, JP 139.162.65.37 6.67MB/s
Linode, Singapore, SG 139.162.23.4 5.31MB/s
Linode, London, UK 176.58.107.39 6.97MB/s
Linode, Frankfurt, DE 139.162.130.8 7.72MB/s
Linode, Fremont, CA 50.116.14.9 11.0MB/s
Softlayer, Dallas, TX 173.192.68.18 21.4MB/s
Softlayer, Seattle, WA 67.228.112.250 13.8MB/s
Softlayer, Frankfurt, DE 159.122.69.4 5.56MB/s
Softlayer, Singapore, SG 119.81.28.170 5.04MB/s
Softlayer, HongKong, CN 119.81.130.170 5.56MB/s

速度還可以,但 I/O 不是很優,與 超賣很多的 OpenVZ 的 vps 好多了。

cloudcone vps – add swap

這幾天是美國的黑色星期五,各主機商推出了不少優惠
我也買了一個來試試,cloudcone.com,這兩天試下來相當不錯
看來可以將架設在家中的Server移到這裡了!!!

規格如下
(KVM) SSD VPS
1 vCPU Core
1 GB RAM
20 GB RAID-10 SSD
Free Daily Backups
1 x IPv4 & 3 x IPv6
3 TB Bandwidth
Free AnyCast DNS
“FREE Automated Backups Enabled”
定價 $3.71/MO(美金) 特價 $2.00/MO (billed $0.00269/HR)
換算成台幣,每個月約62元 , 一整年也只要 7百多元,超划算的!!!

而且 , 我測試了一下,真的還不錯!\


CPU model : QEMU Virtual CPU version 2.5+
Number of cores : 1
CPU frequency : 2599.998 MHz
Total size of Disk : 20.0 GB (3.2 GB Used)
Total amount of Mem : 979 MB (139 MB Used)
Total amount of Swap : 1023 MB (0 MB Used)
System uptime : 0 days, 8 hour 27 min
Load average : 0.00, 0.02, 0.04
OS : CentOS 7.6.1810
Arch : x86_64 (64 Bit)

Kernel : 4.19.8-1.el7.elrepo.x86_64

I/O speed(1st run) : 451 MB/s
I/O speed(2nd run) : 720 MB/s
I/O speed(3rd run) : 793 MB/s
Average I/O speed : 654.7 MB/s

Node Name IPv4 address Download Speed
CacheFly 205.234.175.175 58.0MB/s
Linode, Tokyo2, JP 139.162.65.37 7.90MB/s
Linode, Singapore, SG 139.162.23.4 5.27MB/s
Linode, London, UK 176.58.107.39 5.98MB/s
Linode, Frankfurt, DE 139.162.130.8 5.81MB/s
Linode, Fremont, CA 50.116.14.9 55.7MB/s
Softlayer, Dallas, TX 173.192.68.18 35.6MB/s
Softlayer, Seattle, WA 67.228.112.250 38.8MB/s
Softlayer, Frankfurt, DE 159.122.69.4 7.56MB/s
Softlayer, Singapore, SG 119.81.28.170 3.58MB/s
Softlayer, HongKong, CN 119.81.130.170 9.50MB/s


進入到這篇文章的主題啦!
就是,cloudcone他給的vps沒設定 swap ,因我買的vps的ram只有1G,一定要有swap才行! 接下來就是設定swap的方法啦! 以下的指令要以root 或sudo來執行!

先檢查看swap是否開啟
swapon –show

如果都沒任何反應就是沒swap啦! 接下來我們就來開啟它!
fallocate -l 1G /swapfile (開1G是因為我的vps記憶體是1G)
或者是
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

用編輯器打開 /etc/fstab,我習慣用nano,當然你愛用vi,vim也可以
nano /etc/fstab
加上這行
/swapfile swap swap defaults 0 0

再看一次
swapon –show
# free -h
total used free shared buff/cache available
Mem: 979M 138M 535M 55M 305M 633M
Swap: 1.0G 0B 1.0G
成功了!!!!


python then crontab it

crontab 是 Linux 內建的機制,根據設置時間參數來執行例行性的工作排程。

前五項參數 + 執行的command
依序是分鐘(0-59), 小時(0-23), 日期(1-31), 月份(1-12), 星期(0-6), 指令
參數為0-590-231-311-120-6執行的command

參數意義

【*】:星號,代表任何時刻都接受的意思
【,】:逗號,代表分隔時段。例如:30 8,15 * * * ,代表早上 8 點半和下午3點半執行
【-】:減號,代表一段時間範圍。例如:0 9-12 * * * command,代表從 9 點到 12 點的每個整點執行
【/n】:斜線,n 代表數字,表示每個 n 單位間隔。例如:* */1 * * * ,代表每隔 1小時執行一次 command。

crontab 操作

crontab 是會根據不同的使用者去判定可以操作的範圍。

$ crontab -l: 列出該使用者擁有的 crontab 指令
$ crontab -e: 編輯該使用者的 crontab 指令
$ crontab -r: 將使用者的 crontab 全部清除!

編輯完存檔離開([ESC][:][wq])

範例參考

$* */1 * * * /home/xxx/python/fetchA.py & /home/xxx/python/fetchB.py

舉例: fetchA.py fetchB.py是兩隻爬蟲程式,crontab 每一個小時會自動執行

Install python and Jupyter notebook

在 windows 安裝 python and notebook
其實,在Linux , MacOS , BSD 上也是相同的方法,整個安裝與設定應該可以在半小時內完成。OK! Let’s go!

1.首先 google miniconda , 我建議安裝 miniconda , 而不要裝 anaconda 原因是 anaconda 會把全部的 package(套件) 或 module(模組) 全部都裝起來,建議只裝 miniconda , 執行時若需要 python 會告訴缺少的模組或套件,到時候你再去安裝就好,因為這樣你就會很清楚這些套件彼此的依存關係。

通常google出現的第一個應該就是了,接下來就看你的作業系統是哪種,下載最新的python吧!接下來的說明我們會以windows為例,一步一步地布建,直到裝好 jupyter notebook。

2.裝好後,執行Anaconda Prompt (這是一個指令化的介面,不必太擔心,一步一步來即可),輸入 conda create -n env1 (製造一個乾淨的python環境,這很重要,要甚麼再裝甚麼,不然python會太肥,當然你也可以取別的名字,而不是env1)

3.輸入 conda activate env1,如此就進入了。接著我們介紹一些 conda 指令,conda list : 表列這個python環境安裝了那些套件,conda info :說明這個python環境的相關資料,

active environment : env1
active env location : C:\Users\USER\.conda\envs\env1
shell level : 2
user config file : C:\Users\USER\.condarc
conda version : 4.7.12
conda-build version : not installed
virtual packages : __cuda=10.0
base environment : C:\ProgramData\Miniconda3
… (略)

4.在這環境內安裝 conda (conda install conda), 升級conda (conda update conda)。這時你可以 試試 conda list 看看安裝了哪些基本套件。

5.安裝 jupyter notebook ,當然是 conda install jupyter,你的 windows [開始 工作列]上就會出現,Jupyter Notebook的快捷連結了。

6.開啟 jupyter notebook,以後我們課程所有的環境都在這裡了,我們先嘗試安裝 numpy 和 pandas這兩大套件,先開啟New, notebook Python3,在 In[]: 後面輸入 conda install numpy 按 ctrl-Enter 執行,可能會花一點時間請稍微等一下,python的執行效率不是很好。會了之後用同樣方法再安裝pandas套件。

7.安裝 tensorflow 2.0 ,指令 pip install tensorflow(如果你有GPU安裝tensorflow-gpu即可),不用conda install tensorflow 的原因是 anaconda 尚未將 tensorflow 收入,若是用conda安裝,會裝到1.x版本的tensorflow,如果你有gpu(nvidia),接著裝 cuda 驅動程式(可搜尋 nvidia cuda), cuda toolkit (可搜尋 nvidia cuda toolkit 10,建議裝10.0版的,記得要加進path中),與 cudnn (conda install cudnn,這裡要注意與tensorflow-gpu的版本必須相容,不然會出現錯誤) 。

Install server on LXC-ProxmoxVE

在 proxmox VE 安裝一個虛擬機(以centOS為例) update:2019/10/17

  1. 先升級 yum , 之後我們將用 yum 來安裝所有的套件
    yum -y update
  2. 安裝 nano 編輯器
    yum -y install nano
  3. 安裝net-tools (ifconfig,netstat,traceroute)
    yum -y install net-tools
    yum -y install traceroute
  4. 如果是在proxmos ve 內要裝pppoe, /etc/pve/lxc 內的 *.conf 加入 (還有 lxc 必須設定為 privileged)
    lxc.cgroup.devices.allow: c 108:0 rwm
    lxc.mount.entry = /dev/ppp dev/ppp none bind,optional,create=file
  5. 安裝 rp-pppoe (如果要架設server,建議安裝這個透過這個取得真實ip)
    yum -y install rp-pppoe
    pppoe-setup 設定
    adsl-start
  6. 安裝lamp
    yum -y install httpd mod_ssl openssl mariadb-server
    yum -y install epel-release
    yum -y install yum-utils
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    yum-config-manager –enable remi-php73
    yum install -y php php-mysqlnd php-pdo php-xml php-pear php-devel php-mbstring re2c gcc-c++ gcc
    systemctl enable httpd
    systemctl start httpd
    systemctl enable mariadb
    systemctl start mariadb
  7. 接著馬上更改 mariadb的密碼
    mysql
    USE mysql;
    UPDATE user SET Password=password(‘your-new-password’) WHERE User=’root’;
  8. 安裝ssh sshd
    yum -y install openssh openssh-server
    systemctl start sshd
    systemctl enable sshd
  9. 安裝常用工具 wget lynx
    yum -y install wget
    yum -y install lynx
  10. 安裝ftpd
    yum -y install pure-ftpd
    systemctl enable pure-ftpd
    systemctl start pure-ftpd