#Ubuntu Server Setup
Things to do:
[ ] Update Available Package Lists:
`# sudo apt-get update`
Upgrade installed packages:
`# sudo apt-get upgrade`
Other Tasks:
`# sudo apt-get autoremove`
Discover Packages: [https://packages.ubuntu.com][https://packages.ubuntu.com]
Add user to system:
`sudo adduser `
##Give sudo access to a user:
[Link to reference](https://phpraxis.wordpress.com/2016/09/27/enable-sudo-without-password-in-ubuntudebian/)
/etc/sudoers.d contains a file for each account allowed. You will create a file
in the folder /etc/sudoers.d, named the same as your new user.
Example, user named `joe`
```
# sudo -i
# adduser joe
# cd /etc/sudoers.d
# touch joe
# vi joe
```
Add the following to this file `joe`
`joe ALL=(ALL) NOPASSWD:ALL`
Notice that the first word is the same as the user name. Login as this new user, then
execute `sudo -i`. You should not see the password prompt.
# SSH Keypairs
On any system:
Generate key pairs
`# ssh-keygen`
Save to file, which will create a private and public key, key pair. For example if you save the pair to a file such as ~/.ssh/linuxclass
On the remote system. Login as the non-admin user such as
Install public key
```
# cd ~
# mkdir .ssh
# touch .ssh/authorized_keys
# vi .ssh/authorized_keys
```
paste the linuxclass.pub into the authorized_keys as one line, then save the file.
```
# chmod 700 .ssh
# chmod 644 .ssh/authorized_keys
```
On local system:
`# ssh -p 2222 @localhost -i ~/.ssh/linuxclass`
### Disable password logins:
`# sudo vi /etc/ssh/sshd_config`
Find the line similar to:
`PasswordAuthentication yes`
-- change it to --
`PasswordAuthentication no`
---
Deploy Flask app to Apache:
https://www.bogotobogo.com/python/Flask/Python_Flask_HelloWorld_App_with_Apache_WSGI_Ubuntu14.php
Edit the file:
`/etc/apache2/envvars`
Add line:
`export APP_DIR=/home/..../path2app/`
[Apache Config information: ](https://stackoverflow.com/a/49807673)
```
ServerName MY_SERVER_NAME
WSGIDaemonProcess appname threads=5 home=${APP_DIR}
WSGIScriptAlias / "${APP_DIR}your_app.wsgi"
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride None
Require all granted
WSGIProcessGroup appname
WSGIApplicationGroup %{GLOBAL}
```
-
[Ubuntu Packages](https://packages.ubuntu.com])
- [Enable sudo without passwords](https://phpraxis.wordpress.com/2016/09/27/enable-sudo-without-password-in-ubuntudebian/)