ubuntu云服务器初始化环境
- update、upgrade
apt update
apt upgrade -y
apt autoremove -y
- Install pipx
apt install -y python-is-python3
apt install -y pipx
- Add user
adduser ubuntu
- Conf sudo
chmod +w /etc/sudoers
echo 'ubuntu ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers
chmod -w /etc/sudoers
- Switch current user
su ubuntu
- Change pip mirror
cd
mkdir archives
cd archives
git clone https://github.com/waketzheng/carstino
cd carstino
python pip_conf.py --pip
- Use oh-my-zsh
sudo apt install -y zsh
./ohmyzsh
- Install uv
pipx install uv
pipx ensurepath
source ~/.zshrc
uv --version
- Set uv mirror
python ~/archives/carstino/pip_conf.py --uv
- Prepare tools
uv tool install --with pdm-plugin-i pdm
uv tool install rust-just
uv tool install ruff
uv tool install ty
uv tool install fast-dev-cli
uv tool install bumpversion2
- Set pdm mirror
pdm config check_update false
python ~/archives/carstino/pip_conf.py --pdm
- Install supervisor
sudo apt install supervisor
- Clone code
cd
mkdir coding
cd coding
git clone yyy/xxx
cd yyyy
- Create virtual environment and install deps
pdm venv create --with uv --with-pip
uv sync --all-extras --all-groups
- Deployment
mkdir deployment
echo '
PORT = 8080
bind = f"0.0.0.0:{PORT}"
workers = 2
worker_class = "uvicorn.workers.UvicornWorker"
' > deployment/gunicorn_config.py
mkdir logs
echo logs/ >> .gitignore
echo '
[program:xxx]
command=uv run --no-config --no-cache --no-sync gunicorn app.main:app -c deployment/gunicorn_config.py
directory=/home/ubuntu/coding/xxx
stdout_logfile=/home/ubuntu/coding/xxx/logs/supervisor.log
numprocs=1
autostart=true
startsecs=10
autorestart=true
startretried=3
redirect_stderr=true
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=20
' > deployment/supervisor.conf
cd /etc/supervisor/conf.d
sudo chown -R $USER:$USER ..
ln -s /home/ubuntu/coding/xxx/deployment/supervisor.conf xxx.conf
sudo supervisorctl update
sudo supervisorctl status