AWS EC2使用記錄

申請&安裝

因為Amazon EC2可以免費試用主機一年(限定主機容量在範圍內),下面是簡單快速申請步驟,記得容量要選30GB(免費試用最大上限)

十分鐘快速建立Amazon EC2免費主機

1.安裝python 2.7

1.1 使用apt-get的方式(建議)

sudo apt-get install python

安裝pip, virtualenv

sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv

reference: how to install pip for ubuntu

1.2 安裝source的方式(不相容於apt套件)

sudo apt-get update

http://askubuntu.com/questions/101591/how-do-i-install-the-latest-python-2-7-x-or-3-x-on-ubuntu

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz
./configure
make
sudo checkinstall

reference askubuntu

2. python virtualenv

為了將local的python project搬到EC2上,必須將project所需的套件也一起裝上去,但是當初開發的時候沒有記錄需要安裝哪些套件,所以要重新安裝套件,記錄需要的套件和版本,並且將project環境獨立出來

virtualenv可以滿足這樣的需求,virtualenv主要的功用是能將不同python project的環境獨立起來,例如A project所需的python套件跟版本與B project所需的python套件與版本可能都不同,virtualenv可以為project A跟project B分別安裝需要的套件,甚至能夠使用不同的python版本,另外透過virtualenv安裝完的套件,可以將安裝的套件與版本匯出,將來要轉移到其他機器,就能直接透過匯出了列表安裝所需的套件

reference:virtualenv environment

2.1 建立virtualenv, 並且activate

cd my-project-folder
virtualenv --no-site-packages venv
source venv/bin/activate

2.2 安裝所需套件

pip install <required-packages>

或者透過已經建立的requirements.txt安裝

pip install -r requirements.txt

安裝完可以建立requirements.txt

pip freeze > requirements.txt

3. 更改系統時區

sudo dpkg-reconfigure tzdata

4. 設定.screenrc

5. VPN (PPTP)

script

需要在AWS console > Network & Security > Security Groups加入allow tcp port 1723

設定VPN之後,可以用我的MAC連上VPN之後使用Samba,但是連線速度就是僅堪用

6. Samba

sudo apt-get install samba

sudo smbpasswd -a <user-name>

7. git server

7.1 將已存在local git repository上傳到EC2 server

建立/opt/git目錄給git server用

cd /opt
sudo mkdir git
sudo chown ubuntu:ubuntu git

將local repository匯出bare repository並且上傳到EC2 server上/opt/git下

git clone myproject myproject.git
scp -i EC2key.pem -r myproject.git ubuntu@<ec2-ip>:/opt/git/

將local repository push到remote,因為我已經有用github了,所以在local端的.ssh內有github_rsa.pub,所以先透過scp將github的public key也加到EC2 server上的authorized_keys

scp -i EC2key.pem ~/.ssh/github_rsa.pub ubuntu@<ec2-ip>:/home/ubuntu
cat github_rsa.pub >> ~/.ssh/authorized_keys

將local repository加到remote repository,因為git已經預設用github的public key了,而我們也已經將這把key放到EC2 server的autorized_key上了,所以push到EC2 server時就能認證完成

git remote add origin ssh://ubuntu@<ec2-ip>:/opt/git/myproject.git
git push origin master

linux git server

7.2 建立新repository並且上傳到EC2 server

EC2 server side, 建立bare git repository

cd /opt/git
mkdir newproject.git
cd newproject.git
git init --bare

將local project建立git repository, 並且上傳到EC2 server

cd newproject
git init
git add *
git commit
git remote add ssh://ubuntu@<ec2-ip>:/opt/git/newproject.git
git push origin master

8. Django

安裝

virtualenv --no-site-packages venv
source venv/bin/activate
pip install django

建立django project

django-admin startproject mysite
cd mysite
python manage.py migrate
python manage.py runserver

9. sendmail

sudo apt-get install sendmail
sudo sendmailconfig
sudo apt-get install mailutils

10. Gitlab

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

sudo EXTERNAL_URL="http://gitlab.easonhsu.idv.net" apt-get install gitlab-ee


reference

11. addUser

https://aws.amazon.com/tw/premiumsupport/knowledge-center/new-user-accounts-linux-instance/

sudo adduser newuser --disabled-password
sudo su - new_user
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

Create key-pair from EC2 and download private_key.pem

Execute from local machine to get public key from private key

chmod 600 private_key.pem
ssh-keygen -y -f private_key.pem > id_rsa.pub

put the content of public key(id_rsa.pub) to EC2 ~/.ssh/authorized_keys

Then you can use ssh to login via below command

ssh -i <private-key> newuser@ec2-domain

For git to use key file to login via ssh Edit ~/.ssh/config

host ec2.easonhsu.idv.tw
HostName ec2.easonhsu.idv.tw
IdentityFile ~/.ssh/id_rsa_ec2
User eason

then you can use git to clone repository from EC2 server

git clone ssh://eason@ec2.easonhsu.idv.tw:/opt/git/test.git

發佈留言