Amazon Web Services (AWS pour les intimes) est l’offre d’hébergement dans le Cloud probablement la plus utilisée et la moins onéreuse au monde. Les plus grands acteurs du monde comme AirBnB ou Netflix l’utilisent. Si OVH propose une offre alternative appelée RunAbove et hébergée en France, AWS marque encore un point en proposant une offre initiale 100% gratuite pendant un an, de quoi attirer startups et projets à faibles investissements. L’offre OVH peut néanmoins être intéressante dans le cas de projets internet sensibles. En effet, n’oublions pas que le Patriot Act permet au gouvernement américain de saisir l’ensemble des données hébergées par une entreprise américaine, y compris Google.
Dans mon cas, et pour l’installation de Sharetribe en mode test, j’ai évidemment couru vers AWS et son offre gratuite. Le tuto sera donc basé sur cet hébergement, mais duplicable sur tout serveur Unix (j’avais fait un premier test sur Mac OS qui a été très concluant). [Note : si une personne d’OVH lit ce blog, n’hésitez pas à me faire une offre de test de RunAbove, je serai ravi de faire un tuto :-)].
Dans cette première étape, nous allons nous intéresser uniquement à l’offre d’AWS et à son paramétrage. Un petit tour rapide sur la page GitHub de Sharetribe nous apprend que nous aurons besoin de Ruby, RubyGems, Bundler, Git, MySQL, Sphinx et ImageMagick pour démarrer l’installation de Sharetribe. Nous installerons donc également ces outils sur notre serveur d’AWS. [Note : Ruby n’étant plus disponible sur l’offre mutualisée d’OVH, c’est ce qui m’a amené à me tourner vers AWS. Il se peut que l’installation de Sharetribe fonctionne sur un serveur mutualisé 1&1 qui supporte Ruby, mais je n’étais pas sûr de la possibilité d’installer Sphinx ou ImageMagick sur un mutualisé 1&1. Si vous avez des retours sur ce point, je reste intéressé].
Création d’un compte AWS
La première étape passe par la création d’un compte chez AWS en se rendant sur la page d’AWS puis en suivant les instructions. Il sera nécessaire de se munir d’un numéro de carte bancaire (même si l’utilisation est gratuite la première année sur certains serveurs) et d’un numéro de téléphone valide. Après avoir créé son compte sur AWS, on se retrouve devant la console d’AWS qui permet de gérer l’ensemble des services d’AWS (voir image ci-dessous).
Dans l’onglet en haut à droite, il est possible de choisir la zone géographique où l’on souhaite déployer ses serveurs. Étant en France, j’ai choisi une zone géographique proche, soit l’Irlande.
Nous aurons ensuite besoin de paramétrer notre serveur (onglet EC2), notre base de stockage des données (S3), notre base de données (onglet RDS) et les accès à ces ressources via l’onglet Identity & Access Management (IAM).
Paramétrages du serveur EC2
Création d’une instance
Une instance est un serveur virtuel qui permet de faire tourner le code de votre projet. Il est paramétrable en quelques clics depuis l’onglet EC2. Nous allons donc créer une instance pour héberger Sharetribe. En cliquant sur « Launch Instance » on accède au premier niveau de choix, le système d’exploitation. AWS nous propose son propre Linux (Amazon Linux AMI), RedHat, Suse, Ubuntu ou encore Windows. J’ai opté pour ma part pour la distribution Linux d’Amazon, mais vous pouvez choisir une autre version en fonction de vos habitudes. A noter que la suite du tuto sera basée sur Linux AMI.
La deuxième étape concerne la puissance du serveur. En fonction de vos besoins et du trafic, vous pouvez choisir des serveurs plus ou moins puissants. Pour ma part, dans ce tuto j’opte pour un t2.micro qui a l’avantage d’être gratuit la première année. La suite des options concerne le stockage (capacité, type), si on souhaite avoir un serveur dédié… Je vous laisse paramétrer ces options à votre choix. Le dernier onglet « 6. Configure Security Group » est un onglet très important. Il permet de définir qui pourra accéder à votre serveur. Il faudra autoriser, en accès pour tous, les ports 3306 (pour la base de données), 3000 (pour le serveur rails) et 80 (pour le HTTP). Le port 22 (SSH) pourra être paramétré pour n’autoriser les connexions que depuis votre adresse IP afin d’éviter à n’importe qui d’accéder à votre serveur en SSH.
On peut alors lancer la création de son instance. AWS vous demandera de créer et télécharger une clé de sécurité (à stocker sur votre PC) qui vous permettra de vous identifier lors de la connexion SSH pour plus de sécurité.
Ça y est, votre instance est prête, ne reste plus qu’à la paramétrer pour accueillir Sharetribe.
Paramétrage de l’instance EC2 pour accueillir Sharetribe
Après avoir lancé son instance EC2 et s’être connecté sur celle-ci au travers de la ligne de commande suivante (à paramétrer en remplaçant /users/AWS.pem par le nom de la clé (et les répertoires adéquats) et XX.XX.XX.XX par l’adresse IP du serveur. AWS vous donne le code quasi exact en allant dans console puis EC2 puis onglet Actions/Connect) [à noter que je suis sur un PC Unix et que si vous êtes sur Windows il faudra utiliser PuTTY),
ssh -i /users/AWS.pem ec2-user@XX.XX.XX.XX
il convient de faire une mise à jour du serveur et d’installer les paquets requis pour héberger Sharetribe. La mise à jour se fait au moyen de la commande suivante :
sudo yum install
Pour les paquets, et comme on vient de le voir, le protocole d’installation de Sharetribe mentionne qu’il faut installer Ruby, RubyGems, Bundler, Git, MySQL, Sphinx et ImageMagick. Nous aurons en fait besoin d’installer un peu plus de paquets, car Sharetribe est hébergé par défaut sur Heroku et non pas sur AWS EC2. La liste est fournie ci-après :
- RVM (pour manager les versions de Ruby et pouvoir mettre par défaut la version 2.1.2 utilisée par l’équipe de Sharetribe)
- Ruby 2.1.2
- RubyGems (qui vient en général par défaut avec Ruby)
- Bundler
- Git
- MySQL et mysql-devel
- Les librairies libxml2-devel, libxslt et libxslt-devel (pour Nokogiri)
- Node.js et NPM
- Sphinx
- ImageMagick
Nous allons commencer par installer RVM (merci à Jose Davis Nidhin pour son tuto). Pour cela, les actions suivantes sont à entrer :
sudo -sgroupadd rvmgpasswd -a ec2-user rvmyum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-develcurl -L get.rvm.io | bash -s stable
sudo gpg2 –keyserver hkp://keys.gnupg.net –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
exitrvm install 2.1.2rvm use 2.1.2 –defaultruby -v
gem update –system
gem install bundler
sudo yum install git
sudo yum groupinstall -y « Web Server » « MySQL Database »sudo yum install mysql-devel
sudo yum install libxml2-devel libxslt libxslt-devel
sudo yum install nodejs npm –enablerepo=epel
sudo yum install sphinx –enablerepo=epel
sudo yum install ImageMagick
Paramétrage de AWS S3
<?xml version= »1.0″ encoding= »UTF-8″?>
<CORSConfiguration xmlns= »http://s3.amazonaws.com/doc/2006-03-01/ »>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Création de la base de données RDS
IAM policy
Cette dernière étape concerne la politique d’accès à votre espace de stockage sur S3. En effet, pour éviter que n’importe qui ou n’importe quel programme accède à votre bucket S3, nous allons créer un utilisateur unique qui aura accès uniquement à votre S3.
Pour cela, depuis la console d’AWS, rendez-vous sur « Identity and Access Management ». Créez tout d’abord une politique d’accès en cliquant sur « Policies » puis « Create Policy » et « Create Your Own Policy ». Renseignez alors la politique suivante qui donne accès à cet utilisateur uniquement à S3. À noter que vous pouvez passer cette étape car elle est probablement déjà précodée par AWS sous le nom « AmazonS3FullAccess ».
{
« Version »: « 2012-10-17 »,
« Statement »: [
{
« Effect »: « Allow »,
« Action »: « s3:* »,
« Resource »: « * »
}
]
}
Créez ensuite un utilisateur. AWS générera un « Access Key ID » et une « Secret Access Key » que vous prendrez soin de télécharger. Ce sont les login et mot de passe pour que Sharetribe accède à S3.
Créez enfin un groupe (Groups) que vous nommerez à votre convenance et sur lequel, à l’étape 2, vous attacherez la politique « AmazonS3FullAccess ». Ce groupe créé, ajoutez-y l’utilisateur que vous venez de créer.
Ça y est, vous venez d’autoriser votre utilisateur à accéder à S3 !
Laisser un commentaire