УЕБ РАЗРАБОТКА

Как да хоствате уебсайт в облака с безплатен SSL сертификат

Приятни и лесни уроци с инструкции стъпка по стъпка

Резюме:

Тази статия обхваща целия процес на хостване на уебсайт в облака с безплатен SSL сертификат. Работи за статични уебсайтове, динамични уебсайтове и уеб приложения. Той представя DigitalOcean като доставчик на облачни услуги, тъй като техните планове са специализирани за стартиращи компании: лесни за използване, достъпни и мащабируеми. Той включва Nginx като уеб сървър, защото те са известни с това, че са бързи, обработват голям трафик и захранват над 60% от 100 000 най-добри уебсайта.

Съдържание:

  1. „Купете име на домейн“
  2. Регистрирайте се за DigitalOcean
  3. „Създаване на виртуална машина“
  4. Актуализиране на сървърите на имена
  5. „Редактиране на DNS записа“
  6. „Защита на виртуалната машина“
  7. „Създаване на SSH ключ на DigitalOcean“
  8. Инсталиране на уеб сървър
  9. „Създайте акаунт в GitHub“
  10. „Създаване на GitHub SSH ключове“
  11. „Отворете директорията на уебсайта“
  12. Качване на уебсайта в GitHub
  13. Изтеглете уебсайта от GitHub
  14. Инсталиране на SSL сертификат

Приложение:

  1. Уроци: Настройка на изкуствен интелект
  2. Уроци: Курс по изкуствен интелект
  3. Уроци: хранилища за изкуствен интелект

Купете име на домейн:

Името на домейна е интернет адресът, който клиентите използват за достъп до уебсайта. Има комбинация от букви и цифри и разширение на домейн. Може да е трудно да се намери добро име на домейн с разширение на домейн .com, но все още има добри налични в популярни алтернативи като co и io.

# find a domain name on godaddy
1. open the official site
2. type the domain name into the search bar
3. press "return"
4. click "get it"
# specify additional services
1. click "add" full domain privacy & protection
2. click "looks good, keep going"
3. uncheck "start your website for free"
4. click "continue to cart"
5. select the "1 year" registration term
6. click "ready to pay"
# purchase domain name
1. create the godaddy account
2. enter the payment information
3. click "save and continue"
4. click "complete purchase"

Регистрирайте се в DigitalOcean:

DigitalOcean е доставчик на облачни услуги, който предлага различни продукти, които са специализирани за стартиращи фирми. Той осигурява три основни предимства: продуктите са лесни за използване, честотната лента струва малка част от Google Cloud, AWS и Azure и месечните планове могат да бъдат персонализирани, за да отговорят на нуждите на повечето уебсайтове.

# create digitalocean account
1. open the referral link to receive $100 credit
2. create the account
3. verify the email address
4. enter the payment information
5. click "let's make something"
6. click "explore our control panel"

Създайте виртуалната машина:

Виртуалната машина е виртуален компютър, който има процесор, памет, съхранение и мрежов интерфейс, който работи на хардуера на вашия доставчик на облачни услуги. Той съхранява уеб сървъра, който обработва трафика на уебсайта, и други файлове, свързани с уебсайта, като HTML, CSS, JavaScript и файлове с изображения.

# create virtual machine
1. click "droplets"
2. click "create droplet"
3. click "ubuntu"
4. click "18.04 (LTS) x64"
5. click "basic" 
6. click "regular intel with ssd"
7. check "ipv6"
8. click "password"
9. enter password
10. click "create droplet"

Актуализирайте сървърите на имена:

Сървърът за имена е уеб сървър, който е собственост на доставчика на облачна услуга. Той преобразува името на домейна в ip адреса на виртуалната машина, която съдържа уеб сървъра и файловете на уебсайта. Той получава и обработва тези заявки за регистратора на домейни, където е закупено името на домейна.

# access dns settings on digitalocean
1. click "networking"
2. click "domains"
3. enter domain name from godaddy
4. click "add domain"
5. scroll to "dns records"
# access dns settings on godaddy
1. open products page in a new tab
2. click purchased domain in "domains" section
3. scroll to "additional settings"
4. click "manage dns"
5. scroll to "nameservers"
6. click "change"
7. select "i'll use my own nameservers"
# set nameservers on godaddy to redirect to digitalocean
1. copy "ns1.digitalocean.com" value from digitalocean
2. paste copied value in first text field on godaddy
3. copy "ns2.digitalocean.com" value from digitalocean
4. paste copied value in second text field on godaddy
5. click "add nameserver" on godaddy
6. copy "ns3.digitalocean.com" value from digitalocean
7. paste copied value in third text field on godaddy
# save updated nameservers on godaddy
1. click "save"
2. check "yes, i consent to update nameservers"
3. click "continue"
4. enter the verification code
5. click "verify code"

Редактирайте DNS записа:

DNS записът е текстов файл, който съдържа информация за домейна. Той използва различни записи, за да предостави различна информация на сървърите на имена. Той използва запис A за съхраняване на ip адреса на виртуалната машина. Той използва CNAME записа, за да съхранява инструкции за обработка на заявките за поддомейни.

# redirect domain name to virtual machine on digitalocean
1. scroll to "create new record" section
2. click "a" tab
3. enter "@" into "enter @ or hostname" text field
4. click "select resource or enter custom ip" text field
5. select droplet
6. click "create record"
# redirect subdomain to domain name on digitalocean
1. click "cname" tab
2. enter "www" in "enter hostname" text field
3. enter "@" in "enter @ or hostname" text field
4. click "create record"

Защитете виртуалната машина:

Уеб сървърът работи на операционна система Linux, която включва root потребител, който може да променя всичко в системата по подразбиране. Това е заплаха, защото дава на нападателите половината информация, от която се нуждаят, за да разбият паролата и да поемат контрола над уеб сървъра. Тази заплаха може да бъде елиминирана чрез създаване на нов потребител и предотвратяване на достъп на root потребителя до уеб сървъра.

# write down ipv4 address from digitalocean
1. click "droplets"
2. write down the ip address of the virtual machine
# open terminal
1. press “command ⌘ + spacebar”
2. enter “terminal” into the search bar
3. press “return”
# change "placeholder" to ip address from earlier
ip_address="placeholder"
# store ip address in ssh configuration file
echo "host website\n    hostname $ip_address" > ~/.ssh/config
# connect to virtual machine
ssh root@$website
# add virtual machine to "known hosts" list
1. enter "yes" to continue
2. press "return" key
3. enter password for virtual machine
4. press "return" key
# create new user account on virtual machine
adduser user
# set up new user account
1. enter password for user account
2. press "return"
3. re-enter the password
4. press "return"
5. press "return" to enter the default value
6. enter "y" to confirm information
7. press "return"
# grant administrative permissions to new user account
usermod -aG admin user
# switch from root user account to new user account
sudo su user
# open ssh daemon configuration file
sudo vim /etc/ssh/sshd_config
# switch to insert mode
press "i"
# prevent root user from accessing web server
1. scroll down to "permitrootlogin"
2. change"yes" to "no"
3. press "esc"
4. enter ":wq"
5. press "return"
# restart ssh to implement changes
sudo service ssh restart
# create the ssh directory
sudo mkdir ~/.ssh
# exit virtual machine
exit

Създайте SSH ключа на DigitalOcean:

SSH ключът е метод за удостоверяване на двойка ключове, който установява защитена връзка между два компютъра. Той използва публичен ключ, който се съхранява на виртуалната машина, за да шифрова съобщение, изпратено до компютъра. Той използва частен ключ, който се съхранява на компютъра, за да дешифрира съобщението. Той връща дешифрираното съобщение на виртуалната машина, за да защити връзката.

# create ssh key
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_digitalocean
# create ssh key without a passphrase
1. press "return" to use no passphrase
2. press "return" to confirm
# change ip address to ip address of virtual machine
ip_address=68.205.181.28
# open ssh directory
cd ~/.ssh
# add ssh key to "authorized keys" on virtual machine
sudo cat ~/.ssh/id_rsa_digitalocean.pub | ssh user@$ip_address "cat >> ~/.ssh/authorized_keys"
# add virtual machine to "known hosts" on computer
1. enter "yes" to connect to the virtual machine
2. enter the password to the virtual machine
# create configuration file to manage ssh keys
echo "Host $ip_address\n  IdentityFile ~/.ssh/id_rsa_digitalocean" >> ~/.ssh/config
# access virtual machine
ssh root@$ip_address

Инсталирайте уеб сървъра:

Този раздел инсталира уеб сървъра на виртуалната машина. Той инсталира скриптовия език от страна на сървъра и различни разширения на езика за скриптове от страна на сървъра. Той инсталира системата за управление на релационни бази данни, уеб сървър, разпределена система за контрол на версиите и надстройва всички пакети.

# add php to package manager
sudo add-apt-repository --yes ppa:ondrej/php
 
# update source list and source list directory
sudo apt-get update
# install php to use server-side programming language
sudo apt-get install --yes php7.2
# install php extensions to extend php functionality
sudo apt-get install --yes php7.2-cli php7.2-fpm php7.2-json php7.2-common php7.2-mysql php7.2-zip php7.2-gd php7.2-mbstring php7.2-curl php7.2-xml php7.2-bcmath php7.1-mcrypt
# install mysql to manage databases
sudo apt-get install --yes mysql-server
# install nginx to handle web requests
sudo apt-get install --yes nginx
# install git to track changes to the website
sudo apt-get install --yes git
# upgrade all packages
sudo apt-get upgrade --yes

Създайте акаунт в GitHub:

GitHub е система за контрол на версиите, която проследява промените във файловете във времето. Той може да отменя промените, да отменя изтриванията и да експериментира с код, без да засяга производствения код. Може да показва всеки файл, който е променен, да сравнява различни версии на файлове и да добавя съобщения за описание на промените.

# create github account 
1. open the official site
2. click “sign up”
3. create the account
4. verify the email address
# create github repository
1. click "create repository"
2. enter "website" into "repository name" text field
3. check "private"
4. click "create repository"

Създайте SSH ключовете на GitHub:

Този раздел създава SSH ключовете, които позволяват на потребителите да се свързват с акаунта си в GitHub от командния ред. Той съхранява публични ключове в акаунта им в GitHub. Той съхранява частен ключ на техния компютър и виртуална машина. Позволява им да прехвърлят файловете си към и от акаунта си в GitHub, без да изискват своето потребителско име и личен маркер за достъп.

# open ssh directory
cd ~/.ssh
# create ssh key
ssh-keygen -t rsa -b 4096 -f $HOME/.ssh/id_rsa_github
# save file in default location without using passphrase
1. press "return" to use no passphrase
2. press "return" to confirm
# create configuration file to manage ssh keys
echo -e "Host github.com\n  IdentityFile ~/.ssh/id_rsa_github" >> ~/.ssh/config
# copy ssh key
pbcopy < ~/.ssh/id_rsa_github.pub
# add ssh key to github repository
1. open the profile settings in github
3. click "ssh and gpg keys"
4. click "new ssh key"
5. enter "computer" in the "title" text field
6. paste the ssh key into the "key" text box
7. click "add ssh key"
# authenticate ssh key with github
ssh -T [email protected]
# change ip address to ip address of virtual machine
ip_address=68.205.181.28
# access virtual machine
ssh user@$ip_address
# open ssh directory
cd ~/.ssh
# create ssh key
ssh-keygen -t rsa -b 4096 -f $HOME/.ssh/id_rsa_github
# copy ssh key to ssh subdirectory in root directory
sudo cp ~/.ssh/id_rsa_github /root/.ssh/id_rsa_github
# create configuration file to manage ssh keys
sudo echo -e "Host github.com\n  IdentityFile /root/.ssh/id_rsa_github" >> ~/.ssh/config
# move configuration file to ssh subdirectory in root directory
sudo mv ~/.ssh/config /root/.ssh/config
# set configuration file permissions to read only
sudo chmod 400 /root/.ssh/config
# set configuration file permissions to root user 
sudo chown root /root/.ssh/config
# create configuration file to manage ssh keys
sudo echo -e "Host github.com\n  IdentityFile ~/.ssh/id_rsa_github" >> ~/.ssh/config
# exit virtual machine
exit
# change ip address to ip address of virtual machine
ip_address=68.205.181.28
# copy ssh key
ssh user@ip_address "cat ~/.ssh/id_rsa_github.pub" | pbcopy
# add ssh key to github repository
1. open the profile settings in github
3. click "ssh and gpg keys"
4. click "new ssh key"
5. enter "computer" in the "title" text field
6. paste the ssh key into the "key" text box
7. click "add ssh key"
# access virtual machine
ssh user@ip_address
# authenticate ssh key with github
sudo ssh -T [email protected]
# exit virtual machine
exit

Отворете директорията на уебсайта:

Директорията на уебсайта е директорията, която съдържа файловете на уебсайта. Може да включва PHP, HTML, CSS, JavaScript, шрифт, изображения и видео файлове. Обикновено би било твърде скъпо да се хостват видеоклипове на сървъра поради високата цена на честотната лента, но DigitalOcean предлага евтина честотна лента, което го прави достъпен. Този раздел е предназначен за всеки, който все още няма уебсайт.

# open desktop directory
cd $HOME/desktop
# create website directory
mkdir website
# open website directory
cd website
# download index.php file
wget -O $HOME/desktop/website/index.php https://gist.github.com/david-littlefield/480618b8f1365d8a85478236db77b368/raw
# download style.css file
wget -O $HOME/desktop/website/style.css https://gist.githubusercontent.com/david-littlefield/e93f1e1a5d029d9f77c683be2be53574/raw

Качете уебсайта в GitHub:

Работният поток на Git е процесът, който записва промените в уебсайта в хранилището. Той следва модела за редактиране, етап и ангажиране. Първо редактирайте файловете. Второ, етап на файловете, които ще бъдат запазени. Трето, ангажирайте промените в историята на проекта. Последно изпратете направените промени в хранилището.

# create git repository
git init
# replace "username" with your github username
git remote add origin https://github.com/username/website.git
# select main branch
git branch -M main
# add all files in website directory to commit
git add .
# add message to commit
git commit -m "first commit"
# save files from commit into github repository 
git push -u origin main

Изтеглете уебсайта от GitHub:

Директорията html е местоположението по подразбиране на уеб сървъра в Ubuntu. Това ще бъде мястото, където файловете на уебсайта се съхраняват на виртуалната машина. Той представлява текущата версия на уебсайта, която е в производство, която клиентите ще видят, когато посетят уебсайта, използвайки името на домейна.

# change ip address to ip address of virtual machine
ip_address=68.205.181.28
# access virtual machine
ssh user@$ip_address
# open www directory
cd /var/www
# remove existing html directory
sudo rm -rf html
# replace "username" with github username
sudo git clone https://github.com/username/website.git html
# grant permissions to html directory
sudo chmod -R 755 /var/www/html
# download latest changes from your github account
sudo git pull origin main
# restart nginx web server for changes to take effect
sudo systemctl restart nginx

Инсталирайте SSL сертификата:

SSL е протокол за сигурност, който защитава данните от кражба, промяна или фалшифициране на уебсайта. Той използва двойки ключове за установяване на криптирани връзки между уеб браузъра и уеб сървъра. Той използва публичен ключ, който се изпраща на уеб браузъра, за да шифрова съобщение, което се изпраща на уеб сървъра. Той дешифрира съобщението с помощта на частния ключ, който се съхранява на уеб сървъра. Той връща съобщението на уеб браузъра, за да защити връзката.

# change "domain.com" to your domain name
domain_name="domain.com"
# add certbot to package manager
sudo add-apt-repository ppa:certbot/certbot
# install certbot to create ssl certificate
sudo apt-get install --yes certbot python-certbot-nginx
# create the ssl certificate
sudo certbot certonly --nginx -d $domain_name -d www.$domain_name
# install ssl certificate
1. enter the contact email for the website
2. press "return"
3. enter "a" to agree to the terms of service
4. press "return"
5. enter "n" to decline receiving marketing emails
6. press "return"
7. enter "2" to redirect http traffic to https
8. press "return"
# activate super user
su
# change "domain.com" to your domain name
domain_name="domain.com"
# create the nginx configuration file
sudo echo -e "server {\n   server_name    $domain_name;\n    return    301 https://www.$domain_name\$request_uri;\n}\n\nserver {\n    listen 443 default_server;\n    listen [::]:443 default_server;\n\n    ssl on;\n    ssl_certificate /etc/letsencrypt/live/$domain_name/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/$domain_name/privkey.pem;\n\n    root /var/www/html;\n\n    index.php index.html index.htm index 404.php;\n\n    server_name $domain_name www.$domain_name;\n\n    location / {\n        try_files \$uri \$uri/ /index.php\$is_args\$args;\n    }\n\n    location ~ \.php\$ {\n        include snippets/fastcgi-php.conf;\n        fastcgi_pass unix:/run/php/php7.2-fpm.sock;\n    }\n}\n" > /etc/nginx/sites-available/default
# deactivate super user
exit
# restart nginx
sudo systemctl restart nginx
# exit virtual machine
exit

„И накрая, не забравяйте да се абонирате и да задържите бутона за пляскане, за да получавате редовни актуализации и да помагате.“

Приложение:

Този блог съществува, за да предостави цялостни решения, да отговори на вашите въпроси и да ускори напредъка ви, свързан с изкуствения интелект. Има всичко, от което се нуждаете, за да настроите компютъра си и да завършите първата половина на курса fastai. Той ще ви изложи на най-съвременните хранилища в подполетата на изкуствения интелект. Той също така ще покрие втората половина на фаст курса.

Уроци: Настройка на изкуствен интелект

Този раздел предоставя всичко, което е необходимо за настройка на вашия компютър.

# linux
01. install and manage multiple python versions
02. install the nvidia cuda driver, toolkit, cudnn, and tensorrt
03. install the jupyter notebook server
04. install virtual environments in jupyter notebook
05. install the python environment for ai and machine learning
06. install the fastai course requirements
# wsl 2
01. install windows subsystem for linux 2
02. install and manage multiple python versions
03. install the nvidia cuda driver, toolkit, cudnn, and tensorrt 
04. install the jupyter notebook home and public server
05. install virtual environments in jupyter notebook
06. install the python environment for ai and machine learning
07. install ubuntu desktop with a graphical user interface
08. install the fastai course requirements
# windows 10
01. install and manage multiple python versions
02. install the nvidia cuda driver, toolkit, cudnn, and tensorrt
03. install the jupyter notebook home and public server
04. install virtual environments in jupyter notebook
05. install the programming environment for ai and machine learning
# mac
01. install and manage multiple python versions
02. install the jupyter notebook server
03. install virtual environments in jupyter notebook
04. install the python environment for ai and machine learning
05. install the fastai course requirements

Уроци: Курс по изкуствен интелект

Този раздел съдържа отговори на въпросника в края на всеки урок.

# fastai course
01. chapter 1: your deep learning journey q&a
02. chapter 2: from model to production q&a
03. chapter 3: data ethics q&a
04. chapter 4: under the hood: training a digit classifier q&a
05. chapter 5: image classification q&a
06. chapter 6: other computer vision problems q&a
07. chapter 7: training a state-of-the-art model q&a
08. chapter 8: collaborative filtering deep dive q&a

Уроци: хранилища за изкуствен интелект

Този раздел съдържа най-съвременни хранилища в различните подполета.

# repositories related to audio
01. raise audio quality using nu-wave
02. change voices using maskcyclegan-vc
03. clone voices using real-time-voice-cloning toolbox
# repositories related to images
01. achieve 90% accuracy using facedetection-dsfd

Уроци: Внедряване на изкуствен интелект

Този раздел обхваща всичко, което е необходимо за внедряване на AI на вашия уебсайт.

01. How to Host a Website in the Cloud
02. How to Add a Database to a Website
03. How to Improve Website Performance